Skip to content

Asteroids font

Asteroids font

My version of the Asteroids font is derived from Ed Logg's hand-written notes (shown in this archived post from edge-online.com/features/making-asteroids). I modified a few of the characters to make them more distinct as well as added a strike to the 0 so that it stands out from the O.

Examples

I've used the font in my Asteroids "clone" Space Rocks, as well as my Vectorscope clock and Twitter oscilloscope. It is a very easy font to embed, so it shows up in several places where I need to draw legible text with a microcontroller. It is uppercase only, and I've had to create a few special characters for ones that weren't represented in Logg's notes.

Code

The source code is in github.com/vst/teensyv/asteroid_font.c and has been compressed to use very little memory in representing the font in memory.

The drawing routine extracts the 4-bit X and Y offsets from the array and generates the moveto() or lineto() commands:

        const uint8_t * const pts = asteroids_font[- ' '](c).points;
        int next_moveto = 1;

        for(int i = 0 ; i < 8 ; i++)
        {
            uint8_t delta = pts[i](i);
            if (delta == FONT_LAST)
                break;
            if (delta == FONT_UP)
            {
                next_moveto = 1;
                continue;
            }

            unsigned dx = ((delta >> 4) & 0xF) * size;
            unsigned dy = ((delta >> 0) & 0xF) * size;

            if (next_moveto)
                moveto(x + dx, y + dy);
            else
                lineto(x + dx, y + dy);

            next_moveto = 0;
        }

        return 12 * size;

Font Vector display 2015


Last update: November 8, 2020