mftrace 1.1.17 review

by on

mftrace is a small Python program that lets you trace a TeX bitmap font into a PFA or PFB font (A PostScript Type1 Scalable Font) or

License: GPL (GNU General Public License)
File size: 57K
Developer: Han-Wen Nienhuys
0 stars award from

mftrace is a small Python program that lets you trace a TeX bitmap font into a PFA or PFB font (A PostScript Type1 Scalable Font) or TTF (TrueType) font.

Scalable fonts offer many advantages over bitmaps, as they allow documents to render correctly at many printer resolutions. Moreover, Ghostscript can generate much better PDF, if given scalable PostScript fonts.

mftrace project is licensed under the GNU GPL.

A tracing program: autotrace >= 0.30
Python–2.1 or later
TeX–your tex installation should include


Install the prerequite packages. Then run

make install

in the mftrace directory. Run as follows:

mftrace cmr10


Command line options:

A comma-separated list of formats to generate. Choices include: AFM, PFA, PFB, TTF and SVG. Default is to generate a PFA file. Note that fontforge (formerly called pfaedit) needs to be installed in order to generate any format except PFA or PFB. For generating AFM you need either fontforge or ghostscript.
Use encoding file enc. Encoding files used by mftrace are basically in the GhostScript/dvips format, but you may use a special .notavail glyph name in order to tell mftrace not to process a specific glyph. If this option is not specified, mftrace will try to determine the encoding file automatically, from the encoding specified in the TFM file.
Only process glyphs in list, which is a comma-delimited list of decimal numbers or ranges.
--glyphs 1-10,50,55,90-100

= Take glyphs from file name.
--grid gridsize
Set reciprocal grid size in em units multiplied by ratio magnification/1000. For example --grid 10 --magnification 1000 will round coordinates of control points to 1/10 of em unit. Useful simultaneously with --noround option. Default gridsize value is 1, i. e. round to integer.
help on options.
Retain all temporary files in the directory mftrace.dir/. This is useful for debugging problems.
Try to continue if external programs called by mftrace fail. If METAFONT crashes with overflow errors, but nevertheless outputs a GF file, try to process its output as is (useful for some buggy fonts, see below). If potrace/autotrace fails to trace a specific character, first try it with a less smoothed curve, and if that fails, skip the character.
By default mftrace outputs trace-bug-FONTNAME-NUMBER.pbm and stops the process with a request to file a bugreport.
The magnification to use for the PFA file. The default is 1000. The larger the more precise the PFA file will be. However, when magnification is too large METAFONT can crash with overflow errors.
Sadly, many MF fonts contain resolution checks if dots_per_inch * design_size > 1500:

This check is susceptible to overflow errors. Such code should be reported as a bug, and changed to if dots_per_inch > (1500 / design_size):

Don't round coordinates of control points to integer values. Useful simultaneously with --grid option. Disabled by default.
Output to FILE.pfa or FILE.pfb.
Pass the font through FontForge for automatic simplification and hinting.
Use file for the TFM file. This file is needed to determine at what resolution to run MetaFont.
Be verbose: print all commands as they are invoked. This is useful for debugging.
Print version number
Try to kludge up the paths coming from MikTeX for a cygwin environment. If this doesn't work, specify --tfmfile and --encoding manually.
show warranty and copyright
use Potrace (default).
use AutoTrace.

Mftrace uses kpathsea for finding fonts, so any kpathsea variable can be used to fine-tune which files should be loaded. For example, you can set MFINPUTS to specify which paths to search for .mf files.

Mftrace tries to fill in sensible values for the FontFamily, FullName and Weight fields. It does so by guessing values for the CM font series. For other fonts, it tries to read an AFM file (which is not likely to exist). Suggestions for a more generic way to handle this are welcome.

Additional options may be passed to the backend program (potrace or autotrace) with the MFTRACE_BACKEND_OPTIONS environment variable.

mftrace 1.1.17 keywords