PDF Font Embedding: Subsetting & Missing Fonts

The most common cause of "this looks different on my machine" PDFs is font substitution. The recipient doesn't have the font, the viewer guesses, and headings reflow, glyphs change, and tables explode. Proper embedding makes the document portable forever.

Embedding Modes

ModeWhat's storedFile sizeUse case
None (referenced)Font name onlySmallestNever — guaranteed substitution
Subset embeddingOnly used glyphsSmallDefault for most workflows
Full embeddingEntire font fileLargerWhen document will be edited later
Standard 14 (legacy)Implied — Helvetica, Times, Courier, etc.NoneAvoid in PDF/A and modern workflows

Subsetting in Detail

A subset contains exactly the glyphs the document references plus a few required ones (notdef, space). The font is renamed with a six-letter prefix (e.g., MJVKLB+ArialMT) so it can't be confused with the system font of the same name. Viewers must use the embedded subset directly — they won't fall back to a system Arial because the names differ.

Subsetting is the right default. Full embedding wastes space (a Chinese font is 20+ MB) and rarely helps. The exception is editable PDFs where reviewers will add text — without full embedding, new typed glyphs won't render correctly.

The "Standard 14" Trap

PDF 1.x defined 14 base fonts (Helvetica, Times, Courier, Symbol, ZapfDingbats and variants) that viewers were expected to provide. Many older tools still rely on these. The problem: modern viewers don't ship Helvetica — they substitute Arial, which has slightly different metrics, causing line break shifts. PDF/A bans the Standard 14 shortcut entirely. Embed everything, every time.

Fixing Font Issues

  1. Inspect with pdffonts file.pdf or Document Properties → Fonts. Check the "emb" column.
  2. If a font isn't embedded and you own the source, re-export with "embed all fonts" enabled.
  3. If embedding fails due to licensing, switch to a licensable equivalent (Liberation, Noto, Source Sans).
  4. For PDF/A targets, run veraPDF or another validator — it reports every font issue.
  5. For long-archive needs, prefer subset embedding + PDF/A-2b. Full embedding adds little reliability.

Shrink PDFs Without Breaking Fonts

Compress files in-browser while keeping subsets intact and text searchable.

Compress PDF →

Frequently Asked Questions

So the PDF renders identically everywhere — no font substitution shifts.
Embedding only the glyphs the document uses, with a renamed subset.
Six-letter subset tag PDF requires on subsetted font names.
License flag forbids embedding. Switch to a licensable alternative.
Document Properties → Fonts, or pdffonts on the command line.