MF(1)                                                       MF(1)

NAME
       mf,  inimf, virmf - Metafont, a language for font and logo
       design

SYNOPSIS
       mf [options] [commands]

DESCRIPTION
       This manual page is not meant to be exhaustive.  The  com-
       plete  documentation  for this version of TeX can be found
       in the info file or manual Web2C: A TeX implementation.

       Metafont reads the program in the specified files and out-
       puts  font rasters (in gf format) and font metrics (in tfm
       format).   The  Metafont  language  is  described  in  The
       Metafontbook.

       Like  TeX,  Metafont is normally used with a large body of
       precompiled macros,  and  font  generation  in  particular
       requires the support of several macro files.  This version
       of Metafont looks at its command line to see what name  it
       was  called  under.   Both inimf and virmf are symlinks to
       the mf executable.  When called  as  inimf  (or  when  the
       --ini option is given) it can be used to precompile macros
       into a .base file.  When called as virmf it will  use  the
       plain  base.   When  called under any other name, Metafont
       will use that name as the name of the base to  use.    For
       example,  when  called as mf the mf base is used, which is
       identical to the plain base.  Other bases than  plain  are
       rarely used.

       The  commands  given  on  the command line to the Metafont
       program are passed to it as the first input line.  (But it
       is  often  easier  to type extended arguments as the first
       input line, since UNIX shells tend to gobble up or  misin-
       terpret  Metafont's  favorite  symbols,  like  semicolons,
       unless you quote them.)  As described in The Metafontbook,
       that  first  line  should  begin  with a filename, a \con-
       trolsequence, or a &basename.

       The normal usage is to say

              mf  '\mode=<printengine>; [mag=magstep(n);]' input
              font

       to  start  processing  font.mf.  The single quotes are the
       best way of keeping the Unix  shell  from  misinterpreting
       the semicolons and from removing the \ character, which is
       needed here to keep Metafont from thinking that  you  want
       to  produce  a  font called mode.  (Or you can just say mf
       and give  the  other  stuff  on  the  next  line,  without
       quotes.)  Other  control sequences, such as batchmode (for
       silent operation) can also appear.  The name font will  be
       the ``jobname'', and is used in forming output file names.
       If Metafont doesn't get a file name in the first line, the
       jobname  is  mfput.   The  default  extension, .mf, can be
       overridden by specifying an extension explicitly.

       A log of error messages goes into  the  file  jobname.log.
       The  output  files are jobname.tfm and jobname.<number>gf,
       where <number> depends on the resolution and magnification
       of  the  font.   The mode in this example is shown generi-
       cally as <printengine>, a symbolic term for which the name
       of  an actual device or, most commonly, the name localfont
       (see below) must be substituted. If the mode is not speci-
       fied  or is not valid for your site, Metafont will default
       to proof mode which produces large  character  images  for
       use in font design and refinement.  Proof mode can be rec-
       ognized by the suffix .2602gf after the jobname.  Examples
       of proof mode output can be found in Computer Modern Type-
       faces (Volume E of Computers and Typesetting).  The system
       of  magsteps  is identical to the system used by TeX, with
       values generally in the range 0.5, 1.0, 2.0, 3.0, 4.0  and
       5.0.   A  listing  of  gf numbers for 118-dpi, 240-dpi and
       300-dpi fonts is shown below.

       Magnification can also be specified not as a  magstep  but
       as  an  arbitrary  value, such as 1.315, to create special
       character sizes.

       Before font production can begin, it is necessary  to  set
       up  the appropriate base files.  The minimum set of compo-
       nents for font production for a given print-engine is  the
       plain.mf  macro  file  and  the  local mode_def file.  The
       macros in plain.mf can be studied in an  appendix  to  the
       Metafontbook;  they were developed by Donald E. Knuth, and
       this file should never be altered except when it is  offi-
       cially  upgraded.  Each mode_def specification helps adapt
       fonts to a particular print-engine.  There  is  a  regular
       discussion of mode_defs in TUGboat, the journal of the TeX
       Users Group.  The local  ones  in  use  on  this  computer
       should be in modes.mf.

       The  e  response to Metafont's error-recovery mode invokes
       the system default editor at the  erroneous  line  of  the
       source  file.   There  is an environment variable, MFEDIT,
       that overrides the default editor.  It  should  contain  a
       string  with  "%s"  indicating where the filename goes and
       "%d" indicating where  the  decimal  linenumber  (if  any)
       goes.  For example, an MFEDIT string for the vi editor can
       be set with the csh command
              setenv MFEDIT "/usr/ucb/vi +%d %s"

       A convenient file in the library  is  null.mf,  containing
       nothing.   When  mf can't find the file it thinks you want
       to input, it keeps  asking  you  for  another  file  name;
       responding  `null'  gets  you out of the loop if you don't
       want to input anything.

ONLINE GRAPHICS OUTPUT
       Metafont can use most modern displays, so you can see  its
       output  without  printing.  Chapter 23 of The Metafontbook
       describes what you can do.  This implementation  of  Meta-
       font uses environment variables to determine which display
       device you want to use.  First it  looks  for  a  variable
       MFTERM,  and  then for TERM.  If it can't find either, you
       get no online output.  Otherwise, the value of  the  vari-
       able  determines  the  device to use: hp2627, sun (for old
       SunView), tek, uniterm (for an Atari ST  Tek  4014  emula-
       tor),  xterm  (for  either  X10  or  X11).   Some of these
       devices may not be supported in all Metafont  executables;
       the choice is made at compilation time.

OPTIONS
       This version of Metafont understands the following command
       line options.

       --base base
              Use base as the  name  of  the  base  to  be  used,
              instead of the name by which Metafont was called or
              a %& line.

       --help Print help message and exit.

       --ini  Be inimf, for dumping  bases;  this  is  implicitly
              true if the program is called as inimf.

       --interaction mode
              Sets  the interaction mode.  The mode can be one of
              batchmode, nonstopmode, scrollmode, and  errorstop-
              mode.   The  meaning  of these modes is the same as
              that of the corresponding commands.

       --kpathsea-debug bitmask
              Sets path searching debugging  flags  according  to
              the  bitmask.  See the Kpathsea manual for details.

       --maketex fmt
              Enable mktexfmt, where fmt must be mf.

       --no-maketex fmt
              Disable mktexfmt, where fmt must be mf.

       --progname name
              Pretend to be program name.  This affects both  the
              format used and the search paths.

       --translate-file tcxname
              Use the tcxname translation table.

       --version
              Print version information and exit.

ENVIRONMENT
       See the Kpathsearch library documentation (the `Path spec-
       ifications' node) for the details of how  the  environment
       variables  are  use when searching.  The kpsewhich utility
       can be used to query the values of the variables.

       If the environment variable TEXMFOUTPUT is  set,  Metafont
       attempts  to put its output files in it, if they cannot be
       put in the current directory.  Again, see tex(1).

       MFINPUTS
              Search path for input and openin files.

       MFEDIT Command template for switching to editor.

       MFTERM Determines the online graphics display.  If  MFTERM
              is not set, and DISPLAY is set, the Metafont window
              support for X is used.  (DISPLAY must be set  to  a
              valid  X  server specification, as usual.)  If nei-
              ther MFTERM nor DISPLAY is set,  TERM  is  used  to
              guess the window support to use.

