home google
The issue: Unattractive fonts in Acrobat PDFs

Ever run across an Adobe Acrobat PDF created from a LaTex file that had fuzzy, low-resolution, difficult to read text? Maybe even created a few of your own??? The issue hinges on the type of fonts that are used.

Types of fonts

There are a couple of different types of postscript fonts in common useage: Type 1 and Type 3. The distinction between the two is important. The latter simply includes a bitmap image of each of the alphanumeric characters at a given resolution. If one zooms in slightly or requires a size which is not included in the font set, this image is just crudely scaled up. The result is jagged, hard to read type.

Type 1 fonts, on the other hand, include information about the lines, curves, and splines which serve to make up the outline of each character, rather than an image of the character at a particular size. As a result, they are easily scaled to whatever size is required by the output device. We'd much prefer to use this type of font whenever possible.

What type of fonts are used in Acrobat PDFs?

Which type of font is used in the pdf file, actually, has nothing to do with Acrobat, but rather is a decision made when the postscript file is originally created (assuming the progression: latex to dvi to postscript to pdf). It's, therefore, crucially dependent on the conversion of the dvi file into a postscript file, usually with dvips. Although some commercial systems, for example, Y&Y Latex, include a complete set of Type 1 fonts which are configured for use by default, most installations do not. Instead when dvips is used to create a postscript version of a LaTex file the default Type 3 fonts are included. But, this behavior can be over-ridden!

How do we make sure that Type 1 fonts are used?

The process is, actually, pretty simple:
  • download and install a set of Computer Modern Type 1 fonts for use with LaTex;
  • create an appropriate font map file; and,
  • remind dvips to use these fonts whenever possible.
To get a set of the Computer Modern fonts for free, visit the CTAN archive at www.ctan.org. For example, one such set is in `fonts/cm/ps-type1/bluesky/pfb/'. Download these `postscript font binaries' (pfb) into a local subdirectory (e.g. `/home/username/.fonts').

We, then, need to tell dvips when it should substitute these fonts. This is accomplished with a font mapping file, e.g. `myfonts.map'. Each line in the file typically consists of three elements:

[tex filename] [postscript filename] < [pdf font file]

For example,

cmbx10 CMBX10 < /home/username/.fonts/cmbx10.pfb

One such font mapping file can be found here. Simply use your favorite editor to replace all occurrences of `/home/username/.fonts/' with the location of the fonts on your system. This file can be saved whereever you want. Mine is in the same directory as the fonts.

Lastly, we need to tell dvips to check this file out and make any substitutions of Type 3 fonts for Type 1 fonts that it can. This is done using the dvips resource file, `.dvipsrc', in your home directory. If it doesn't already exist, go ahead and create it, then, add the line

p +/home/username/.fonts/myfont.map

if, for example, your font map file, `myfont.map', was stored in the `.fonts' directory. That should be all there is to it. Next time you use dvips to create a postscript file the Type 1 fonts should be automatically included. Good luck!