creates single-master fonts from multiple master fonts
mmpfb [OPTIONS...] font
Mmpfb creates a normal, single-master PostScript font from a multiple master font by interpolation. You pass it a PFB or PFA font and options specifying the design point you want; it writes the resulting PFB or PFA font to the standard output.
The fonts mmpfb creates are interpolated at a low level to remove multiple master instructions from individual characters. Therefore, they can be used by programs that don’t normally understand multiple master fonts, like ps2pk(1).
Mmpfb supports fonts with intermediate masters, like Adobe Jenson and Kepler. It can also create AMCP (Adobe Multiple Master Conversion Program) files for use by mmafm(1); see --amcp-info below.
The font argument is either the name of a PFA or PFB font file, or a PostScript font name. If you give a font name, mmpfb will find the actual outline file using the PSRESOURCEPATH environment variable. This colon-separated path is searched for ‘PSres.upr’ files, an Adobe method for indexing PostScript resources.
You can also give the name of a multiple master font instance, like ‘MinionMM_367_400_12_’. Mmpfb will parse the font name and create that instance for you. ‘PSres.upr’ files must be set up for this to work.
% mmpfb --weight=400 --width=600 MyriadMM.pfb > MyriadMM_400_600_.pfb
Long options may be abbreviated to their unique prefixes.
The "IBM" Type 1 font interpreter shipped as part of the X font server and ps2pk (among others) is inappropriately strict about PostScript code embedded in a font. The --minimize option (now the default) fixes this problem.
Some versions of Adobe Acrobat Distiller may report "Warning: unable to embed font X. Invalid character outline data" when distilling an instance generated by mmpfb. This is due to a limitation in the number of font subroutines Distiller can accept. (Multiple master fonts, and the single-master fonts generated by mmpfb, tend to have a lot of subroutines.) Try limiting the number of subroutines in the generated font with the --subrs option.
Eddie Kohler, firstname.lastname@example.org
The latest version is available from:
Thanks to Melissa O’Neill for suggestions and patient debugging.