Embedding fonts (Windows)

If you have not already read "Where do fonts come from?", then I suggest you do. Knowing what you've learned there, it can be said that in summary, the following conditions should be true:

  1. The font files must be actually be present on your system.
  2. In some cases, particularly the case of the Adobe Acrobat printer, the driver should think the fonts are not resident on the printer to which you print when you create your file.
  3. Certain download and substitution settings need to be set in your printer driver.
  4. For PDFs, Distiller must know where to locate the font files.

The fonts must be on your system

The point is that if the actual font files are not available to the operating system, the driver or Distiller will have nothing to embed.

The driver should think the fonts are not resident on the printer

If the driver thinks a font is resident, it figures it doesn't need to mess with it. If you are using the AdobePS installer, this information comes from the PPD file you used, and is valid even for the specific Acrobat Distiller printer instance (which uses a PPD like all other PostScript printers). The Windows Add Printer wizard won't let you choose your own PPD.

In some cases it is okay if the driver knows fonts are resident. For example, if you are printing to a physical PostScript printer and you are using Times, there really isn't any need to force Times to download.

If you're installing a new printer (including Acrobat Distiller printer) using AdobePS, you can indicate that a font is not resident by editing the PPD before you install. (If you need to work with a printer that's already installed, see below.) Open the PPD in a text editor and look for a list of fonts. An example is shown below, but note that it will vary depending on the printer: Some have more or less, some files have different wording, and the PPD for Acrobat Distiller does not have a DefaultFont line.

*DefaultFont: Courier
*Font AvantGarde-Book: Standard "(001.002)" Standard ROM
*Font AvantGarde-BookOblique: Standard "(001.001)" Standard ROM
*Font AvantGarde-Demi: Standard "(001.001)" Standard ROM
*Font AvantGarde-DemiOblique: Standard "(001.001)" Standard ROM
*Font Bookman-Demi: Standard "(001.001)" Standard ROM
*Font Bookman-DemiItalic: Standard "(001.001)" Standard ROM
*Font Bookman-Light: Standard "(001.001)" Standard ROM
*Font Bookman-LightItalic: Standard "(001.001)" Standard ROM
*Font Courier: Standard "(004.000)" Standard ROM
*Font Courier-Bold: Standard "(004.000)" Standard ROM
*Font Courier-BoldOblique: Standard "(004.000)" Standard ROM
*Font Courier-Oblique: Standard "(004.000)" Standard ROM
*Font Symbol: Special "(001.008)" Special ROM
*Font ZapfDingbats: Special "(002.000)" Special ROM

You indicate which fonts are not resident by commenting out the fonts. (You could delete the lines, but I prefer the comment method.) Notice the last two fonts: The percent sign just after the asterisk comments out the line. Note: Do not comment the Couriers. For some reason (I don't know why) things seem to choke if Courier is commented, even if the DefaultFont is changed to something else.

So in the example above, if you wanted to ensure your fonts are downloaded, you would comment everything except the DefaultFont line and the four Couriers by placing a percent sign (%) to the right of the asterisk (*). In the example below, I have commonted the last two lines:

*DefaultFont: Courier
*%Font AvantGarde-Book: Standard "(001.002)" Standard ROM
*%Font AvantGarde-BookOblique: Standard "(001.001)" Standard ROM
*%Font AvantGarde-Demi: Standard "(001.001)" Standard ROM
*%Font AvantGarde-DemiOblique: Standard "(001.001)" Standard ROM
*%Font Bookman-Demi: Standard "(001.001)" Standard ROM
*%Font Bookman-DemiItalic: Standard "(001.001)" Standard ROM
*%Font Bookman-Light: Standard "(001.001)" Standard ROM
*%Font Bookman-LightItalic: Standard "(001.001)" Standard ROM
*Font Courier: Standard "(004.000)" Standard ROM
*Font Courier-Bold: Standard "(004.000)" Standard ROM
*Font Courier-BoldOblique: Standard "(004.000)" Standard ROM
*Font Courier-Oblique: Standard "(004.000)" Standard ROM
*%Font Symbol: Special "(001.008)" Special ROM
*%Font ZapfDingbats: Special "(002.000)" Special ROM

If you need to modify a printer that's already installed in Windows 2000 and XP, you can delete the printer and reinstall it using AdobePS and the edited PPD file. If you'd rather not delete and reinstall, you can do the following:

  1. Log on as Administrator or with a user ID that has administrator privileges. Make sure no printing is occurring or is spooled to any PostScript printer, and close all regular applications.
  2. Go to directory C:\WINNT\system32\spool\drivers\w32x86\3.
  3. For each .PPD file in that directory:
    1. Copy the .PPD file to a backup location in case you need to subsequently retrieve a premodified version.
    2. Open the .PPD with an ASCII text editor, such as Notepad.
    3. Comment the lines as described above.
  4. Delete all the .BPD files in directory C:\WINNT\system32\spool\drivers\w32x86\3. That is not a typo: the extension is bee pee dee. The PostScript driver will then recreate the .BPD files as necessary from the edited PPD files.

Printer driver download and substitution settings

There are some printer settings you need to change (the defaults are usually what you don't want). These are found at various locations depending on the printer, but you can probably see them all by right-clicking the printer and choosing Printer Preferences, then clicking Advanced.

Tell Distiller where the fonts are located

If a font is not embedded in the PostScript data and Distiller is instructed to embed them, then Distiller has to know where the font is located.

  1. Launch Acrobat Distiller and navigate to Settings > Font Locations.
  2. Populate the list of font locations with the various areas your fonts are located.

More information can be found on page 55 of the Adobe Acrobat 5 Help file.

Related topics

Where do fonts come from?

Patch for the Windows Zapf Dingbats problem