MF(1)

MF(1)

mev Home Page User Commands Index mformat


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

SYNOPSIS
       mf [ first line ]

       inimf [ first line ]

       virmf [ first line ]

DESCRIPTION
       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.  The basic
       program as compiled is called inimf; it  can  be  used  to
       precompile macros into a .base file.  The virmf variant is
       used to reload the .base files quickly.  Typically,  virmf
       has  links  to  it by the names of the various base files.
       For example, if you link virmf to foo and then execute the
       program foo, you get the base file foo.base.  You can load
       a different base by saying, e.g., virmf &mybase.

       As described in The Metafontbook,  the  command  line  (or
       first  input line) should otherwise begin with a file name
       or a \controlsequence.  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.&lt;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 /usr/lib/texmf/texmf/metafont/modes.mf.  With
       only plain.mf and the modes file loaded it is possible  to
       create  fonts of simple characters, such as those used for
       the Metafont logo, and those used for the LaTeX  line  and
       circle  fonts, but the production of Computer Modern fonts
       would  be  speeded  by  making  a  cmmf.base  file  (which
       includes  the  macros  in  cmbase.mf  as  well as those in
       plain.mf).

       Several environment variables can be used to set up direc-
       tory paths to search when Metafont opens a file for input.
       For example, the csh command
              setenv
              MFINPUTS .:~me/mylib:/usr/lib/texmf/texmf/metafont
       or the sh command sequence
              MFINPUTS=.:~me/mylib:/usr/lib/texmf/texmf/metafont
              export MFINPUTS
       would  cause  all  invocations of Metafont and its deriva-
       tives to look for \input files first in the current direc-
       tory,  then in a hypothetical user's mylib, and finally in
       the system library.  Normally, the  user  will  place  the
       command  sequence  which  sets up the MFINPUTS environment
       variable in his or her .login or .profile file.

       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"
       The  ENVIRONMENT section below lists the relevant environ-
       ment variables, and their defaults.

       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 Sun-
       View), tek, uniterm (for an Atari ST Tek  4014  emulator),
       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.

ENVIRONMENT
       The  default  values for all environment variables are set
       at the time of compilation in the  file  kpathsea/paths.h.
       See the Kpathsearch library documentation (the `Path spec-
       ifications' node) for the details of the searching.

       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.
                      Default:
                      .:!!/usr/lib/texmf/texmf/meta-
                      font//:!!/usr/lib/texmf/texmf/fonts/source//:/var/tmp/tex-
                      fonts/source//

       MFBASES        Search   path  for  base  files.   Default:
                      .:!!/usr/lib/texmf/texmf/web2c

       MFPOOL         Search path for Metafont internal  strings.
                      (Used    by    inimf    only.)     Default:
                      .:!!/usr/lib/texmf/texmf/web2c

       MFEDIT         Command template for switching  to  editor.
                      Default: vi +%d %s

       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  neither
                      MFTERM nor DISPLAY is set, TERM is used  to
                      guess the window support to use.

       MAKETEXMF      Analogous to TeX's MAKETEXTEX, q.v.

       USE_MAKETEXMF  Analogous.

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
       /usr/lib/texmf/texmf/web2c/mf.pool
                             Encoded text of Metafont's messages.

       /usr/lib/texmf/texmf/web2c/*.base
                             Predigested Metafont base files.

       /usr/lib/texmf/texmf/metafont/base/plain.mf
                             The standard base.

       /usr/lib/texmf/texmf/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.

mev Home Page User Commands Index mformat