Why does this happen?

  • The fonts were never embedded. The exporter referenced them by name to keep the file small. On a machine without those fonts, the reader picks a substitute and every line length changes with it.
  • Only a subset was embedded. Most files embed just the characters used. Add text later — in a form field or an annotation — and characters outside that subset have nothing to draw with.
  • The characters are outside the font’s range. Boxes or question marks where symbols, accents or non-Latin text should be mean the font has no glyph for them.
  • The encoding table is missing or wrong. A badly produced file can embed a font without the map from glyph to character. It displays correctly but copies as gibberish.
  • A licensed font was blocked from embedding. Some commercial fonts carry flags that forbid embedding, so the exporter leaves them out.