You send a PDF. It comes back with "looks a bit odd on my end?" and a screenshot in which the type is not your type, the spacing is loose, and the document is a page longer than the one you made. Nothing is corrupted. The file did exactly what it was told.
What a PDF actually stores
A PDF describes a page as instructions: put these glyphs, from this font, at these coordinates. The question is what "this font" means, and there are two possible answers.
Embedded — the file contains the font program itself. The reader has everything it needs and renders exactly what you saw. Referenced — the file contains only a name, like "Garamond Premier Pro", and the reader is expected to find it locally.
When a referenced font is missing, the reader does not refuse to open the document. It substitutes: it picks something available, and where it can, it tries to fake the metrics of the original so the layout does not collapse entirely. This is why the failure is so confusing — the document is readable, so nothing announces itself as broken. It is simply not your document any more.
How to check a file you already have
In Acrobat or most full PDF readers, open the document properties and look at the Fonts tab. Each entry will say something like "Embedded Subset" or "Embedded", or it will say nothing at all — and nothing at all is the problem.
From a terminal, pdffonts from the Poppler utilities is the fastest check:
pdffonts book.pdfYou get a table with emb and sub columns. Every row should say yes under emb. Any no is a font your reader will have to guess at.
Full embedding and subsetting
"Embedded Subset" means only the glyphs the document actually uses were included. A typeface may carry thousands of glyphs across dozens of languages; a book in English uses a couple of hundred. Subsetting keeps the file small and is what you want almost always.
The one case where it matters is a document someone else will edit. Type a character the subset does not contain and there is no glyph for it — which is a real problem for a form, and no problem at all for a finished book.
Why fonts go missing in the first place
- The exporter was told not to embed. Some tools default to leaving out fonts they consider standard, on the theory that everyone has them. Everyone does not.
- The font's licence forbids it. Some licences set a flag inside the font file that prevents embedding, and a well-behaved exporter honours it. Rare in practice, but it happens with older commercial faces.
- The renderer never had the font. This is the common one for automated pipelines: a build server generates the PDF, the font was only ever installed on a designer's laptop, and the server quietly fell back to a default months ago.
- A web font was referenced by URL. Fine on a web page, meaningless in a PDF — there is nothing to fetch it at reading time.
The licensing part, briefly
Embedding a font distributes it, in a limited form, to everyone who opens the file. Most licences allow this explicitly, but the terms are worth two minutes of your attention before a book goes on sale.
- Open licences (SIL Open Font License, Apache) permit embedding without qualification. Everything on Google Fonts falls here, which is one reason it is a sane default for self-publishing.
- Commercial desktop licences usually permit embedding in a document, sometimes with a restriction on editable versus print-only. Read the clause about "documents" rather than the one about "web fonts" — they are different grants.
- Free-for-personal-use fonts are the trap. "Free" on a download site frequently means free until money is involved, and a book you sell is money.
The reliable setup
Whatever produces your PDF, three things make this class of problem go away:
- Embed everything, subset where possible. No exceptions for "standard" fonts.
- Render somewhere the fonts are guaranteed to exist — not on a machine whose font library depends on who last used it.
- Check the output, not the settings. Run
pdffontson the finished file. The setting says what was intended; the file says what happened.
This is one of the things worth handing to a tool rather than maintaining yourself. In bukpress, exports render server-side and every typeface in your account is embedded in the PDF and packaged into the EPUB — the four bundled families on every plan, families imported from Google Fonts on Essentials and up, and your own .ttf or .otf uploads on Pro. The machine that renders your book always has your fonts, because they were uploaded to it.
The quickest test of any tool's claim here is to run pdffonts on something it produced. The sample book is a fine thing to point it at.