This document explains how to configure Tomas Rokicki's DVIPS program to use
device-independent, scalable fonts in a PostScript language file or PDF document
to achieve optimal font quality on any output device.
BACKGROUND
The PostScript language can represent fonts in a number of
different formats. PostScript Type 3 fonts can be described as either
resolution-specific bitmaps or scalable outlines. PostScript Type 1 fonts are
resolution-independent outline fonts that can be quickly rasterized by the font
machinery in Adobe PostScript interpreters and software that uses the Adobe Type
Manager (ATM) font rasterizer. Type 1 fonts can contain "hints" that tell the
font machinery how to most effectively rasterize the font even at low resolutions
or small font sizes.
The Computer Modern fonts, commonly used with Donald Knuth's TeX typesetting
language, are typically rendered as fixed-resolution bitmaps (in TeX's PK format)
even though they were derived from device-independent descriptions in Knuth's
METAFONT language. A driver pro-gram translates TeX's DVI file and PK fonts to a
printer-specific font format for printing.
The default behavior of DVIPS 1 is to convert the PK fonts into Type 3
bitmapped fonts when creating a PostScript language file. The resulting
PostScript language file thus contains resolu-tion- specific Type 3 bitmapped
fonts that are not device- and resolution-independent like scal-able Type 1
fonts.
If the PostScript language file is sent to a specific printer, device
dependence may not be a problem. If the file is sent to printers of varying
resolutions, however, this may be a problem because the fonts will not print at
the native resolution of the printer. Sending a file with 300 dot-per-inch (dpi)
fonts to a 600 dpi printer produces output no better than that of a 300 dpi
printer.
Similar problems occur when the PostScript language file is converted to Adobe
Portable Doc-ument Format (PDF). Since a PDF file is designed to be viewed and
printed on a wide range of devicesincluding both computer monitors and printers
of varying resolutions, it works most effectively with scalable outline
fonts.
Although Adobe Acrobat Distiller will convert a PostScript language file with
bitmapped fonts into PDF, these fonts display slowly and do not render well on
screen in the resulting PDF file. But, if you use Type 1 versions of the fonts
you will get a compact file format that delivers the optimal font quality when
used with any display screen, zoom mode, or printer resolution.
USING TYPE 1 FONTS WITH DVIPS
The default behavior of Rokicki's DVIPS is
to embed Type 3 bitmapped fonts.
You can configure DVIPS to not embed bitmapped fonts by performing two
steps:
1 Create a font map file to identify the fonts you do not want to
embed.
2 Tell DVIPS how to reference the font map file.
You can tell DVIPS to use Type 1 fonts automatically for all of your DVIPS
jobs or manually on a per-job basis depending on how you reference the font map
file. Your system administrator can also configure DVIPS to automatically use
Type 1 fonts globally for all users.
In each case you have the option to replace the Type 3 bitmapped fonts with
references to the Type 1 fonts or to actually embed the code for the Type 1
fonts. The former creates smaller files, but requires the fonts to be available
when the PostScript language file is printed or dis-tilled. If the fonts are
embedded in the PostScript language file, you don't need to worry about whether
the fonts are present in the printer or available to Acrobat Distiller, but youll
have a larger PostScript language file and you may encounter memory limitations
in certain Post-Script implementations.
You need access to the Type 1 versions of the fonts you use in your documents
in order to embed the font information. Type 1 versions of the Computer Modern
fonts are available in the BaKoMa collection (see "References and Resources") and
from commercial type vendors.
Before distributing files with embedded fonts, consult the license agreement
for your font package. Some typeface vendors do not allow you to embed complete
fonts into a PDF or Post-Script language file for public distribution. Contact
the type vendor for more information. You may embed all fonts included in the
Adobe Type library.
CREATING THE FONT MAP FILE
To tell DVIPS to use Type 1 fonts rather than
Type 3 fonts, you first need to create a font substitution, or font map file,
that lists the names of the fonts that DVIPS should not embed as bitmaps.
For example, to instruct DVIPS to not embed the standard Computer Modern
fonts, the font map file would look as follows:
cmb10
cmbsy10
cmbsy6
cmbsy7
cmbsy8
cmbsy9
cmbx10
cmbx12
.
.
.
This example assumes that the PostScript language names of the fonts (as
referenced by the PostScript language interpreter's findfont operator) are
identical to the names of the TFM files used by TeX (as is the case with the
BaKoMa fonts).
If the PostScript language name for the font differs from the name used by
TeX, use the font map file to create aliases to map the TeX name to the
PostScript language name of the font. For example, if the Type 1 version of the
CM fonts use upper case names, the font map would look like this:
cmb10 CMB10
cmbsy10 CMBSY10
cmbsy6 CMBSY6
cmbsy7 CMBSY7
cmbsy8 CMBSY8
cmbsy9 CMBSY9
cmbx10 CMBX10
cmbx12
CMBX12
. .
. .
. .
If you use other PostScript language fonts you can also use this alias
feature to map the names of the PostScript language fonts to the names of the TeX
font files, such as:
hlvr Helvetica
hlvo Helvetica-Oblique
hlvb Helvetica-Bold
hlvbo
Helvetica-BoldOblique
. .
. .
. .
Here the font file known to TeX as hlvr (the name of the TFM file) refers to
the PostScript language font Helvetica, hlvo refers to Helvetica-Oblique, and so
on.
In the previous three examples, only the names of the fonts are embedded in
the PostScript language file, so the fonts must be available to the PostScript
language interpreter when the file is printed or distilled.
To embed the code for the Type 1 font in the PostScript language file, add "<"
followed by the path to the font file in either PFB or PFA format.
For example, if you have PFB versions of the CM fonts in the directory
/usr/local/lib/tex/fonts/type1/, your font map file would look like:
cmb10 cmbsy10
cmbsy6
cmbsy7
cmbsy8
cmbsy9
cmbx10
cmbx12
. .
. .
. .
How the font substitutions specified in your font map file affect your DVIPS
jobs depends on how you reference the font map file, as described in the next
section.
REFERENCING THE FONT MAP FILE
You can configure DVIPS to make these font
substitutions automatically for all of your DVIPS jobs or manually on a per-job
basis. Your system administrator can also configure DVIPS to automatically use
Type 1 fonts globally for all users by placing the font map entries described
above in the DVIPS system-wide psfonts.map file.
Using a Font Map File Automatically for All Jobs
To configure DVIPS to
automatically perform the font substitutions for all jobs, create a font map file
and then create a file in your home directory named .dvipsrc containing the
line:
p +fontmap.map
where fontmap.map is the name of your font map file. (Make sure the p
parameter is lowercase.)
With some implementations of DVIPS you may need to specify the full path to
the font map file. For example, if your home directory is /users/kmw/ and your
font map file is called embedCM.map, you would add the following line to your
.dvipsrc file:
p +/users/kmw/embedCM.map
The plus sign (+) before the name of the font map file indicates that the
font map file is refer-enced after the system-wide psfonts.map file and any
assignments in your font map file are in addition to (and will override) those
found in the psfonts.map file.
Now you can run DVIPS as usual:
dvips dvifilename
The font substitutions in your font map file will be used for all your DVIPS
jobs.
Using a Font Map File On a Per-Job Basis
If you want to frequently switch
between font map files, rather than editing your .dvipsrc file each time, you can
create one or more printer-specificor, in this case, "output-specific"
configuration files named config.printername that tell DVIPS to reference
different font map files. You can then reference a specific configuration file by
using the uppercase P parameter with the DVIPS command:
dvips -P printername dvifilename
For example, you can have a file CM.map like the first three examples that
only places refer-ences to the fonts in the PostScript language file and another
file embedCM.map that includes the font code as in the last example shown.
Then create a file named config.distiller containing a line with the lowercase
p parameter that specifies the file CM.map:
p +CM.map
and a file named config.distillembed with the line that specifies the file
embedCM.map:
p +embedCM.map
In some implementations of DVIPS you may need to give the complete path to the
font map file.
The following command line would then create a PostScript language file
containing only the names of the fonts:
dvips -P distiller dvifilename
The following command line would similarly create a PostScript language file
with the actual font code embedded in the PostScript language file:
dvips -P distillembed dvifilename
Depending on how your implementation of DVIPS is configured, DVIPS may look
for the config.printername file only in the current directory or in both the
current directory and your home directory. If you want to change how DVIPS looks
for configuration files, you can set the TEXCONFIG environment variable as
described in the "Environment Variables" section of the DVIPS documentation.
CONVERTING A POSTSCRIPT LANGUAGE FILE TO PDF USING ACROBAT DISTILLER
Once
you've created a PostScript language file, use Acrobat Distiller to convert the
PostScript language file to a PDF file. For more detailed information, refer to
the Acrobat Distiller Online Guide.
If you embedded the Type 1 font code in the PostScript language file created
by DVIPS, you can simply distill the PostScript language file as usual. If you
embedded only references to the Type 1 fonts, you need to make sure Acrobat
Distiller has access to the PostScript language fonts. See "Giving Acrobat
Distiller access to fonts" in the Acrobat Distiller Online Guide.
FORCING FONT SUBSETTING
Acrobat Distiller 2.1 provides configuration
settings to enable both font embedding and font subsetting in a PDF file. For
more information on these options see Embedding fonts in the Acrobat Distiller
Online Guide.
Acrobat Distiller's default maximum subsetting threshold is 10%. In other
words, if more than 10% of the characters in a font are included in the document,
the entire font is embedded in the document.
You may want to change this setting to a higher value. This can produce a
smaller PDF file and you may be required by the font vendor's license to subset
the font if you plan to distribute the PDF file (contact the font vendor for
details).
You can change the threshold for font embedding by adding a line to the
Example.ps file in Acrobat Distiller's startup directory. In UNIX, the file is
called DStartup.ps and is located in For example, to change the embedding threshold to the maximum value of 99
percent, open Example.ps with a text editor and add the following line to the
file: << /SubsetFonts true /MaxSubsetPct 99 >> setdistillerparams Although it doesn't matter where in the file you put this line, it's a good
idea to place it in the "FONT EMBEDDING" section. Save this file, restart Acrobat Distiller, and create the PDF file as usual.
In most cases, all of the embedded fonts will now be subsetted. If you later want to restore the original default setting, simply comment out
this line by preced-ing it with a percent sign (%) and restart Acrobat
Distiller. CHECKING THE PDF FILE If your document uses fonts that are not referenced in your font map file (but
are available on your system in the standard TeX PK format) it may still include
Type 3 fonts. The BaKoMa col-lection, for example, does not have the manfnt font
typically used to typeset the METAFONT logo, and documents using this font will
continue to include this as a bitmapped font. Although the differences between the Type 3 bitmap fonts and the Type 1 fonts
are usually apparent upon inspection, you can check which fonts are used in a PDF
file by selecting File > Document Info > Fonts in Acrobat Reader or Exchange.
From the Font Info window click List All Fonts. The Type column will display whether the fonts are Type 1 or Type 3. If you're
using DVIPS the Type 3 bitmapped fonts will also be named T1, T2, etc., while
Type 1 fonts will display their correct names, such as cmr10, cmbx10, and so on.
Fonts that have a six-character prefix added to the font name (such as
KICOLA+cmr7) are Type 1 fonts that have been subsetted. REFERENCES AND RESOURCES Files The BaKoMa collection, containing Type 1 versions of the Computer Modern
(CM) fonts (in PFB format), is available from the comprehensive TeX Archive
Network (CTAN) at: http://jasper.ora.com/CTAN/tex-archive/fonts/postscript/bakoma/ Tomas Rokicki's DVIPS program is available from the comprehensive TeX Archive
Network (CTAN) at: http://jasper.ora.com/CTAN/tex-archive/dviware/dvips/ Included with DVIPS is the TeX source for the DVIPS documentation, "DVIPS: A
TeX Driver." This document contains detailed information on the features and
configuration settings of DVIPS. TeX is described in The TeXbook by Donald Knuth, published by Addison-Wesley
Publishing Company. http://jasper.ora.com/CTAN/tex-archive/ TERMS AND CONCEPTS http://jasper.ora.com/CTAN/tex-archive/fonts/postscript/bakoma/ DVI: The "device-independent" file format used by TeX as an intermediate file
between the TeX source code and a printer-specific output file. The TeX program
converts TeX source code into a DVI file. A driver program then converts the DVI
file into another format for viewing or printing. DVIPS, for example, converts a
DVI file into a PostScript language file which can then be printed on a
PostScript language printer or converted to PDF using Acrobat Distiller. DVIPS: A DVI print driver written by Tomas Rokicki that converts a TeX DVI
file into a Post-Script file. DVIPS is available from the comprehensive TeX
Archive Network (CTAN) at: http://jasper.ora.com/CTAN/tex-archive/dviware/dvips/ PDF: The "Portable Document Format" (PDF) is the native file format of the
Adobe Acrobat family of products. The goal of PDF is to enable users to easily
and reliably exchange and view electronic documents independent of the
environment in which they were created. The imag-ing model underlying PDF is
based on Adobe PostScript language, but contains additional fea-tures to display,
navigate, and annotate electronic documents. The PDF file format is documented in the Portable Document Format Reference
Manual by Tim Bienz and Richard Cohn, published by Addison-Wesley Publishing
Company. Adobe Systems' Technical Note 5156, "Updates to the Portable Document Format"
contains additional information and is available on the Adobe web site at: PFA: "Printer Font ASCII" -- an ASCII (text-only) encoding of a PostScript
Type 1 font. PFB: "Printer Font Binary" -- a binary encoding of a PostScript Type 1
font PK Font: A bitmapped font in TeXs "packed" format. Although many PK fonts are
derived from device-independent descriptions in the METAFONT language, a PK font
is a device- and resolution-specific bitmap. When a driver program (such as
DVIPS) converts a TeX DVI file to a printer-specific format, it typically
converts the PK font into a printer-specific bitmapped font format (such as a
PostScript Type 3 bitmapped font). TeX: A typesetting language written by Donald Knuth. TFM: A TeX font metric (TFM) file contains information about a font's
character widths, liga-tures, and kerning pairs (but not the actual shapes of the
fonts, which are typically stored in a PK file). The TFM file is used by the TeX
program to typeset the document and create a TeX DVI file. 1 The information on DVIPS is based primarily on DVIPS version 5.55 for
Unix. Other versions may differ -- check the documentation provided with your
version of DVIPS for more information.
If you've been using Type 3 bitmapped fonts in your
PDF files, you'll see the difference the Type 1 fonts make as soon as you open
the file in Acrobat Reader or Exchange. With scalable Type 1 fonts the file
displays more quickly and can be viewed in any zoom mode with no loss of font
quality. Furthermore, you can print the PDF file on any printer and the fonts
will be rendered at the maximum resolution of the printer.
The TeX program and related tools and information are
available online from the comprehen-sive TeX Archive Network (CTAN) at:
BaKoMa fonts: The BaKoMa Fonts Collection from Basil
K. Malyshev includes Type 1 versions of the basic Computer Modern fonts. The
BaKoMa fonts are available from the comprehensive TeX Archive Network (CTAN)
at: