Computers & Typesetting. Vol. D. Reading, Massachusetts etc.: Addison Wesley Publishing Company. XV, 560 p. (1986).
The book, volume four of the series, is the companion of volume C, because it describes and lists the documented METAFONT program. In its appearance it is very close to volume B. It contains a short preface, a section ”Supplementary Bibliography”, where the original papers that presented the underlying algorithms are listed, and an introduction to the WEB system of structured programming to help understand the program listing that follows (covering 559 pages).
All the algorithms that are used are fully documented and explained in the listing section, e.g. the geometrical algorithms of control point choice for Bézier splines, the filling of an envelope, or the algorithms for command parsing and execution, and the arithmetic and functions for scaled numbers (METAFONT uses no floating point numbers, but (32.32)-bit fixed point numbers).
Since many of the algorithms deal with geometry and geometrical structures, they are easy to understand, and the subdivision of program parts into smaller pieces, encouraged by the WEB system, does the rest to make everything easy to understand.
The algorithms used were selected for simplicity and understandability, but nevertheless they are efficient, and in several places the efficiency grows with rising simplicity. An example is the subdivision of paths into parts that run in different octants. So (after a simple transformation) one has to fight only with paths that run in the first octant, i.e. the x-and y-derivatives are both positive and the y-derivative is smaller than the x-derivative. Other algorithms, that build on this division, become simpler and faster, and the overhead for subdivision and transformation is small.
The book is not only a program listing for those who want to install and implement the METAFONT program on a new computer system, but it also contains numerous interesting algorithms and programming tricks. Like volume B, it is a good example of structured programming and, with help of the WEB system, of structured program documentation.