On this page
Why journals ask you to embed fonts in a PDF figure
A PDF can either carry its fonts or name them and hope the reader has them. When a font is missing on the production system, the software substitutes another. Label widths change, text overruns the axes, and a Greek μ can turn into an m or an empty box.
Embedding avoids that by storing the glyph outlines in the file. Most figure exports embed a subset: only the characters actually used, under a name with a six-letter prefix such as ABCDEF+Helvetica. That is expected.
Publishers also care about editable text. Nature's figure guide asks for standard fonts such as Arial or Helvetica, embedded as TrueType (Type 2 or Type 42), text between 5 and 7 pt, and text that is not outlined, so that production can correct labels.
How to check embedded fonts in a PDF
In Adobe Acrobat or Acrobat Reader
- Open the saved figure PDF.
- Open Document Properties (Command-D on a Mac) and choose the Fonts tab.
- Read every entry. Each should end in (Embedded) or (Embedded Subset).
- Note the font type shown under each name. TrueType and Type 1 are fine; Type 3 needs attention (see below).
On the command line with pdffonts
Poppler's pdffonts prints one row per font. On a Mac with Homebrew, install it with brew install poppler, then run pdffonts figure.pdf.
- Check the
embcolumn: every row should read yes. - The
subcolumn says whether the font is a subset; yes is normal. - Check the
typecolumn for Type 3 entries. - Compare the
namecolumn with the fonts you chose; an unrelated family means a substitution happened before or during export.
Then check by eye
Open the PDF at 100% and at high zoom and compare it with the source figure: Greek letters, minus signs, degree signs, superscripts and subscripts. A font can be embedded and still lack a glyph, in which case the exporter silently uses a fallback.
An empty font list is not a pass. It means the PDF contains no live text: labels were drawn as outlines or sit inside an image.
Reading the result: embedded, subset, Type 3, missing
| What you see | What it means | What to do |
|---|---|---|
| Embedded Subset (emb yes, sub yes) | Used glyphs are in the file | Nothing; this is the normal result |
| Embedded (emb yes, sub no) | The whole font is in the file | Nothing; the file is just larger |
| Not embedded (emb no) | Another system will substitute | Re-export with embedding, or change the font |
| Type 3 | Glyphs stored as drawing procedures | Re-export as TrueType where the journal requires it |
| Text not in the list | Labels are outlines or pixels | Re-export with live text if editable text is required |
Type 3 fonts deserve a note because Matplotlib produces them by default. Its PDF backend writes Type 3 unless pdf.fonttype is set to 42, which embeds TrueType instead. If you finish figures in Matplotlib, set that once in your matplotlibrc or at the top of the script.
Fixing font substitution and missing glyphs
- A font is not embedded: its licence may forbid embedding, or the export path does not embed. Choose a font that permits embedding, re-export and check again.
- A symbol is wrong or missing: the font lacks that glyph. Switch to a font that covers it, or use the proper character (a true minus sign, the Greek letter itself) instead of a look-alike.
- The name in the list is not your font: substitution happened before export, usually because the font was not installed. Install it or pick another, then re-export.
- Text was outlined: outlines avoid font problems but remove editable text, which some journals refuse. Outline only when the destination asks for it.
- The file was processed again: layout programs, PDF optimisers and journal upload systems can rewrite fonts. Re-run the check on the last file in the chain.
Font embedding is one part of a clean figure file. Format, size and what stays vector are covered in how to export a vector PDF figure.
Fonts in Autoplot's PDF export
A single figure exported as Vector PDF is written as vector content with its fonts embedded, so its labels appear in the PDF's font list and remain editable text. Check it with the steps above all the same; the receiving system can still rewrite the file.
Compose boards behave differently. Each panel on a board is a PNG snapshot of its figure, so the labels inside a panel are pixels, not text, and do not appear in the font list. Where a journal requires editable, embedded text in every panel, export the figures individually as Vector PDF and assemble them in a vector layout program; how to make a multi-panel figure explains the trade-off.
If you move a figure to Matplotlib through Autoplot's editable script export, set pdf.fonttype to 42 before saving. You can also ask the assistant to do it: it writes the Python, shows it to you before it runs, and runs it on your Mac. See the features page for the export options.
Frequently asked questions
| Why does the journal say my fonts are not embedded? | At least one font in the PDF was written without its glyph data, often because its licence forbids embedding or the exporting program does not embed by default. List the fonts with Acrobat or pdffonts, change or re-export that font, and check again. |
|---|---|
| Is an embedded subset font acceptable? | Yes. A subset contains only the characters the figure uses, which is how most figure exports embed fonts. It shows as Embedded Subset in Acrobat and sub = yes in pdffonts. |
| Should I convert text to outlines to avoid font problems? | Only if the journal asks for it. Outlined text cannot be corrected by production, and several publishers, including Nature, ask you not to outline. |
Sources
Autoplot behaviour comes from the app's documentation for Compose and Export, checked on 9 October 2026, and from the features page. Nature's guide to building and exporting figure panels gives its font, embedding and outlining requirements. Adobe's font-handling documentation explains embedding, subsetting and licensing restrictions, and Acrobat Preflight covers deeper inspection. pdffonts is part of Poppler. The pdf.fonttype setting is documented in Matplotlib's customisation guide.