Chances are you’re reading these words on a device with nice, crisp text. The typeface you’re looking at now is drawn from mathematical lines and curves, which means it can be scaled up and down to look good at large and small sizes. It wasn’t always this way.
Early home computers such as the ZX Spectrum rendered text as a series of dots, or pixels, typically arranged in a monospaced 8×8 grid. Then came next generation home computers such as the Commodore Amiga. Text on the Amiga took a step forward in that fonts were no longer limited to the 8×8 box. Glyphs could be larger and have proportional widths – it was possible to create bitmap fonts bearing a passing resemblance to proper typefaces found in print! And so, for me, a love affair with designing fonts was born.
Incidentally, later versions of the Amiga’s operating system, Workbench, did support scalable fonts with the introduction of the Agfa IntelliFont format. But, for now, let’s dive deeper into bitmap fonts.
Bitmap font editors on the Amiga
Early versions of Workbench shipped with FED, a basic but usable editor. It did the job, but was monotonous to use.
However it was Cloanto’s full-featured Personal Fonts Maker, with its proper drawing tools, that made it easy to create decent quality bitmap fonts.
Back in the 1990s I created a few bitmap fonts, most notably Webcleaner, a set of fonts designed for early web browsers. I want to keep them for posterity, and maybe even convert them into a more common font format, but the Amiga bitmap font format doesn’t seem to be supported anywhere useful. (Feel free to get in touch if you know differently!)
Thus begins a journey into the workings of the Amiga bitmap font file format. Can we extract any useful information out of bitmap font files and, crucially, can we do anything useful with them? This blog post series attempts to find out.
Fortunately there’s a wealth of Amiga knowledge online. We’ll be drawing heavily on the Amiga ROM Kernel Reference Manual: Libraries, particularly the chapter on graphics and text where we’ll glean a lot of useful information.
We’ll start, though, with a summary of what a font looks like on disk.
Font structure on disk
Each bitmap font stored on disk consists of:
- a similarly named directory, containing a series of files bearing numeric names.
The Amiga ROM Kernel Reference Manual gives the example of the the font Sapphire. There is a file called
sapphire.font, and a directory called
sapphire containing the files
|_ sapphire | |_ 14 | |_ 19 |_ sapphire.font
In Part 2 I’ll use my scripting tool of choice, Node.js, to see what information we can extract from the
.font file before moving on to the numeric files in Part 3. And later on, who knows? Let’s see how far we can get.