18) How do I get METAFONT to do what I want it to do? METAFONT allows you to create your own fonts, and ordinary TeX users will never need to use it. METAFONT, unlike TeX, requires some customization. Each output device for which you will be generating fonts needs a mode associated with it. Modes are defined using the mode_def convention described on page 94 of _The METAFONTbook_. So first create a file, which we will call local.mf, containing all the mode_defs you will be using. The file modes.mf by Karl Berry, available via anonymous ftp from ftp.cs.umb.edu (192.12.26.23) in ./pub/tex is a good starting point for this. Listings of settings for various output devices are also published periodically in TUGboat (see question 11). Now create a plain base file using inimf, plain.mf, and local.mf: % inimf This is METAFONT.... **plain # you type plain (output) *input local # you type this (output) *dump # you type this Beginning to dump on file plain.... (output) % This should create a base file named plain.base (or something close) and should be moved to the directory which contains the base files on your system. Now you need to make sure METAFONT loads this base when it starts up. If METAFONT loads the plain base by default on your system, then you're ready to go. Under Unix, we might, for instance define a command mf which executes ``virmf &plain,'' loading the plain base file. The usual way to create a font with plain METAFONT is to then start it with the line \mode=; mag=; input in response to the * prompt or on the METAFONT command line. If is unknown or omitted, then the mode defaults to proof mode. If this has happened METAFONT will produce an output file called .2602gf. The is a floating point number or magstep (magsteps are defined in _The METAFONTbook_ and _The TeXbook_). If mag= is omitted, then the default is 1. For example, to generate cmr10 at 12pt for an epson printer you would type mf \mode=epson; mag=1.2; input cmr10 Note that under Unix the '\' and ';' characters must usually be escaped, so this would typically look something like mf \\mode=epson\; mag=1.2\; input cmr10 If you don't have inimf or need a special mode that isn't in the base, you can put its commands in a file (e.g., ln03.mf) and invoke it on the fly with the \smode command. For example, to create ln03.300gf for an LN03 printer, using the file % This is ln03.mf as of 2/27/90 % mode_def courtesy of John Sauter proofing:=0; fontmaking:=1; tracingtitles:=0; pixels_per_inch:=300; blacker:=0.65; fillin:=-0.1; o_correction:=.5; (note the absence of the mode_def and enddef commands), you would type mf \smode="ln03"; input cmr10