24/07/2016

A font of knowledge

One of the projects which I had lined up for the lull after exams were over was to make a font. It's nice to go behind the scenes of something that everyone takes for granted, and unless someone somewhere has done a really bad job, never notices. Typography is important though, having an impact on how easy a text is to read, as well as shaping the way in which we think about what we're reading. The font that I'm creating has more of a script/handwritten style than the more commonly used ones, but it seemed like an easier starting point for a beginner.


The main tool involved for this project was FontForge, a free and open source font editor. At a basic level, the task is simple - create a glyph for each letter - right? The first thing that becomes apparent is that this means drawing a lot of glyphs. Obvious though it may seem, I hadn't done the calculation beforehand: 26 lower case, 26 upper case, 10 numerals, and about 30 bits of punctuation. So before you even consider multilingual support (another 10 or so marks and 50 anchor points) you need to create around 90 characters. And the second realisation follows the first, as soon as you get down to drawing your first letter - there's a lot to think about beyond just the shape of the letter.


Because each glyph is composed of a series of lines and Bezier curves (curves which are defined by two endpoints and a polynomial equation), you need to take the picture of the letterform in your head and replicate it in FontForge. So far so good, but what about serifs (the small lines attached to the ends of lines in some fonts), and the weight of each part of the letter? Many letters which appear to be equally weighted, such as the vertical and horizontal bars in a capital H, are not, because the letters look odd to the eye when balanced. Similarly with positioning. The dot of a lowercase i is slightly off-centre to offset the serif on the top of the stem (obviously not the case in a sans-serif font!)


Then we come to proportions and spacing. The shape and size of most of the letter shapes is often derived from others with similar forms. For example, the glyph for b is created from the stem of the i character combined with the bowl of the o character, and the shape and slant of the e also comes from that of the o. These relationships are key to making a font seem coherent, so that all of the characters feel like they have come from the same font. On a similar note, the feel is always more important here than precise values. Having characters which are not exactly symmetrical or evenly weighted will often look more pleasing to the eye than their mathematically perfect counterparts. Next, we have spacing. The letters above are equally spaced, and you can see that it looks off. The size and weight of the different glyphs has a lot to do with how close together they should be, as well as how symmetrical they are (An o will often have more balanced left and right spaces than an h, for instance). One can also 'kern' pairs of letters (or sets of letters) to make more precise adjustments to the spacing. This can often be seen after capital letters, such as where the a in Ta is adjusted to fit under the horizontal stroke of the T.

As with any project like this, there are endless tweaks and adjustments that you feel you need to make, and calling a font done is something you rarely feel happy doing. At some point I'll come back and finish off the more obscure punctuation glyphs and add some ligatures, but that's for another post!