LCDF Type Software


autofont-mktextfm Manual

ie succie succ.\}


create a TFM file for a font (Autofont version)


autofont-mktextfm font


autofont-mktextfm generates a TFM file for a given font name. The Autofont version is designed for PostScript Type 1 fonts. It generates TFM and VF files automatically from Adobe AFM files. It also modifies dvips’s configuration files to support any fonts it creates.

autofont-mktextfm takes the same arguments as mktextfm(1), and like that program, it is designed to be called automatically by tex(1) and related programs. To facilitate this, you should probably install a symbolic link in your path so that ‘mktextfm’ actually runs autofont-mktextfm. Leave the original mktextfm later in your path; autofont-mktextfm will run it for Metafonts and other fonts it cannot process itself.

autofont-mktextfm depends on PostScript PSres.upr files generated by autofont-mkpsres(1) or makepsres(1).


autofont-mktextfm assumes that TeX font names for PostScript fonts equal the relevant PostScript font names. (It does not adhere to the “fontname” standard that brought you pacrx.) Thus, the TeX font name Times-Roman corresponds to the PostScript Times-Roman font.

You can abbreviate font names in the Macintosh style if you prefer. This style eliminates all dashes from the font name, then preserves at most five characters from the first “word” and three characters from each succeeding “word” in the resulting name, where “words” are delimited by capital letters and/or digits. Thus, autofont-mktextfm will map TimesRom to Times-Roman, ACasReg to ACaslon-Regular, and LetteGot12PitBTRom to LetterGothic12PitchBT-Roman.

Autofont can also handle multiple-master fonts. To name a multiple-master font, append the numbers specifying the desired font instance to the font name, surrounded and separated by underscores. For example, AJensonMM_454_66_ specifies a version of Adobe Jenson with weight 454 and optical size 66. The final underscore is required.


autofont-mktextfm can parse and execute instructions embedded in a font name. Each instruction follows two dashes --. For example, Times-Roman--sl16 denotes an artificially slanted version of Times-Roman, and Helvetica--E8r--cn80--fsc denotes a version of Helvetica in the 8r encoding, condensed by 80%, and with faked small caps.

Specific instructions are:

Use old-style figures taken from a corresponding expert, OsF, or small-caps font.
Use titling figures taken from a normal font. This was designed for creating small-caps fonts with titling figures.
Use figures taken from a corresponding expert font (raw encoding).
Use small caps taken from a corresponding expert font.
Include faked small caps (scaled-down versions of the regular caps).
Use swash caps taken from a corresponding swash or swash-caps font.
Include f-ligatures taken from a corresponding expert font.
Do not use any f-ligatures, not even fi or fl.
Slant the output by FACTOR. A FACTOR of 167 means slant characters by one-sixth to the right; 0 is normal.
Expand the output by PERCENT. 200 creates a font twice as wide as the base; 100 is normal; 50 creates a font half as wide.
Same as --exPERCENT.
Letterspace the output by SPACING. A SPACING of 20 adds .020 em of width to each character.
Increase the font’s space stretch value by PERCENT. 200 creates a font with twice as much space stretch as usual.
Re-encode the font with ENCODING. autofont-mktextfm will search for an encoding file named ENCODING.enc on the encoding path.
Any unknown instruction is assumed to be an encoding.

autofont-mktextfm uses some simple heuristics to find the expert font name corresponding to a normal font name. Please report a bug if these heuristics fail on some font.


autofont-mktextfm writes its output files into a TeX Directory Structure hierarchy. It first searches your $TEXMF path for the first writable directory. In many web2c-based installations, this will be your "$HOME/texmf" directory. Then it places output files in type-specific specific subdirectories:

 File type    Directory                           Filename
 TFM          TEXMF/fonts/tfm/autofont/TYPEFACE/  WHATEVER.tfm
 VF           TEXMF/fonts/vf/autofont/TYPEFACE/   WHATEVER.vf  TEXMF/dvips/              

TEXMF is the writable TeX Directory Structure. TYPEFACE is the font’s family name, or “unknown” if that name cannot be determined. autofont-mktextfm will also update TEXMF/ls-R as required to reference any files it created.

Thus, to support autofont, you should do at least the following:

  1. Make sure your $TEXMF path contains a writable directory.
  2. Include in your dvips(1) configuration files, usually by including a line like this in

  3. Run autofont-mkpsres in the directory or directories that contain your fonts.
  4. Make sure that dvips can find your fonts, by adding their directory or directories to your T1FONTS and/or TEXPSHEADERS environment variables.


autofont-mktextfm uses environment variables and the Kpathsea library (see kpsewhich(1)) to locate resources and to determine where to place its generated output. In particular:

PSres.upr files
Searches kpathsea’s Type 1 font path (usually T1FONTS).
Encoding files (like 8r.enc)
Searches kpathsea’s TEXPSHEADERS path.
Default encoding
Uses TEXDEFAULTENCODING, which defaults to 8r. This encoding is used for fonts without an explicit encoding specification.
Other mktextfm scripts
Searches PATH.
TFM output files
Places in TFMDESTDIR, which defaults to “fonts/tfm/autofont/TYPEFACE” in TEXMF.
VF output files
Places in VFDESTDIR, which defaults to “fonts/vf/autofont/TYPEFACE” in TEXMF.
afm2tfm, vptovf, and mmafm programs
Uses AFM2TFM, VPTOVF, and MMAFM, which default to afm2tfm, vptovf, and mmafm, respectively.
Downloading fonts
By default all fonts are downloaded. If the TEXNODOWNLOADFONTS environment variable is set, then the 13 basic PostScript fonts are not downloaded.


Report bugs and send patches and enhancement requests to


mktextfm(1), tex(1), kpsewhich(1), afm2tfm(1), mmafm(1), dvips(1), autofont-mkpsres(1), makepsres(1)


Eddie Kohler,

See <> for updates, and for the mminstance package, which contains mmafm.


Hey! The above document had some coding errors, which are explained below:

Around line 698:
You forgot a ’=back’ before ’=head1’

 Back to LCDF Type Software