Man Pages

tftopl - phpMan tftopl - phpMan

Command: man perldoc info search(apropos)  

File:,  Node: tftopl invocation,  Next: pltotf invocation,  Prev: gftype invocation,  Up: Font utilities

10.6 TFtoPL: TeX font metric to property list conversion

TFtoPL translates a TeX font metric (TFM, *note Metric files:
(dvips)Metric files.) file (as output by Metafont, for example) to
"property list format" (a list of parenthesized items describing the
font) that humans can edit or read.  This program is mostly used by
people debugging TeX implementations, writing font utilities, etc.

     tftopl [OPTION]... TFMNAME[.tfm] [PLFILE[.pl]]

   The font TFMNAME (extended with `.tfm' if necessary) is searched for
in the usual places (*note Supported file formats: (kpathsea)Supported
file formats.).  To see all the relevant paths, set the environment
variable `KPATHSEA_DEBUG' to `-1' before running the program.

   If PLFILE (which is extended with `.pl' if necessary) is not
specified, the property list file is written to standard output.  The
property list file can be converted back to TFM format by the companion
program TFtoPL (see the next section).

   The program accepts the following option, as well as the standard
`-verbose', `-help' and `-version' (*note Common options::):
     Output character codes in the PL file according to TYPE: either
     `octal' or `ascii'.  Default is `ascii' for letters and digits,
     octal for all other characters.  Exception: if the font's coding
     scheme starts with `TeX math sy' or `TeX math ex', all character
     codes are output in octal.

     In `ascii' format, character codes that correspond to graphic
     characters, except for left and right parentheses, are output as a
     `C' followed by the single character: `C K', for example.  In
     octal format, character codes are output as the letter `O' followed
     by octal digits, as in `O 113' for `K'.

     `octal' format is useful for symbol and other non-alphabetic fonts,
     where using ASCII characters for the character codes is merely

   As an example of the output, here is the (abridged) property list
translation of `cmr10.tfm':

     (FACE O 352)
     (DESIGNSIZE R 10.0)
     (CHECKSUM O 11374260171)
        (SLANT R 0.0)
        (SPACE R 0.333334)
        (STRETCH R 0.166667)
        (SHRINK R 0.111112)
        (XHEIGHT R 0.430555)
        (QUAD R 1.000003)
        (EXTRASPACE R 0.111112)
        (LABEL C f)
        (LIG C i O 14)
        (LIG C f O 13)
        (LIG C l O 15)
        (KRN O 47 R 0.077779)
        (KRN O 77 R 0.077779)
        (KRN O 41 R 0.077779)
        (KRN O 51 R 0.077779)
        (KRN O 135 R 0.077779)
        (CHARWD R 0.305557)
        (CHARHT R 0.694445)
        (CHARIC R 0.077779)
           (LIG C i O 14)
           (LIG C f O 13)
           (LIG C l O 15)
           (KRN O 47 R 0.077779)
           (KRN O 77 R 0.077779)

   As you can see, the general format is a list of parenthesized
"properties", nested where necessary.

   * The first few items (`FAMILY', `FACE', and so on) are the
     so-called "headerbyte" information from Metafont, giving general
     information about the font.

   * The `FONTDIMEN' property defines the TeX `\fontdimen' values.

   * The `LIGTABLE' property defines the ligature and kerning table.
     `LIG' properties define ligatures: in the example above, an `f'
     (in the `LABEL') followed by an `i' is a ligature, i.e., a
     typesetting program like TeX replaces those two consecutive
     characters by the character at position octal '014 in the current
     font--presumably the `fi' ligature.  `KRN' properties define
     kerns: if an `f' is followed by character octal '047 (an
     apostrophe), TeX inserts a small amount of space between them:
     0.077779 times the design size the font was loaded at (about
     three-quarters of a printer's point by default in this case, or
     .001 inches).

   * The `CHARACTER' property defines the dimensions of a character: its
     width, height, depth, and italic correction, also in design-size
     units, as explained in the previous item.  For our example `f',
     the depth is zero, so that property is omitted.  TFtoPL also
     inserts any kerns and ligatures for this character as a comment.