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/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];
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;