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.

How to Diagnose a Font Problem

If a PDF looks wrong on someone else's screen or printer, font handling is the usual culprit. Work through it methodically:

  1. Confirm what's embedded. Open Document Properties → Fonts (or run pdffonts file.pdf). Anything marked “not embedded” is being substituted on other machines, which shifts spacing and line breaks.
  2. Reproduce on a clean machine. The file may look fine to you only because the font is installed locally. Test on a device without it.
  3. Re-export with embedding on. If you own the source document, re-export with “embed all fonts” (subsetting is fine and smaller).
  4. If embedding is blocked, the font's license flag forbids it — swap in a licensable equivalent such as Liberation, Noto, or Source Sans and re-export.

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.
The font's embedding-permission flag (set by its foundry license) forbids it — some commercial fonts ship as “preview & print” or “no embedding.” Your tool will silently substitute instead. The fix is to switch to a font licensed for embedding, such as the open Liberation, Noto, or Source families, and re-export.
Document Properties → Fonts, or pdffonts on the command line.