Skip to content

Print · 7 min read · Updated 2026-09-19

PDF fonts explained

Embedding puts the typeface inside the file; subsetting keeps only the glyphs used. When neither happens, the viewer substitutes — and your layout moves.

A PDF that renders perfectly on your machine and wrongly on someone else’s is nearly always a font problem, and the mechanism behind it is worth understanding because it is entirely predictable. The file either carries the typefaces it needs or it does not, and what a reader does in the second case sets off a chain of consequences that ends with your page breaks in the wrong places.

PDF fonts explained

01

What embedding actually stores

Embedding means the font program itself — the software that defines each glyph’s outline — is written into the PDF as a stream. The font dictionary describing the typeface points at it through one of three entries, and which entry appears tells you the flavour of font data inside. /FontFile holds a Type1 program, /FontFile2 holds TrueType, and /FontFile3 holds a compact form, typically CFF, also known as Type1C. The reader loads that program and uses it to draw glyphs exactly as the author’s machine did.

Alongside the outlines, the dictionary records metrics: the advance width of each glyph, the font’s bounding box, ascent and descent, and flags describing whether it is serif, fixed-pitch, symbolic and so on. Those widths matter enormously and are easy to overlook — they are what the layout was computed from. A PDF stores where each run of text begins, and the widths determine how far along the line the following glyphs fall.

Font types in a PDF fall into a few families. Type1 is the legacy PostScript format, still found in older files. TrueType is the format most desktop fonts use. Type0 is a composite, or CID-keyed, font, and it exists to handle writing systems whose character repertoires exceed what a simple single-byte encoding can address — Chinese, Japanese and Korean above all. Separately, fourteen so-called standard fonts — the Helvetica, Times, Courier, Symbol and ZapfDingbats set — were historically assumed to be available in every reader, so files may reference them without embedding anything. Relying on that assumption is reasonable in narrow cases and risky in general, since what a modern viewer substitutes for "Helvetica" is not necessarily metrically identical.

02

Subsetting, and the six-letter prefix

A complete font program can be large, and a document rarely uses all of it. Subsetting embeds only the glyphs the document actually draws, discarding the rest of the typeface. For a Latin document this might mean sixty or eighty glyphs instead of several hundred, and for a document setting a handful of CJK characters the saving can be the difference between a small file and an enormous one, because a full CJK font covering tens of thousands of glyphs is a heavy thing to carry.

Subset fonts are marked by convention with a six-uppercase-letter tag and a plus sign prefixed to the font name, producing names like ABCDEF+Helvetica. The tag is arbitrary; its purpose is to make the subset distinguishable from the complete font and from other subsets of it, so that two files with different glyph selections do not collide when merged. If you inspect a document’s fonts and see bare names with no prefix attached to large font programs, the fonts were embedded in full and that is very often where the file’s weight went.

Subsetting has one genuine cost, which is editability. If a subset contains no glyph for the letter you want to type, an editor either cannot insert it or must re-embed a fuller subset. That trade-off is nearly always worth making for a document being distributed rather than revised, which is what most PDFs are — but it explains why editing text in a PDF sometimes produces a missing or substituted character where it did not before.

03

Substitution, and the layout shift it causes

When a font is referenced but not embedded, the reader must find something to draw with. It looks for the named font locally, and failing that it substitutes — picking an installed font with vaguely similar characteristics, or synthesising one to approximate the recorded metrics. The page still renders and at a glance may look acceptable, which is exactly why the problem goes unnoticed until it matters.

The damage runs through widths. A substituted font’s glyphs almost never have identical advance widths to the original, so each line of text occupies a different amount of horizontal space than the layout assumed. Slightly wider glyphs push the last word of a line past the margin and onto the next line. That extra line pushes everything below it down. Accumulate enough of those and content crosses a page boundary, so the document paginates differently — a table splits across pages, a heading lands orphaned at the foot, a figure separates from its caption. This is the mechanism behind the familiar complaint that a file "looks different on another machine", and it is also why fixed-layout PDFs with unembedded fonts are not really fixed-layout at all.

The remedies are simple once the cause is clear. Embed the fonts, ideally subset, when exporting — most generators offer the choice and some default badly. For print work, treat embedding as non-negotiable, since a commercial printer’s machine certainly does not have your licensed typefaces installed. For long-term archiving, PDF/A requires embedding precisely because a file that depends on what is installed elsewhere cannot promise to render the same in twenty years. And if a document must survive on a machine you know nothing about, checking its font list before sending is a five-second habit that prevents an entire class of surprise.

Worth repeating

MyPDFilles tools described here run on your device.

When an article refers to a MyPDFilles tool, its parsing, compression or recognition runs in JavaScript and WebAssembly inside your browser tab on bytes read from your disk. Educational references to external software are not covered by that claim; review the external provider’s own privacy and security information.

How to verify MyPDFilles processing

Questions on this topic

What does ABCDEF+ before a font name mean?

It marks a subset. The six uppercase letters are an arbitrary tag whose job is to distinguish this particular selection of glyphs from the full typeface and from other subsets of it, so that merging documents does not confuse two different partial embeddings of the same font.

Why does my PDF look different on a colleague’s computer?

Usually because a font was not embedded, so their reader substituted a different one. The substitute’s glyph widths differ, which changes where lines break, which changes where pages break. Embedding the fonts when you export removes the reader’s need to guess at all.

Should I always embed fonts?

For anything you send to someone else, yes — and subset them so you are not carrying glyphs the document never uses. It is effectively required for commercial printing, since the printer will not have your typefaces, and PDF/A mandates it for archival files for the same reason of self-containment.

Why is one embedded font making my file so large?

Almost certainly because it was embedded in full rather than subset, and it covers a very large character set. A CJK typeface contains tens of thousands of glyphs, so embedding the whole thing to set a few characters can dominate the size of an otherwise small document.