Typography in 8 bits: System fonts
My love of typography originated in the 80′s with the golden years of 8-bit home computing and their 8×8 pixel monospaced fonts on low-resolution displays.
It’s quite easy to find bitmap copies of these fonts and also scalable traced TTF versions but there’s very little discussion about the fonts themselves. Let’s remedy that by firing up some emulators and investigating the glyphs.
Commodore PET (1977)
Specifications
Regular semi-serif
5-7 pixels
7 pixels
PETSCII
320×200 (40×25 text)
Leonard Tramiel
Download in TrueType

Commodore’s first business machine was the PET which came with a built-in monitor and a full character set unlike other machines at the time.
Unusual characteristics
- Primarily sans-serif but serifs present on ‘BDJa’
- Slightly stylized ‘£’
Rationale
The font is good choice for the original PET and it’s original monitor. It was unfortunately also used on the Vic-20 despite having half the screen resolution where it made a poor choice.
Influences
While not visibly influenced from anything else an almost direct rip of this font appears to have been used in the Apple Lisa debugger.
Technical
Unknown.
Apple ][ (1977)
Specifications
Regular condensed sans
3/5 pixels
7 pixels
ASCII
280×192 (40×24 text)
Signetics+?
Download in TrueType
![Apple ][ system font](http://images.damieng.com/blog/Apple2e.png)
Apple's first professionally built computer was the Apple ][ which from rev 7 onwards added lower-case letters.
Unusual characteristics
- Uppercase letters can touch descenders on the line above as the full height is used
- Only first 7 columns per glyph otherwise would have been 35×24 text
- Vertical stems for '[]{}’ are 2 pixels wide (bold)
- Very small slashes ‘/\’
- Upper-case is consistent although ‘A’ is very angular, ‘G’ unpronounced
- Lower-case less consistent – ‘gf’ has soft curves, ‘mw’ square, ‘nhr’ ignore curve of ‘u’
- Numbers – unusual ’3′ but ’96′ over-extend
Rationale
The font is well suited to the default high-contrast white-on-black (often green-on-black) given the machine was intended for use on their own monitors.
Influences
The upper-case, numbers and symbols were copied from the Signetics 64 × 8 × 5 character generator 2513 chip used in the Apple I and II in revision 0 to 6.
The later Texas Instruments TMS9918 Video Controller Chip used on Sega, Nintendo, Colecovision and TI/99 machines re-used this font with only a couple of pixels changed.
Technical
Changing the font requires replacing the 2 KB 2716 pinout ROM with your own EPROM or alternate ROM.
Atari 400/800 (1979)
Specifications
Bold sans
4-6 pixels
6 pixels
ATASCII
320×192 (40×24 text)
Unknown
Download in TrueType

Atari’s entry into the home computing market put out some very capable machines with all sorts of hardware tricks (the creative geniuses behind it would go on to form Amiga). The same font was used on all Atari 8-bit models from the original 400/800 to the XL and XE models in the late 80′s.
Unusual characteristics
- 6 pixels uppercase causes some vertical imbalance especially on ’9′
- Braces are overly bold being 3 pixels wide.
- Less than and greater than symbols are too tall.
- ‘MWw’ make great use of width to nice effect
- Bar on ‘G’ too low, ‘U’ overtly square, ‘X’ very blocky, ‘S’ does not extend enough
Rationale
The machine boots in a low-contrast blue-on-blue and is designed for use with TV’s which explains some of the odd characteristics above like the square U to distinguish it from the V. It is likely the 6-pixel choice is to allow the letters to be centered when using inverse letter mode.
Influences
Unknown.
Technical
One byte per row, 8 sequential bytes making one glyph. You can reprogram this by poking address 756 with the page number of the new font (default of 226 for ROM location 0xE000).
POKE 756, 226
Acorn BBC Micro (1981)
Specifications
Bold sans
4-7 pixels
7 pixels
ASCII only
320×256 (40×32 text)
Unknown
Download in TrueType

The Beeb, as it was affectionately known, has its own font which could display in three different modes – one wider and one narrower but many users might not recognize it all as it booted into ‘Mode 7′ utilizing a Videotex chip (used in the UK for text-on-TV and travel agents as well as in France for Minitel) that had a different font of its own.
Unusual characteristics
- Drops bold in tight spaces e.g ‘$&@’
- Outlines the tail on the ‘Q’ to make it much clearer
- Unique and beautiful ‘*’
- Does not extend low bar on ‘e’ as much as expected and ‘f’ seems to wide
- Vertically squished ‘?’
- Style of single-quote ‘ is inconsistent with comma
Rationale
The machine generally shipped with good quality monitors and the combination of high-contrast colors and this bold font made it very readable indeed.
Influences
It’s quite likely it was influenced by the Atari 8-bit font but with larger capitals and ascenders and a much more consistent look.
Technical
The system font is stored at 0xC00-0xC2FF with each character being represented by 8 sequential bytes (left pixel is high bit).
You can replace the font used by system text routine OSWRCH (0xFFEE) using the VDU command 23 followed by the ascii code and then 8 rows of data, e.g.
VDU 23,65,11,22,33,44,55,66,77,88
Sinclair ZX Spectrum (1982)
Specifications
Regular sans
6 upper, 5 lower
6 pixels
ASCII + own
256×192 (32×24 text)
Nine Tiles
Download in TrueType

Sinclair’s successor to the ZX81 added color and lower-case letters – again preserving the upper-case and numbers from it’s predecessor but finally mapping them to ASCII. This font was re-used on Jupiter Ace and Timex machines but the ZX Spectrum was the most popular.
Unusual characteristics
- 6 pixels uppercase leaves many unevenly balanced ‘BEFS’ and ‘X’ with ugly 2×2 center
- Full stop is 2×2 pixels (bold) but colon, semi-colon and comma are not
- Capital ‘MW’ are very slight with latter hard to distinguish from ‘V’
- Uneven styling ‘c’ omits curves, ‘e’ is soft ‘g’ is not, ‘f’ and ‘k’ are thin
- Only the copyright symbol uses to the top row of pixels
Rationale
While the machine has a default high-contrast scheme the video output was poor because of the quality of the RF modulator and home TVs it was connected to. It looks like the designer decided to increase spacing between letters after the ZX80 from one to two pixels which greatly limited what could be done with the letters themselves. This was likely done for the same reasons it was done on the Atari 8-bit – namely to allow the letters to be centered when using inverse text modes.
Influences
Sinclair ZX81 (no lower case), ZX80 (7 pixels wide).
Technical
The system font is stored at 0x3D00-0x3FFF with each character being represented by 8 sequential bytes (left pixel is high bit). You can replace the system text routine (RST 10) by poking the new fonts memory address into the system memory map at 23606/23607 minus 256 bytes (the first 32 characters are non-printable, 32×8 = 256)
LOAD "newfont" CODE 49152, 768: POKE 23606, 0: POKE 23607, 191
Commodore 64 (1982)
Specifications
Bold sans
6 pixels
7 pixels
PETSCII
320×200 (40×25 text)
Unknown
Download in TrueType

Commodore took to take their success with the PET and applied it to the home first with the VIC 20 and then later with the wildly successful Commodore 64.
Unusual characteristics
- Inconsistent shapes/style across ’147,&<>@Q’
- 2×2 pixel of ‘.’ is not carried through to ‘;:!’
- Ascenders not as tall as capital letters
Rationale
The bold font was essential for the low-quality TV’s Commodore were aiming at. The inconsistencies across the font may have been intentional to help make the letters look different (A vs 4, 1 vs I, 7 vs T) given the limitations of the displays or just poorly implemented (see below).
Influences
Lower-case is identical to the Atari 8-bit font and likely copied wholesale as they do not match the upper-case well. Symbols, numbers and upper-case are a bolded version of the PET font that looses the serifs and also could explain the odd reproductions of 1, 2, 7 & 4.
Technical
See comment from Paolo below for details!
Amstrad CPC (1984)
Specifications
Bold serif
6-7 pixels
7 pixels
PETSCII
320×200 (40×25 text)
Locomotive Software
Download in TrueType

Alan Sugar’s foray into the UK market came a little later than the other 8-bits in 1984 with the Amstrad CPC series.
Unusual characteristics
- Full use of 7 pixels for upper and 1 pixel for lower means glyphs can touch
- Serif choice is unusual and not consistently applied because of space constraints
- ’0′ is wider than would be expected (copied from
- Very distinctive curves on ‘CGOQ’
- ‘X’ looks like a different style because of high mid-point
Rationale
Sugar wanted the machine to look more professional than other home computers at the time. The choice of a serif based font to look like PCs which also featured serifs (at a higher resolution) reflects that desire.
Influences
Very similar to the IBM CGA font with some adjustments (fixes) to the horizontal positioning of some symbols. Many characters completely identical and some bearing style similarities too (wider 0, X choosing one side to be longer than the other). Some other characters bear similarity to the BBC Micro (Q uses the same trick to keep it distinguished) and a number of symbols and lower-case letters being the same where serifs would not fit.
The Amstrad CPC manual shows the system font but is different in some areas. It is possible it is a transcription problem (z is shifted up one pixel, missing pixels on ’37PRz~’ and extra pixels on ‘#b’ ) although it could have been an earlier version from the designer as ‘rG?’ are subtly different.
Technical
Redefine using the Amstrad BASIC command SYMBOL that takes an ascii code and then 8 comma-separated values one-per-row in much the same way as the BBC with the VDU 23 command. SYMBOL AFTER must be set first e.g.
SYMBOL AFTER 32
SYMBOL 65,11,22,33,44,55,66,77,88
MSX (1983)
Specifications
Regular condensed sans
5 pixels
7 pixels
ASCII Extended
320×200? (40×25 text)
Microsoft?
Download in TrueType

The MSX differs from the other machines here in that it was a standard rather than a specific machine. It was very popular in Japan and did hit UK shores although I only knew a single person that had one apart from our school which had acquired several Yamaha models to control MIDI keyboards. Given the multiple manufacturers it’s not surprising that some models had slightly tweaked fonts but the one shown here seems to be the most popular.
Unusual characteristics
- Full use of 7 pixels for upper and 1 pixel for lower means glyphs can touch
- Only 5 pixels wide for the letters
- Pixels touching on the curves of ‘db’ etc. look quite ugly
- Very angular curves on ’5′
Rationale
An unusual choice that feels very quirky.
Influences
Most likely influenced by the Apple ][e.
Technical
Unknown.
Mac users should try Cathode – a retro terminal emulator I helped add some of these fonts to.
For more system font analysis read the sequel Typography in 16-bits: System fonts.
[)amien
28 responses
To change the font in the c64 you have to change bits 1-3 of location $d018. These give bits 11-13 of the font address. Bits 14-15 are provided by the c64′s I/O chips: they are thus given by bits 0-1 of $dd00 (but inverted: so 11 there means bits 14-15 are 00).
The default font is obtained if bits 11-15 point to $1000 (00010) or $9000 (10010), because the VIC does not see RAM at $1000-17FF and $9000-97FF, and sees the ROM for the default font instead.
No love for the 1981 IBM CGA font? It’s aso a serif font and somewhat iconic…
I grew up with the zx81 and commodore 64. Wow! It’s only when we look back that we see how far we’ve come, it’s a bit like looking at an old family photo though, it’s changed a lot but you still see the same characteristics of that never change.
Mmm, I’m sat here now trying to find a reason to use one of them.
[...] Typography in 8 bits: System fonts [@) DamienG Tweet Tags: 8-bit, Fonts You can follow any responses to this entry through the RSS 2.0 feed. You can skip to the end and leave a response. Pinging is currently not allowed. [...]
Hey this is really awesome! But where are the Amiga-/Workbench-Fonts? ;)
The Amiga was 16-bit and also not monospaced… That would be another article :)
[)amien
Damn, you’re right! :D
Needs more Oric-1/Atmos love!
This is great. You’ve got a good list there for the most popular machines. I would love to also see the MSX, TI-99/A, Commodore PET, TRS-80 Model I and Color Computer fonts reviewed.
I’ve added the Commodore PET/Vic-20 font.
The TRS-80 and co seems to have had several and it’s not clear which models had which – I need to get a few working emulators!
[)amien
You can get the TRS-80 Color Computer and Dragon 32/64 font from XRoar: http://www.6809.org.uk/dragon/xroar.shtml
I was a font designer for Sinclair Research… actually, I was about the lowest of the low in the software engineering pecking order and happened to be doing the screen handling software for a new product, so I got to do the font as well. (The product, Pandora, was a portable 8-bit computer that never got made.)
I can’t speak for any of the other companies, but ‘font design’ is perhaps the wrong term for the process. Much faffing with graph paper, lots of over-the-shoulder critiquing from other software engineers, but not a high priority nor something that was seen as needing any particular graphic or typographic skills.
If anything, Pandora got more attention in the font area than normal – it had a very baroque screen technology with a weird aspect ratio and, ah, readability issues. So we had proper proportional spacing, not a fixed width font, which was quite challenging to code for on an 8-bit CPU with no hardware graphics acceleration.
Nice overview, very nostalgic! I miss the MSX though, that’s the machine I grew up with.
The screensize on the original PET was 320×200, the characters were in an 8×8 grid.
@RupertG So I can put you down as the font designer for the Spectrum?
@Wladimir I’ve added the MSX!
@Maurice Thanks, now corrected!
[)amien
Thank you very much! It’s indeed the screen 0 font as I remember it. Let’s see if I can set it as console font.
I believe the Atari 400/800 fonts were influenced by the coin-op font originally developed by Lyle Rains for Sprint (1976), and adopted fairly faithfully by most arcade games shortly thereafter. That was a 7×7 in 8×8, and originally upper-case only, so some compromises were made, e.g. to accommodate the 400/800 team’s desire for fully boxed inverse-video characters.
Lyle created a number of very nice fonts for later games and for use with X. IIRC, he also helped me out a bit with my 3×5 (in 4×6) font for my 80-column VT-100 terminal emulator (400/800).
Disclaimer: I was not in the room when this decision was made, but I was down the hall :-)
A little info on MSX’s narrow characters: The MSX had two text modes, a 40×24 “text mode” with 6×8 characters and a 32×24 “graphical mode” with 8×8 characters and extended color options. The character table was the same for both modes, so graphical characters would lose their last two columns in the 40×24 mode, and text characters would be oddly spaced in the 32×24 mode.
The Amiga fonts were monospaced. Otherwise the ASCII wouldn’t look so good! (check asciiarena.com)
If I could dream, it would be great to see the *full* fonts here – with all the special characters. The C64′s PETSCII is amazing to work with. Truly special.
Nevertheless, good post, thanks!
Damien, I love when someone fills a hole in the world by sharing knowledge like this! Must-read article about early computer fonts… mmm, crunchy.
It’s so funny because as I was reading it, I thought the maker of Cathode would like seeing this — only to see your line at the bottom, ahhh!
Thank you for sharing, and if Amiga is legit to include, I’d sure like to see it as well.
Big vote up for the C64 PETSCII as goto80 mentioned, I loved seeing those graphics used in games, BBSes, and when I printed party invitations on my old dot matrix.
@goto80 I just checked asciiarena.com. You make a good point. It is a cute site though. Scary colors!
I think Sinclair ZX Spectrum is the most elegant of the lot here. This was a wonderful post, Damien. One question on the Sinclair ZX Spectrum: You said
I assume that was a typo. But I am curious, what also suffered?
8-Bit-Txt…
In längst vergessenen Tagen, als wahrlich noch niemand von einem weltumfassenden Netzwerk namens Internet (=Facebook) geträumt hatte und man Rechnern noch beim Arbeiten zuschauen konnte, da gab es die ersten Vorreiter digitaler Schriften. Diese waren r…
It’s great to see the Atari fonts again. Thank you!
[...] Typography in 8 bits: System Fonts [DamienG via O'Reilly Radar] [...]
I did a conversion of the font used in later models of the TRS-80 Color Computer 2 as well as the CoCo 3. Earlier versions of the CoCo 2, as well as its trans-Atlantic cousin the Dragon 64, used a slightly different font with a non-slashed zero, a square “O”, and no lowercase.
http://fontstruct.com/fontstructions/show/trash_eighties
The MSX font characters are stored in the ROM as 8×8 cells. The characters are only 5 pixels wide and are left-aligned in the cells leaving three blank pixels on the right. The graphic characters typically use the full 8 pixels of width.
The MSX video chips have two text modes, screens 0 and 1. In screen 0, only the left 6 pixels of each character is displayed in 40 columns giving a resolution of 240×192. The MSX2 video chip added an 80 column mode giving a resolution of 480×192. In screen 1, all 8 pixels are displayed in 32 columns giving a resolution of 256×192. The left-aligned, 5 pixel wide font displays properly in both screen modes but obviously the apparent spacing between characters changes. The graphic characters are truncated in screen 0 mode. Some survive this truncation quite well while others do not.
The text modes all have 24 rows (192 pixels) via BASIC although the MSX2 and later video chips were capable of displaying up to 26.5 lines (212 pixels).
I believe you have mistakenly stated the height of capital letters as 6 instead of 7 for the MSX, C64 and Amstrad CPC entries.
I believe the PET font was designed by Leonard Tramiel. He told me he did it when we worked together at Atari.
Could you extend the concept to the anti-aliased fonts on the Acorn Archimedes/RISC OS machines. That technology has rarely been surpassed. What they could achieve with even just a 16 colour palette was amazing!