Fonts are the most frequent source of PDF problems. A PDF that looks perfect on the machine that created it can display scrambled text, missing glyphs, or entirely wrong typefaces on another machine — all because of how fonts are (or aren't) embedded. Understanding PDF font handling is essential for anyone producing PDFs that must render reliably across different viewers and operating systems. PDF supports four font technologies: Type 1 (PostScript-era outline fonts), Type 3 (custom glyph-drawing programs — rare), TrueType (the dominant desktop font format since the 1990s), and CFF/OpenType (compact font format, now the standard for professional typography). Each is stored differently in the PDF file but serves the same purpose: providing glyph outlines and metrics so the viewer can render text.

Embedded vs non-embedded fonts

When a font is embedded in a PDF, the font program — the mathematical outlines that define each glyph's shape — is stored inside the PDF file itself. The viewer uses those stored outlines to render the text, regardless of whether the font is installed on the viewing machine. When a font is not embedded, the PDF file contains only the font name and metrics. The viewer must find a matching font on the viewing machine. What actually happens when the font is missing varies by viewer: - Adobe Reader / Acrobat: substitutes with a Multiple Master font (AdobeSansMM or AdobeSerifMM) that approximates the original metrics. Text stays in the same positions but looks different. - Chrome / Firefox (PDF.js): uses the viewer's built-in font fallback. Modern versions handle common fonts well; obscure fonts may display incorrectly. - Preview (macOS): uses system fonts. The result may differ significantly from the original. Non-embedded fonts are a reliability problem for anything that matters: printed documents, legal submissions, forms, archiving. PDF/A requires all fonts to be fully embedded — it is one of the format's most fundamental requirements. When non-embedding is intentional — Some workflows deliberately avoid embedding to reduce file size, relying on the fact that the target viewers all have the font installed (e.g., using only the 14 standard PDF fonts: Times, Helvetica, Courier, Symbol, ZapfDingbats and their variants). These fonts were guaranteed to be present in all PostScript printers and early PDF viewers. In practice, modern workflows should not rely on this guarantee.

Font subsetting

Font subsetting is the practice of embedding only the glyphs actually used in the document rather than the complete font program. If a document uses only the characters A–Z, 0–9, and a few punctuation marks, there is no need to embed the full 65,000-glyph Unicode font. Subsetting reduces file size significantly for large fonts (CJK fonts containing thousands of glyphs are a common case) while still guaranteeing correct rendering. The embedded subset is flagged in the font's /FontDescriptor with a six-character random prefix in the font name (e.g., ABCDEF+TimesNewRoman) — this tells any tool processing the PDF that the font is a subset. The subsetting trade-off — Subsetted fonts cannot be safely reused. If you want to add text using that font after the PDF is created, the new glyphs may not be in the subset. Tools that edit PDF text (including PDF editors) must either embed the additional glyphs or use a separately embedded font instance. Subsetting thresholds — Adobe Acrobat and most PDF creation tools use a configurable subsetting threshold: "Subset fonts with less than N% of characters used." The default in Acrobat is typically 100% (always subset). Some print production workflows use a lower threshold (e.g., 35%) to avoid subsetting fonts where a large proportion is used — a complete embedding is more useful for workflows that will further process the PDF.

Font types: Type 1, TrueType, CFF/OpenType

Type 1 fonts were the original PostScript outline font format developed by Adobe in the 1980s. They use cubic Bézier curves and were the dominant professional font format until OpenType. In PDF, Type 1 fonts are stored in the font stream with their PostScript glyph programs. Most Type 1 fonts are single-byte encoded (256 characters maximum), which is why older PDFs sometimes have separate font instances for the same typeface covering different character ranges. TrueType fonts use quadratic Bézier curves (Apple's original design) and are stored in PDF using TrueType's native binary format with a /Subtype /TrueType designation. TrueType supports Unicode encoding directly via the cmap table, making them more straightforward for multilingual documents than Type 1. CFF (Compact Font Format) / OpenType — Modern professional fonts are typically OpenType: a container format that holds either a CFF (PostScript) or TrueType outline. In PDF, CFF outlines are stored as /Subtype /Type1 or via CIDFont dictionaries. OpenType's advanced typographic features (ligatures, small caps, old-style figures) are typically applied before PDF creation — the PDF stores only the glyphs used, not the OpenType feature tables. CIDFonts and composite fonts — For languages with large character sets (Chinese, Japanese, Korean) and for fonts covering the full Unicode range, PDF uses CIDFont dictionaries with a ToUnicode CMap. CIDFonts avoid the 256-character-per-encoding limitation and are essential for correct text extraction. The /ToUnicode entry in a font dictionary maps glyph IDs to Unicode code points — without it, text extraction tools and screen readers cannot recover the original characters from the rendered glyphs.

Auditing and fixing font issues

Audit with Acrobat: In Adobe Acrobat Pro, File > Properties > Fonts tab lists every font used in the document, whether it is embedded, and whether it is subsetted. Fonts shown as "Embedded Subset" are correctly embedded (with subsetting). Fonts shown without "(Embedded)" are not embedded — these are the problematic ones. Audit with pdffonts: The open-source pdffonts command-line tool (part of Poppler and Xpdf) lists all fonts in a PDF with embedding status, encoding, and whether a ToUnicode map is present. This is the fastest way to script font auditing across large document libraries. Fix by re-distilling or re-exporting: The most reliable fix for missing font embedding is to regenerate the PDF from the source document with embedding enabled. In the source application (Word, InDesign, etc.) ensure font embedding is on in PDF export settings. Fix in Acrobat Pro: Acrobat Pro's Print Production > Preflight panel includes fixes that can embed fonts into existing PDFs. However, this only works if the font is available on the machine running the fix — if the original font is not installed, Acrobat cannot embed it post-hoc. Fix with Ghostscript: Ghostscript can re-distill a PDF with font embedding: gs -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dEmbedAllFonts=true -sOutputFile=out.pdf in.pdf. This embeds fonts that are available in Ghostscript's font path. As with Acrobat, the font must be accessible on the processing machine.