This file is ./README.METAFONT This distribution contains the following programs: ./TeX3.0/mf/metafont version 2.0 ./TeX3.0/mfware/gftodvi version 3.0 ./TeX3.0/mfware/gftopk version 2.2 ./TeX3.0/mfware/gftype version 3.0 ./TeX3.0/mfware/mft version 2.0 ./TeX3.0/fontutil/pktogf version 1.0 ./TeX3.0/fontutil/pktype version 2.2 They will automatically be made for you when you use the default WEB-to-C compilation for TeX. Just as the compilation of TeX produces two programs "initex" and "virtex," the compilation of METAFONT produces "inimf" and "virmf." The "inimf" program is used for precompiling macros to be dumped into a ".base" file, which will be read by "virmf" for font production. The following subdirectories of ./TeX3.0 contain utilities and files needed to run METAFONT: ./mf: Contains the WEB source for METAFONT, and its changefiles. ./mf/MFtrap: Contains the TRAP acceptance test for METAFONT. The systems listed in ./TeX3.0/MACHINES have passed this test unless otherwise noted (also see the file ./TeX3.0/PROBLEMS). ./mf/MFwindow: Contains Metafont window support programs for x10, x11, Tektronix, HP2627, and Sun windows. ./mfware: gftodvi is used to produce proof sheets for fonts. It can operate in two modes: producing "normal" proof sheets (using a "gray" font to produce a stippled pattern where the character is black), or producing "smoke" proofs, which are solid black where the character is black. The characters are printed one per page, magnified by however much the gray/black fonts expand one pixel (e.g. a 4x4 pattern representing one pixel in a gray font will cause the proof sheet to appear magnified linearly 4 times in each dimension). Optionally, normal proof sheets can have labels printed marking the path points used to construct the character. These options are all controlled by special directives embedded in the GF file -- look at plain.mf to see where "special" directives are used. The output of gftodvi is a DVI formatted file ready for post- processing by your favorite output device. gftopk is a program that takes a GF file (the output from METAFONT) and produces a smaller PK (packed) file for use on printers and previewers. gftype is a program to display the contents of a "GF" (Generic Font) file in symbolic form or in bit-map image, or both. It can be used to validate a GF font file, for if gftype can read the file, the font file is not corrupt. It is similar to DVItype for TeX. mft is analogous to weave. It takes a *.mf source file (often with a few extra formatting lines) and converts it to a formatted *.tex file. The published mf files in Computers and Typesetting, Volume E, The Computer Modern Fonts, illustrate the effects of this formatting. ./fontutil pktype is analogous to gftype. It translates a PK font file to a file that humans can read. It can also be used to validate a PK font file, for if pktype can read it, it is not corrupt. pktogf is analogous to gftopk. It takes a font file in PK format and converts it into a GF font file. The less said about pxl files the better. Rather than expend effort on conversions to the obsolete pxl format, put the effort into making any remaining programs read PK format instead. ./MFtexfiles: Contains the file "testfont.tex", used to print font sample sheets and display some typical inter-character spacing combinations that usually need adjustment when designing fonts. Also the macro files for the mft formatter which can produce typeset versions of mf input files. ./MFdoc: Contains a copy of an older document, "syntax.tex", which describes the syntax of the new METAFONT language. This file is out of date with the current implementation, but not excessively so to make it obsolete. A much better document to use when learning METAFONT is The METAFONTbook, (ISBN 0-201-13445-4 or ISBN 0-201-13444-6 [soft]) published by Addison Wesley. To conserve space, almost all the documentation is compressed. If you do not have the compress utility on your system, see the ./compress directory on this distribution. ./Man-pages: Nroff/troff source for Unix manual pages. The font source file directories are: ./utilityfonts ./cmfonts ./LaTeXfonts ./amsfonts (actually, this has fonts but no sources). ./utilityfonts/bases Contains the "base" definitions for METAFONT. Includes plain.mf, which is virtually indispensable for all uses of METAFONT. (The PLAIN base is analogous to the PLAIN macro set under TeX -- it is a set of low-level definitions that are useful for developing fonts, and are described in The METAFONTbook.) There are two collections of "mode_def"s: U_Wash.mf and waits.mf. U_Wash.mf includes macros for mode-specials to record basic mode_def parameters in the GF file. Waits.mf is the original from Stanford University, but it reflects aspects of the SAIL operating system, rather than the Unix environment. ./utilityfonts/* Contains the subdirectories, "gray", "black" and "slant." These fonts are used by the gftodvi utility to produce font proof sheets containing a magnified image (one per page) of the characters in a font. Look in gray.mf to see how to tailor it and produce a gray font for your specific output devices. Additional subdirectories are "logo", "mfbook", "half" and "committee." The "logo" fonts are for the characters in the trademarked form of the name METAFONT. (For the cm production files, see ./cmfonts.) The "mfbook" directory contains some of the examples from the METAFONTbook. The "half" directory provides a font for halftones. The "committee" font is the end product of the font-design class held at Stanford in the spring of 1984 (described in the second issue of Volume 5 [1984] of TUGboat). It is included to be an example of how the METAFONT84 language is used. It does NOT require the PLAIN base to be loaded -- it has its own base (font1base.mf) file to work from, and needs to be edited to set it up for a specific output device resolution and point size, or to produce proof sheets. METAFONT Installation Guide: ============================ Be sure to read the man-page on METAFONT (./TeX3.0/Man-page/mf.1). --------------------------------------------------- NOTE: If you are running a write-white machine, such as the Imagen 24/300 or the DEC LN03, be sure to read ./TeX3.0/README.WRITE-WHITE. --------------------------------------------------- 1. If you have done the default compilation, following the instructions for making TeX in ./TeX3.0/README, go to Step 6. If not, place yourself in the directory ./TeX3.0, and edit the file site.h to suit your system. Pay particular attention to the following search-path definitions for METAFONT: #define MFINPUTS ".:/usr/local/lib/mf/inputs" #define MFBASES ".:/usr/local/lib/mf/bases" #define MFPOOL ".:/usr/local/lib/mf" Note that these paths are advisory, not absolute, for we cannot dictate the organization of your /usr partition. (If you substitute the C-shell "setenv" command for "#define" you can ensure that your environment matches your decisions here, and you can "set" and "export" these equivalences in the Bourne shell.) Whatever changes you make in the paths, it is advisable to retain the dot preceding the colon so that TeX and METAFONT will always search your current directory first. Be sure to attend to the METAFONT graphics window options. 2. Edit the master makefile: Be sure to define your C compiler correctly. If you are not using gcc, and if you prefer, you could define your C compiler at the same time that you give your "make" command, by typing % make CC="cc" (The "%" is presumed to be your C-shell prompt. It will probably be "$" if you are in the Bourne shell. The example assumes that you are using cc.) Be sure to give the necessary values to wlibs= for METAFONT window support. For example, if you are running SunView, modify the line to read wlibs=$(sunlib). Check the paths following "INSTALL=cp" for bindir, mfpooldir, and basedir. They should match with your search-path definitions in site.h. Comment out the line (place a "#" sign in front of it) that defines all the directories to be made, and add the following line to the file: alldirs=web mf mfware fontutil This assumes that you wish to make all the programs mentioned at the beginning of this README file. Finally, after the target "install," comment out the lines that do not refer to the "alldirs" directories you defined above. 3. Prepare the areas for compilation: a. Make a directory named /usr/local/lib/mf (or whatever you defined in site.h as your MFPOOL environment). MFPOOL defines the path to the file "mf.pool" which is needed for the execution of inimf. b. Make a subdirectory called /usr/local/lib/mf/bases (or whatever you defined as your MFBASES environment). MFBASES defines the path to the *.base files, which are predigested macro files analogous to the *.fmt files used by TeX. They are produced when the command |dump| is issued during a run of inimf. A site which makes active use of METAFONT as a design tool should expect to have a number of *.base files available, far more than the normal two or three *.fmt files needed for TeX. c. Make a subdirectory called /usr/local/lib/mf/inputs (or whatever you defined as your MFINPUTS environment). MFINPUTS is where inimf and virmf will expect to find *.mf files. Most active users of METAFONT (that is to say, those who are using the program for the designing of fonts) are likely to have special paths in their MFINPUTS environment variable. 4. Look at the script Install_INPUTS, and edit it--if necessary--to suit your site. What you wish to have done by running this script is the following: To have the contents of ../cmfonts/mf copied into your MFINPUTS directory. To have the contents of ../LaTeXfonts/mf copied into this directory if you are a LaTeX user, or if you wish to print a copy of the manual for the PostScript driver (in ./DVIware/laser-setters/dvi-to-ps/TeXPS). To have the contents of ../utilityfonts/bases copied into this directory. To have the other *.mf files in ../utilityfonts-- notably the special files in the subdirectories for black, gray, half (i.e., halftone), and the slant fonts --copied into your MFINPUTS directory. If you wish to render inactive the lines not necessary for the installation of these files, place a hash mark (#) in front of the unnecessary lines. Run the script by typing its name at your prompt. 5. In the directory ./TeX3.0, type % make followed by % make install followed by % rehash or whatever you must do to make the newly installed programs available to you. 6. Go to your primary MFINPUTS directory. Copy the file U_Wash.mf to your own choice of *.mf name (in the following discussion, we shall call this file -modes.mf). Inspect this file to see that it includes a definition for a mode (i.e., a mode-def) for an output device corresponding to the device on which you will be generating fonts. For example: if you have an Apple LaserWriter, you will need a mode-def for its Canon CX engine. Also check to see that "localfont:=" at line 193 names the mode for your device. If you are lucky in this respect, you will be able to use the file more or less unchanged. Remember that write-white devices take special care. If you have another device at another resolution, you can usually get a good idea where to start by looking at the various device-support sections of this file. The blacker and fillin values are the most difficult to set, and you may wish to make several tries at different settings on a range of magsteps before you decide on the values. (To learn more about mode-defs, see The METAFONTbook.) If nothing in this file suits your site, know that several well-tested |mode_def|s can be found in issues of TUGboat, the journal of the TeX Users Group. 7. You will now need a number of short driver files to create the *.base files for various styles of font generation. Write these driver files in your MFINPUTS directory. They should contain nothing but a list of input commands. They should be given informational names which will be applied to the resulting base file. For example: with the aim of generating Computer Modern fonts, you might write a driver file called cmmf.mf, which will be used by inimf to make the cmmf.base file (which will then be used by virmf for the generation of Computer Modern fonts). The cmmf.mf driver file should contain only the following three lines: input plain input -modes input cmbase Another example: a driver file called mf.mf could be used to generate the base for the various utilityfonts-- gray, black, and slant fonts for proof sheets, and for the halftone font for your local device. The mf.mf driver file should contain only two statements: input plain input -modes The same driver file could be used to produce the METAFONT logo characters. This is also the driver file you would use for the production of line and circle fonts for LaTeX. If you have not already done so, you really should take the time now to read ./TeX3.0/Man-pages/mf.1 8. Change to your MFBASES directory, to dump your *.base files. To make the cmmf.base file, type % inimf cmmf dump To make the mf.base file, type % inimf mf dump 9. Go to your BINDIR and hard link virmf to the names cmmf and mf. Type % rehash or do whatever is necessary to make cmmf and mf available to you. You are now ready to run METAFONT--either as cmmf to generate Computer Modern fonts, or as mf for any number of other fonts. Running METAFONT ================ To keep the discussion brief, we shall focus solely on the steps necessary to generate Computer Modern fonts. Begin with the following command line: % cmmf '\mode=localfont; \mag=magstep?;' input cm*? Since cmmf is linked to virmf, you are here actually invoking the production version of METAFONT called virmf. The new version of METAFONT looks at the name under which it was invoked--in this instance, "cmmf." It then adds the suffix ".base" to it, and loads the right base file for you--in this instance, cmmf.base. Thus, with the advent of METAFONT 2.0, you no longer need to type something like "virmf '&cmmf'" to get virmf to load the base file which inimf had dumped from your cmmf.mf driver file. That driver file was the one you wrote with three input lines calling for the plain.mf file, your -modes.mf file, and the cmbase.mf file. You need only type "cmmf," and the production version of METAFONT for the making of Computer Modern fonts is invoked. Notice the backslashes. These are a METAFONT convention which masks words such as "mode" that might otherwise be read as the name of initial input file. If you use backslashes appropriately, your output will be named by the name of the first "input" file. Recall that "localfont" was defined by you at line 193 of your -modes.mf file. It tells METAFONT which mode-def to use for the generation of these fonts. If you do not supply a mode, or if localfont, or any other name fails to evaluate to a valid constant, mode will be set to 0 and you will get proof copy. Proof copy can be recognized by the gf suffix specific to proof files-- .2602gf. If you see this suffix unexpectedly, you can be pretty sure that you have specified an invalid mode. "magstep" is the magnification at which you want your font to be generated. The ? stands for any digit. For example, 2, if you wish to generate a certain typeface at magstep 2. "input" is, in this case, one of the Computer Modern source files (i.e., one of the cm*?.mf files in your MFINPUTS directory). The * stands for any number of letters (for example, r or bx or mib) which will define the basic name of the typeface you wish to generate--cmr, cmbx, cmmib, etc. The ? stand for any number of digits (for example, 5, 8, or 10) which will complete the name of the typeface you wish to generate--cmr5, cmbx8, cmmib10, etc. Say that you have a printer that uses 300 dpi fonts in pk format. And say that you have a TeX file calling for the Computer Modern font called cmbx12 at magstep 1. When you check your pk fonts directory, you will discover that the only cmbx12 rastered font you have (for reasons given in the primary README file, ./TeX3.0/README) is cmbx12.300pk--i.e., cmbx12 at magstep 0. What you need in order to print your document is the rastered font cmbx12.360pk. The command line for generating that font in gf format (always the output of METAFONT) is % cmmf '\mode=localfont; \mag=magstep1;' input cmbx12 To convert cmbx12.360gf to pk format, use the mfware utility gftopk % gftopk cmbx12.360gf If you have an environment for which you wish to make a full set of fonts for LaTeX, be sure to see the makefiles in ../LaTeXfonts/gf. To convert the gf output to pk format, see the scripts in ../LaTeXfonts/pk. We recommend testing a newly generated font before placing it in its home directory. * * * * * * * * Enjoy METAFONT! * * * * * * * * To experience all the joys of METAFONT, be sure to get a copy of The METAFONTbook.