Why METAFONT didn’t catch on?
TUG2008, Cork, Ireland
Dave Crossland dave@lab6.com
Introduction: Dave is an international public speaker on software freedom and fonts, he runs a small business doing type design, information design and free software consultancy projects, and is a committee member of UKTUG. He’ is currently studying the Masters programme in typeface Design at the University of Reading, and he’s doing a presentation today on “Why Didn’t METAFONT Catch On?”
Dave: Alright, thank you.
METAFONT.
I’m assuming a general understanding of what METAFONT is. It was made by Don Knuth as part of the original TeX system a long time ago - 1978 - its one of the earliest digital type design systems, and as we’ve been in the last few hours its capable of dealing with pretty much any system you can throw at it. Its always been freely available, and its remarkably powerful. But its never caught on with professional type designers. I wonder, why that might be?
There’s an old joke that there are three kinds of people, those that can count, and those that can’t. There’s a serious point to that though - that of type. Not as in typography, but as in psychology, personality type. There is a brand of personality type psychology, “Myers-Briggs” that’s pretty famous and perhaps you’ll have heard of before.
That looks at people in terms of how the use tools - if they prefer to use tools in a cooperative way or a competitive way. And a similar aspect of that trait is our approach to decision making, whether we make decisions more logically or emotionally. Other ways people are different in their personality are to do with their use of language, some people prefer to use more abstract language and thinking, while other people prefer to use more concrete language.
Myers-Briggs has some peculiar words for this, Thinking, Feeling, Sensing, Intuiting, and that gives those preferences little one letter labels.
It also takes into account other things, attitudes to socialising, if you feel after a dinner party drained or energised. And also attitudes to time keeping, if you prefer to be more flexible or punctual. Again, there are these jargon words for these preferences, Introverted Extroverted, Perceiving, Judging. And you put these together into a system, which gives 16 personality types.
There’s a book called “Please Understand Me 2” where some psychologists put this together in a cohesive system, and grouped those 16 personality types together in to 4 temperaments. To make those a bit more understandable, they used Greek Gods to personify those temperaments. So they had a class of Dionysian “Guardians”, another set of Apollonian “Artisans,” and Epimethian “Idealists,” and TeXXies, er, Promethean “Rationalists.”
This is a broad theory for how people are different, and perhaps you can’t take it too far, as ultimately people are all pretty much the same - what one man can do, another man can do - but there is definitely a sense that there is a certain set of the population who tend to be more abstract in their language and thinking and more logical.
Software is pretty logical and abstract, and the people who get into software related things tend to be of these personality types, and free software - the free software movement, specifically - has that kind of draw. And TeX programs also tend to have that kind of approach, as does METAFONT.
But type design is probably not very abstract and logical. Its to do with shapes, spaces between shapes. Its visual, or concrete, and its more emotional than logical.
The kind of people who tend to do type design are not the kind of people with backgrounds in software engineering.
So, I want to go into type design from less of a software engineering perspective. Design happens at various scales at the same time, and type design is no different. At the lowest level, the letter, you are dealing with the black shapes of the letter, its obvious what that is, and then there’s a kind of optical trick where you shift your focus to the white shapes in and around the letter. You can imagine a letter being inverted so the black is white and the white is black, to bring this shape out in to focus.
At another level, you have words. In words there is not only the white shapes inside a letter, or around a letter, but the shapes between the letters. Another things at the word scale is managing the black shapes across letters, the things that look similar (although are not exactly the same.)
You can see here a lowercase n and h. These are similar shapes, but if you look between them, you can see there are slight differences. Between all the letters, there are regular aspects, and some of the earlier presentations today talked about archetype shapes used to construct letter forms out of. Managing letters that are similar is a core aspect of type design. There are strong similarities between various kinds of letters. The letter s is perhaps the most different, and Don Knuth wrote an interesting essay about that.
Going up another level, to paragraphs, where you have paragraphs set and you have a different impression of the letters, you get emergent visual effects, and you have to take that into account when designing the other levels. For example, a ligature, you are dealing with the spaces in and around the letters in a precise way, and this effects the way that a paragraph of will look at a subtle level.
That is what typeface are. So what is a font? What is the difference? Its a subtle distinction: A font is a typeface implemented in software. You can have the same typeface implemented in a metal typesetting technology, and in software, and in… potato? Whatever one you print with, the letters will look the same.
Software is programs and data. Fonts are a peculiar kind of software, because they include programs and data in the same thing, whereas there is normally a big separation between them. Examples of font programs are TrueType hints and OpenType features, and font data is the glyph point data and metrics table data - which is pretty much what the typeface design is.
How are typefaces implemented in software? There are really just two approaches that have come out of the last 30 years.
One is the outline or “Fontographer” approach, where each letter is drawn - visually, interactively - and this is a direct translation or facsimile of the analogue shapes of the letters. Its really good for implementing existing type designs. The AMS Euler project is a clear example of this, where they had an existing design to be digitised, and the best way to do that was to trace the outlines. FontForge is a really great font editor that is free software for doing that.
The other approach is the “METAFONT” approach where you have this stroke and pen idea, and the previous session covered how that goes, where each letter is constructed, by writing source code in an algebraic programming language. That’s an unusual kind of programming language, and its not visual, and its not very interactive. Its abstract and logical. Its not a direct translation of what you do on paper, its “digitally native” - the whole thing is created digitally. This is not great at implementing existing type designs, but I think it could be great for developing new type designs - where its not sure what it is, the look you are trying to get.
MetaType1 is based on MetaPost, a modernisation of METAFONT. As we heard yesterday, the developers are continuing to do good work on that. Its also a very abstract and logical approach.
TeXWorks takes a different approach to TeX typesetting; instead of being very abstract and logically minded, its a little more visual and interactive, because the cycle between writing the TeX code and previewing it is quicker. The SyncTeX technology really helps with that. It makes TeX a little more concrete, a little more emotional.
I wonder if METAFONT style type design technology could also be more concrete and emotional. We’re going to need some kind of canvas that looks nice - Cairo - and splines that have smooth curvature, and Raph Levien has developed a spline format, Spiro, that guarantees very smooth curves, and I encourage everyone to look at that. Its integrated with Inkscape recently, and I hope that it will be featured in the next version. FontForge has recently been restructured so that its a regular kind of C library - “libfontforge.” And we’ll need an object model for fonts, and the RoboFab project has really done some great work thinking out the object model of what a font it. I’d also like to see this done with a framework that allows real time collaboration, so several people could sit with their computers and work on the same glyph or font at the same time, as if you were sat around a big bit of paper, scribbling, and there’s a framework from BBC R&D, Kamaelia, that is powerful and seems useful for this. And I’d also like to see distributed version control there too, if it was fast enough that you could record every step in the design process. Like git.
I think font development is very much a piece of software engineering, and I think type design could benefit from aspects of the software engineering approach, even though the ways people do type design tend not to have those aspects - software engineering is much more logical and abstract, and doesn’t seem to be obviously related to type design. But I think there is at least something in there.
I tried to make this quick, so, questions?
15:15
Q: The designer is meant to write stuff? You need a font designer, I think. They are artists. They cannot write this only with programs…
A: Right. I think what I’m trying to say is that the METAFONT approach, if it was visualised much faster, could work for them. At the moment, you write the MetaPost or METAFONT sources, and you run a program to compile or generate images. That whole process, its not real time. Whereas say in TeXWorks, in real time you write the TeX document source, and generate the PDF instantly, and there is a very quick cycle between writing the code and seeing the result. I think bringing that approach to MetaPost style graphics would help people who are more artistic to take a more engineering approach.
Q: Since you are a software writer and a type designer, when are you going to release this?
A: LOL Okay, I’m actually not a software developer. I studied fine art, then graphic design, and now typeface design at the University of Reading. But I am also working part time, and am looking to hire someone to write this software. A friend of mine in Portugal, who was presenting similar work he did in Holland, at the Libre Graphics Meeting, a free software conference for Graphic Design that was in Poland recently, so I’m hoping to hire and work with him on producing this software. This is very much a vapour-ware kind of presentation, but, no, I’m serious about doing this. If anyone wants to help, then send me email!
Q: Visualisations of METAFONT have existed for many many years.
A: :-)
Q: METAFONT is good because of its META-ness. I did my Minion Math fonts with MetaType1 and there are 20 or 30 possible variations possible. How do you propose to visualise these variations? I have one font program in MetaType1 and 20 variations to be shown on the screen.
A: Sure. In your preamble you have your variables that you use to calibrate the following METATYPE program that generates one of those 20. But that is sometime into the process, and I’m talking about the beginning of the process where you are designing new shapes, where you don’t know quite what shape it is you are looking for, and you want to tweak those variables and see what different things look like. Doing that in the outline approach is quite laborious, and using the METAFONT approach of the stroke-pen gives you access to other forms quicker, and that’s a better approach. The sophisticated abilities in METAFONT for dealing with large families of type is great, but I’m talking here about type design, the designing of shapes.

The Why METAFONT didn’t catch on? by David Crossland, except the quotations and unless otherwise expressly stated, is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.
Comments
2 Responses to “Why METAFONT didn’t catch on?”
Leave a Reply
Nice to read. Wish I’d been there.
Having a fast-enough edit/compile/view cycle for MF could make a difference, but it’s still going to be the case that few people are going to write a computer program to create glyphs. You need a visual language, and avoiding visual languages was more or less the whole point of MF. DEK’s idea was that there would be a digital punchcutter, but I don’t think that really works either. Anyway …
Yeah reading is so much faster than listening to audio or watching video, to me. And its not very indexable by the Googlebot gods :-)