Tech News
← Back to articles

Avería: The Average Font (2011)

read original related products more articles

am not a type designer. This is the story of the creation of a new font, Avería: the average of all the fonts on my computer. The field of typography has long fascinated me, and I love playing with creative programming ideas, so it was perhaps inevitable that the idea came to me one day of “generative typography”. A Google on the subject brought up little, and I put the idea to the back of my mind until it occurred to me that perhaps the process of averaging, or interpolating, existing fonts might bring up interesting results. Luckily at this point I didn't do any more web searching – instead I grabbed my laptop and came up with an initial idea for finding what the average of all my fonts might look like – by overlaying each letter at low opacity. The results can be seen in the below image.

This was done by printing each letter of each font, at the same point size, to lots of separate images, and then averaging them – using ImageMagick and PHP. The letters were aligned to the same centre point. I later realised that each font has a ‘baseline’ defined, and an origin on that baseline which each glyph is drawn relative to. The same process, repeated with equal origins, gives slightly different results (see below) – here you can see the baseline is very well-defined, with the glyphs becoming more blurred towards the top right of each.

I was quite pleased with the results. It was only later that I discovered this had already been done – though it appeared that my end results (whilst not as beautifully animated) had a little more clarity, so I'm glad I tried for myself. But this didn't seem like the end of the journey. Whilst this was an interesting experiment, and showed an lot of correlation between a sample of common fonts (as well as a couple of oddities – notably the lower case ‘g’ which clearly exists in two distinct common forms), what I really wanted was an average which somehow preserved the well-defined edges of existing fonts. So I started considering ways to produce a smoother, sharper average of letter forms.

One idea which seemed obvious was to simply take the blurry results of the first experiment, and use a threshold to create monochrome images. A few experiments in this direction (I first tried with a lower-case ‘f’, which I later found was never likely to give good results due to the variance in height of the middle cross-stroke) convinced me that I needed to look into cleverer ways to achieve this . Surely there must be a simple way to average shapes, while keeping the result as a shape?

It turns out not to be straightforward. There are many possible ways to ‘morph’ between two shapes – and what might seem the most natural generally depends on our perception of ‘features’ in the shapes. Consider the average of a capital I with serifs, and one without: the natural thing to do would be something like, make the serifs half as big, and use a horizontal stem width about half-way between the two glyphs. That's two feature concepts being applied to the abstract forms¹. To take a simpler example, what is the average of a square with the same square rotated 45˚? There are a few possibilities …

So, this stumped me for a while. I decided I needed to get to know fonts better, so I built a simple web app to view the lines, curves and control points present in the fonts I had. On this basis, I started to consider the ways the features (vertices, curves, stems, serifs etc) might be matched up between fonts. However, this was a rabbit hole I might never get to the bottom of - particularly when considering some of the more unusual varieties of font. Perhaps there was a simpler idea that was evading me.

... continue reading