FONT UTILITIES
       A number of utility programs are available.  The following
       is a partial list of available utilities  and  their  pur-
       pose.  Consult your local Metafont guru for details.

       gftopk   Takes  a  gf  file  and  produces  a more tightly
                packed pk font file.

       gftodvi  Produces proof sheets for fonts.

       gftype   Displays the contents of a gf file  in  mnemonics
                and/or images.

       pktype   Mnemonically  displays the contents of a pk file.

       mft      Formats a source file as shown in Computer Modern
                Typefaces.

FILES
       mf.pool
              Encoded text of Metafont's messages.

       *.base Predigested Metafont base files.

       $TEXMFMAIN/metafont/base/plain.mf
              The standard base.

       $TEXMFMAIN/metafont/misc/modes.mf
              The  file  of  mode_defs  for  your  site's various
              printers

SUGGESTED READING
       Donald E. Knuth, The Metafontbook (Volume C  of  Computers
       and     Typesetting),     Addison-Wesley,    1986,    ISBN
       0-201-13445-4.
       Donald E. Knuth, Metafont: The Program (Volume D  of  Com-
       puters   and   Typesetting),  Addison-Wesley,  1986,  ISBN
       0-201-13438-1.
       Donald E. Knuth, Computer Modern Typefaces  (Volume  E  of
       Computers  and  Typesetting),  Addison-Wesley,  1986, ISBN
       0-201-13446-2.
       TUGboat (the journal of the TeX Users Group).

COMMENTS
       Warning: ``Type design can  be  hazardous  to  your  other
       interests.   Once you get hooked, you will develop intense
       feelings about letterforms; the medium will intrude on the
       messages  that  you  read.   And  you  will perpetually be
       thinking of improvements to the fonts that you see  every-
       where, especially those of your own design.''

SEE ALSO
       gftopk(1),   gftodvi(1),   gftype(1),  mft(1),  pltotf(1),
       tftopl(1).

BUGS
       On January 4, 1986 the ``final'' bug in Metafont was  dis-
       covered  and removed. If an error still lurks in the code,
       Donald E. Knuth promises to pay a finder's fee which  dou-
       bles  every  year to the first person who finds it.  Happy
       hunting.

AUTHORS
       Metafont was designed by Donald E. Knuth, who  implemented
       it using his Web system for Pascal programs.  It was orig-
       inally ported to Unix by Paul Richards at  the  University
       of  Illinois  at  Urbana-Champaign.   This page was mostly
       written by Pierre MacKay.

Web2C 7.3                 29 March 1999                         1