This page provides an overview of the way fonts are supported in PDF files. It covers the basics about the supported font types, encodings and the ways of enclosing fonts in a PDF, by either embedding or subsetting them. How and why to outline fonts is discussed. Some general recommendations about font handling can be found at the bottom of this page.
PDF font basics
The PDF file format supports the use of the following font formats:
- Type 1
- Type 3
- Composite fonts (Type 0): both Type 1 (CIDFontType0) and TrueType (CIDFontType2) are supported.
- OpenType: From PDF 1.6 onwards, OpenType fonts can be stored directly in PDF files. In prior releases OpenType fonts are embedded as either Type 1 or TrueType fonts. The ability to embed OpenType directly was added for the forms capabilities of PDF, it offers no immediate advantage for prepress users.
By preference any fonts that are used in a layout are also included in the PDF file itself. This makes sure that the file can be viewed and printed as it was created by the designer. There are two mechanisms to include fonts in a PDF:
- Embedding – A full copy of the entire character set of a font is stored in the PDF.
- Subsetting – Only those characters that are actually used in the lay-out are stored in the PDF. If the “$” character doesn’t appear anywhere in the text, that character is not included in the font. This means that PDF files with subsetted fonts are smaller than PDF files with embedded fonts. For subsetted fonts, the font name is preceded by 6 random characters and a plus sign.
If certain fonts are missing from the PDF file, Adobe Acrobat and Adobe Reader will automatically try to emulate the missing font by using one of the Multiple Master fonts that are built into these programs. This way, the document will not be represented exactly as the designer wanted it to, but at least the text won’t reflow. The Multiple Master fonts that are used for this are:
- Adobe Serif MM
- Adobe Sans MM
Another important aspect of font handling is the encoding. This refers to the mapping of a character code to a particular glyph (character shape) description. Each font in a PDF uses a specific type of encoding, either a standard one or a custom one. The following types of encoding are supported by the PDF file format:
- A custom encoding can be used by defining a ‘Differences Array’.
Which fonts are used in a PDF?
There are several ways in which you can get a list of all of the fonts that are used within a PDF file using Adobe Acrobat or Adobe Reader.
- Adobe Acrobat and Adobe Reader have a Fonts tab in the Document Properties window (File > Properties). Earlier version would only show the fonts from the active page. I do not know if this is still true for newer releases.
- The preflight engine in recent versions of Adobe Acrobat Professional is capable of providing a more detailed list of all of the fonts that are used in a PDF.
- To get an extensive overview of all the fonts used in a document, select Create Inventory in the Options drop-down list of the Acrobat 9 Professional Preflight tool. The Font inventory does not only list all of the fonts but even all the glyphs that are used within the PDF. Below is an example of the level of detail.
Obviously there are other tools that can provide an overview of all fonts, such as for instance the Enfocus PitStop plug-in.
How to embed fonts
Some applications such as Adobe InDesign automatically embed all fonts when pages are exported to PDF.
Acrobat Distiller offers an option to automatically add missing fonts to PostScript files it has to process. In the font locations menu, the user can define several folders that have to be searched for fonts that are missing in the PostScript file. Distiller only needs the printer fonts, it does not need the screen fonts.
Fonts that are not necessarily included in PDF files
Older versions of Adobe Acrobat (Acrobat 3.x and earlier) will never embed the following 14 fonts in a PDF file:
- Courier, Courier-Bold, Courier-Oblique & Courier-BoldOblique
- Times-Roman , Times-Bold , Times-Italic & Times-BoldItalic
- Helvetica, Helvetica-Bold, Helvetica-Oblique & Helvetica-BoldOblique
These fonts, excluding ZapfDingbats, are called the Base 13 fonts.
From Acrobat 4.x onwards, there is no problem embedding the above 14 fonts. In fact it is a good idea to actually always embed these fonts as well. Instead we got another restriction: if the licensing policy of a TrueType forbids the font to be included in a file, Distiller 4 and later will respect this restriction and will not embed the font.
How to subset fonts
It is possible to only include those characters of a font that are actually used in the publication. This technique is called ‘font subsetting’.
Usually you can specify that font subsetting needs to be used as soon as a certain percentage of the character set of a font is used. Below is the option that is shown in Adobe InDesign CS4. A similar ‘Subset fonts below XX %’ parameter is available in Acrobat Distiller.
There are 2 advantages to subsetting fonts:
- It reduces the size of a PDF file and can be handy if file size is really crucial, for instance for PDF files that will be downloaded from the web.
- RIPs will always use a subsetted font, even if the full font is already available on the RIP. This way text reflows caused by differences between fonts can be avoided.
There are two disadvantages to subsetting fonts:
- If you want to edit text in certain PDF editing tools and the character you need is not included in the subset, it cannot be used in the correction. Acrobat itself does not suffer from this. It only uses the system fonts for editing.
- Merging two files that contain a different subset of the same font can lead to missing or swapped characters. Older PDF applications can suffer from this. Most of these bugs have been fixed in more recent versions.
How to outline fonts
Sometimes it can be practical to convert all fonts within a PDF to outlines. This way the text in the PDF is ‘locked down’ and will not be output differently by a RIP because of some weird font behavior. You should be aware that outlining fonts affects the quality of the type: at smaller type sizes the output quality will be slightly inferior (because font hinting is gone) and small type may also fatten up a little.
There is an option to outline all text in the Advanced > Print Production > Flattener Preview option in Acrobat 8 Professional. This will only outline text on pages that have transparency in them so the trick is to add a transparent object to each page (either using a watermark or using PitStop Professional). You can find a discussion and sample screen shots about this trick in this thread.
How to extract fonts from a PDF
You actually cannot extract a font from a PDF, not even if the font is fully embedded. There are two reasons why this is not feasible:
- Most fonts are copyrighted, making it illegal to use an extractor.
- When a font is embedded in a PDF, not all of the font data are included. Obviously the font outline data are included as well as the font width tables. Other information, such as data about ligatures, are irrelevant within the PDF so those data do not get enclosed in a PDF.
I am not aware of any font extraction tools but if you come across one, the above reasons should make it clear that these utilities are to be avoided.
In order to minimize surprises with fonts in PDF, try following these guidelines:
- Always set Distiller to error out when a font is missing.
- Always embed all fonts.
- Always embed complete fonts, do not subset fonts. This avoids rare problems when for example putting several pages using the same font in different subsets onto the same plate.
- Always turn off ‘Use local fonts in Acrobat’ on every machine in your shop.
- Always do a preflight for occurrences of Courier in PDF files you process or send away or receive (in case a font has been substituted)
- Try to avoid using the TouchUp text edit tool in Acrobat.
- Remove all fonts from your RIP (except Courier, Helvetica or any other font that your RIP may absolutely require to operate correctly).
- Use only Adobe PostScript 3 or Harlequin based RIPs or output devices. There are some RIPs/output devices around that have problems handling certain font stuff (e.g. CID fonts as in PDFs produced by InDesign).