Publication figures

How to embed fonts in a PDF figure

To embed fonts in a PDF figure, export it through a PDF path that writes the font data into the file, using fonts whose licence allows embedding, and then check the saved PDF: every font in its font list should be marked embedded or embedded subset. Embedding is a property of the file, not of the screen. A figure can look perfect in the app that made it and still fail a journal's check because a font was left out.

Updated · 5 min read

On this page
  1. Why journals ask you to embed fonts in a PDF figure
  2. How to check embedded fonts in a PDF
  3. Reading the result: embedded, subset, Type 3, missing
  4. Fixing font substitution and missing glyphs
  5. Fonts in Autoplot's PDF export
  6. Frequently asked questions

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

  1. Open the saved figure PDF.
  2. Open Document Properties (Command-D on a Mac) and choose the Fonts tab.
  3. Read every entry. Each should end in (Embedded) or (Embedded Subset).
  4. 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.

  1. Check the emb column: every row should read yes.
  2. The sub column says whether the font is a subset; yes is normal.
  3. Check the type column for Type 3 entries.
  4. Compare the name column 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.

Autoplot line figure exported to PDF, with a signal axis from minus 1.5 to 1.5 using decimal commas, a time axis and one plotted series with markers
Tick labels with minus signs and decimal commas are a quick visual test: if a glyph is missing or substituted, it shows here first. The font list confirms what the eye cannot.

Reading the result: embedded, subset, Type 3, missing

What you seeWhat it meansWhat to do
Embedded Subset (emb yes, sub yes)Used glyphs are in the fileNothing; this is the normal result
Embedded (emb yes, sub no)The whole font is in the fileNothing; the file is just larger
Not embedded (emb no)Another system will substituteRe-export with embedding, or change the font
Type 3Glyphs stored as drawing proceduresRe-export as TrueType where the journal requires it
Text not in the listLabels are outlines or pixelsRe-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.

In Autoplot

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

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.

Try it on your own data.

Export one figure as Vector PDF from Autoplot and run the font check above on the saved file before you build the rest of the set.

Review vector PDF export →
Download free for Mac Mac App Store

Apple silicon · macOS 15 or later · Free plan · Plus free for 30 days

Send to my Mac

Autoplot runs on a Mac. Send the link to yourself, or open it in the Mac App Store.