\centerline{\bf Book Review: The \MFb book} \medskip \noindent{\sl The \MF book, Donald E. Knuth, 1986, 361pp. Published by Addison Wesley, price \quid19.95 (paper), \quid29.95 (hard).} \medskip\noindent \MF\ is a computer program written by Donald Knuth for the purpose of designing digital graphic objects, especially fonts of type, in a device independent way. {\sl The\/ \MF book\/} is Knuth's manual for the software. This is a review of the book, not the program! Readers of {\it The \TeX book\/} will feel immediately at home with {\sl The\/ \MF book}. Its style of presentation, design, layout and even the number of chapters and appendices, are the same as its illustrious predecessor. Once again, Knuth is attempting to provide in one book both a tutorial and a reference manual for the software, through his careful and elaborate system of `dangerous bend' paragraphs, and graded exercises and examples. Whether this is a success depends to some degree on one's reading habits: I find I simply cannot stop myself reading at the dangerous bend signs, with the result that I failed to understand quite a lot of the book on the first reading. Subsequent rereadings gradually cleared my mind. The examples are all worth attempting, and teach one as much, if not more, than mere passive reading. Broadly speaking, Chapters 1 to 6 (`The name of the game', `Coordinates', `Curves', `Pens', `Running \MF', `How \MF\ reads what you type') present a gentle introduction to the basic concepts underlying the way \MF works, and a real life example of the design of the uppercase letters I and O (an example file `dedicated to Io, the Greek goddess of input and output'). Thereafter the waters begin to flow more deeply. The five-page chapter on variables leads into two substantial chapters on the mathematical underpinning of \MF\ (`Algebraic expressions' and `Equations'), and a three page chapter on the difference between assignment and equation operations as used in \MF\ (`a person who makes too many assignments is still locked into the habits of old-style ``imperative'' programming languages \dots\ ; \MF's equation mechanism liberates us \dots\ because it lets the computer take over the job of solving equations.'). Chapters 11 to 16 (`Magnification and resolution', `Boxes', `Drawing, filling and erasing', `Paths', `Transformations', `Calligraphic effects') are more closely concerned with graphics and \MF's tools for creating and manipulating images. Chapter 24, `Discreteness and discretion', which deals with the difficult problems of digitisation, really belongs with this group of chapters. As an aside, there is an interesting comment at the beginning of chapter 24, where Knuth says that typefaces produced solely by graphics programs cannot be expected to be as good as those `carefully crafted to look best on a particular output device'. He goes on to say that a small amount of hand-tuning (i.e., pixel editing) will always be necessary to optimise a font for a particular device, but that a good \MF\ program should produce a character in which only half a dozen pixels will need changing. This is very unexpected, for while I think it is true, it apppears to run counter to the whole `meta' idea of universality and device independence which is so central to Knuth's work. In Chapters 17 to 21 (`Grouping', `Definitions (also called macros)', `Conditions and loops', `More about macros', `Random numbers') Knuth turns to the control structures of the \MF language itself. Chapters 22 and 23 (`Strings', and `Online displays') cover \MF's interaction with the graphics terminal which it is addressing. The final three chapters (`Summary of expressions', `Summary of the language', `Recovering from errors') are self explanatory. As with {\it The \TeX book}, much of the meat of this book is to be found in the appendices. Again, they are alphabetically enumerated A--J, with each letter also forming the first letter of the appendix's title (`Answers to all the excercises', `Basic operations', `Character codes', `Dirty tricks', `Examples', `Font metric information', `Generic font files', `Hardcopy proofs', `Index', `Joining the \TeX\ community'). One wonders whether Knuth felt obliged to write eight substantial appendixes just to get to I for Index! I find it slightly annoying that so much of what one needs to know in order to install and run \MF is tucked away in these appendices. For example, the first place in which Knuth explains how to invoke \MF\ to create a real font at a particular magnification is on page 269, in Section 4 of Appendix B! Essential information is not always in the obvious place. The upshot of this is that while reading {\sl The\/ \MF book\/} one has constant recourse to the index, which fortunately is excellent. But any particular installation of \MF\ will need a {\it Local guide\/} (human or printed) to explain such mundane, but definitely non-trivial matters as how to run the program, and how to print proofs. Who is {\sl The\/ \MF book\/} written for? The first buyers of the book will be the members of the \TeX\ community (\TeX ies prepared to boldly go \dots) who are interested in Knuth's work on typesetting and programming for its own sake, and as an extension of the \TeX\ system. These readers may also buy {\sl \MF: the program}, the |WEB| listing of the program itself. Another class of readers are those who use \TeX\ with Knuth's Computer Modern (CM) series of fonts, and who wish to use \MF\ to generate extra sizes or styles of these fonts, or to create the occasional graphic symbol or logo. These readers may also wish to buy the {\sl Computer Modern Typefaces\/} ({\sl CMT\/}) volume, in which Knuth sets out the \MF\ programs for the 500 or so characters of the CM fonts, together with listings of their parameters and related files. These programs accompany all distributions of \MF\ itself, so with the two books it is relatively easy to generate various extra fonts for any output device driver. A third class of reader is that small band of indefatigable optimists who contemplate creating a complete new font. Knuth says in the preface of {\sl The\/ \MF book\/} that `a person or a team of persons should expect to spend a year or more on the project if the type is actually supposed to look right.' For those setting out to create a new font, {\sl The\/ \MF book\/} and {\sl Computer Modern Typefaces\/} are a minimum requirement for understanding how to use \MF. But what neither of these volumes provide are any guidelines about the process of font design. If you already have beautiful, accurate drawings of your character set on fine graph paper, then {\sl The\/ \MF book\/} will teach you how to use \MF\ to turn these drawings into digitised fonts for an output device, or a range of output devices. But one must look elsewhere for all the skills and knowledge needed to produce the initial typeface. In the process of designing the CM fonts, Knuth undoubtedly developed a great deal of sensitivity to letter forms, and although this knowledge is embodied in his \MF\ programs for the letters, it is difficult in the extreme to work backwards from the programs to the general principles underlying his design decisions (although this is what Knuth proposes). It is a pity Knuth has not shared more of this with his readers explicitly, in particular the readers of the companion {\sl CMT\/} book. If you are setting out to design a new typeface, then {\sl The\/ \MF book\/} definitely presupposes a substantial degree of sophistication in typographical design. Although {\sl The\/ \MF book\/} does give a complete description of the use of the language, if you include the small print and the appendices, it is rather short on complex real life examples. The examples given in Chapter 5 (`IO') and Appendix E (` \MF') are really very simplistic when compared with most of the character programs in {\sl CMT}. From reading {\sl The\/ \MF book\/} one might think that all that is necessary for the creation of a character is to set up a box, choose a pen, and join up the coordinates. This may be true for calligraphic letters such as N. N. Billawala's CM Calligraphic Capitals ({\sl CMT}, pp.122--139), and it may turn out to be an appropriate method for several oriental alphabets, but it is very far from adequate for a real Latin typeface, as Knuth's CM programs show. Once again, the gap between theory and practice is far from trivial. For example, every one of the CM programs in {\sl CMT\/} has an |adjust_fit| expression, usually as the fourth program statement. This macro provides a ready means of adjusting the amount of white space either side of a character's bounding box. One can thus create a character, and later jiggle it to the left or right with |adjust_fit| until it looks properly spaced. Clearly, |adjust_fit| is ubiquitous and important. But it does not form part of \MF's plain base: it is part of the additional CM base that Knuth created for the design of the CM typefaces, and so, although it appears in every CM program, it is not described in the main text of {\sl The\/ \MF book}. It is squirreled away on pages 307--309, in Appendix E. There are many other examples of how the \MF one grows acquainted with from {\sl The\/ \MF book\/} is not quite the same animal as the \MF\ one sees in the CM programs. Perhaps this is inevitable in a language which is so very rich in its provision for macro programming. These criticisms aside, {\sl The\/ \MF book\/} is very well written, with a clean, light style that makes the book a pleasure to read, and easy to learn from. Given that it is, at present, the only book about \MF, it is fortunate indeed that it is so complete and well written. The {\sc jokes} are not intrusive, and the anatomical metaphor which was so prominent in {\it The \TeX book\/} (\TeX's mouth, stomach, etc.), and which has such disturbing implications for the way Knuth's programs output our words or symbols, is thankfully less prominent in {\sl The\/ \MF book}. There is still a need for other books about \MF, which should have more to say about installation, about the design aspects of character creation using the program, about the practical aspects of proof production and use (with a major chapter called `How to learn from your proofs'), and which should have many more worked examples. We need books to teach computer scientists to design typefaces, as well as books to teach type designers how to use \MF. But {\sl The\/ \MF book\/} is always going to be the definitive text for \MF. Any user of the program will get to know it very well: it becomes almost a personal friend, and it stands the close exposure that such a relationship demands remarkably well. \rightline{\sl\DW, Wellcome Institute}