Next: Functions for Subsetting
Up: Font Subsetting
Previous: Font Subsetting
Contents
Index
Font File Organization and Subsetting
Each Type 1 font file is a special Postscript program defining three
Postscript-dictionaries:
FontInfo
Global font information like font and family name and encoding scheme is
stored here. This data is required even for a subsetted font. However, as
will be described later, the encoding scheme may be reduced to those
characters that are in the desired subset.
Private
This dictionary is in the encrypted part of the file and stores global font
data too. This data includes quantities parameterizing hinting and
subroutines that might be called by the character descriptions. This data is
required also.
Charstrings
For each character defined in the font a binary and encrypted byte string
(charstring) coding the character outline is stored in this dictionary. The
number of charstrings may be considerably larger than the size of the
encoding vector. This dictionary usually constitutes the largest part of the
font file and, consequently, it is the place to reduce storage requirements.
The main principle in subsetting is to decrypt the font and reorganize it,
leaving out charstrings that are not required in the current context. For
example, if a document uses only the character 'A' from the font Garamond,
then this font may be subsetted preserving the character outline for 'A'
only. The resulting file, which will be much smaller than the original file,
can then be included verbatim into the Postscript file containing the
document. At the same time, optionally, the encoding vector could be redefined
to contain only the entry for 'A' at the appropriate location and
.notdef
otherwise.
A still more consequent subsetting would involve leaving out those subroutines
from the Private
-dictionary that are not needed by the preserved
charstrings. Leaving out some subroutines on the other hand would require to
interprete and check all charstrings for the subroutines they require and all
preserved charstrings would have to be adapted to the reorganized index. Since
the subroutines usually do not consume that much memory this is not considered
worth the effort.
Next: Functions for Subsetting
Up: Font Subsetting
Previous: Font Subsetting
Contents
Index
2005-01-12