8bit Fonts

3 views
Skip to first unread message

Nga Sagastume

unread,
Jul 25, 2024, 11:21:42 PM7/25/24
to Remix OS for PC

I started designing fonts around 1987 on an 8-bit Sinclair ZX Spectrum. Many years later, my involvement in the Spectrum emulation scene led aul Dunn to ask me if I could provide fonts for his excellent BASIN Sinclair BASIC for Windows. My interest in 8x8 fonts was suitably rekindled, and I ended up delivering about 60 - some even extracted from my original +3 disk images.

I wanted to get these fonts online earlier! Raw 7698-byte files, however, are only of use to BASIN users or those suitably familiar with the convoluted process and tools to get them into a Spectrum or emulator. Even trying to use them on Windows was a pain given that TrueType only cares about scalable fonts (SBIT embedded bitmaps are rare these days).

Fellow typographer and Spectrum fan Paul van der Laan gave me some tips for pixel-perfect TrueType fonts at specific multiples (8px on Windows). Armed with this knowledge, I put together an automated pipeline using a modified version of John Elliot's psftools which converts the original ZX font to PSF and then to BDF. Converting to TrueType TTF involved FontLab 5 Studio and some Python scripting while other conversions required some off-the-shelf tools and a bunch of custom ones all tied together with bash scripts.

It's impossible to get a real feel for a font from a simple run of letters. To alleviate this, I created code that re-renders hand-picked game screenshots to show them in real-world scenarios. If your browser supports HTML5 canvas, you'll see these. You can also drag any raw 768-byte Spectrum font file such as those created by BASIN to any of my ZX-Origins pages to see your font rendered with these samples.

The uploads are now mostly complete - there are 78 typefaces and well over 120 actual fonts once you include the variations, styles, and weights that some typefaces have. This number may increase from time to time if, and when, I finish off fonts in my _incomplete folder, resurrect some abandoned ones (sorry Unwanted Attention), or get inspired for something entirely new.

I have generated some (387) Truetype fonts from original bitmaps from Atari 8-Bit computers. These were created by very very talented people many many years ago. Ripped by hackers lost to the mists of time. Collected by archivists for future generations, now massaged by me.

Recoil was used to convert to PNG. ImageMagick took the PNG and reversed, resized, chopped up and output PNM files which Potrace then converted into SVG which was fed into FontForge and output as modern fonts using some Python 2.7written by me as the software glue that is holding it all together.

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.

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.

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.

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.

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.

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.

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 7x7 in 8x8, 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.

A little info on MSX's narrow characters: The MSX had two text modes, a 40x24 "text mode" with 6x8 characters and a 32x24 "graphical mode" with 8x8 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 40x24 mode, and text characters would be oddly spaced in the 32x24 mode.

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.

The MSX font characters are stored in the ROM as 8x8 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 240x192. The MSX2 video chip added an 80 column mode giving a resolution of 480x192. In screen 1, all 8 pixels are displayed in 32 columns giving a resolution of 256x192. 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.

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!

The atari 8-bits have an alternate mode for text display using 10 scan lines rather than 8. The last 32 characters which contain all the lowercase letters are displayed shifted down two scan lines allowing better descenders. I saw this used in a few word processors and other productivity software. Yes, this requires using a different font, either an entirely new font or a RAM copy of the default ROM font with the last 32 characters shifted in memory to use the extra scan lines correctly.

Great post! I was thinking it would be interesting to maybe superimpose all glyphs from all the different fonts, to see where they differ.The char maps you show only cover the ascii range, do they? The Atari and C64 have a full set of 256 glyphs, the latter half being graphics symbols. On the Atari, there were actually two sets of the latter 128 glyphs, one with graphics symbols similar to the one on the C64, and one with international (accented) chars.Possible additions: Laser Technology machines (VZ200 etc.), and of course the Sinclair ZX80/81.

Commodore engineers have come out and said that the company took part of the Commodore 64's font from Atari. This was before their tenure at the company, of course, so their hands are clean. But, MOS Technologies/Commodore Semiconductor Group made ROM chips for Atari so the ROM was right there.

A ROM is just a sequence of bytes and given that nature it is trivially easy to copy data out without MOS Technologies help. Given that they'd need to be developing the machine long before a real ROM was produced I consider it unlikely MOS were involved.

One oddity was the WordStar CP/M port. It was intended to run on MSX 1.x, which had a 40 column width (in Screen 0). This is too unconfortable for text editing, so it shipped with a 'resident' assembly program that would switch to Screen 2 (one of the graphical models) and draw the caracters itself, using a 6 pixel wide cell. Not all characters used all 6 pixels, so readability was not great, specially on a television with RF inputs. But it did manage to squeeze 64 characters per line, and the drawing was not that slow, for the standards of the time.

The BBC Micro font was not specifically a bold font. What was done was to make vertical lines 2 pixels wide, because when displayed on a television, the video timing caused 1 pixel wide vertical lines to almost disappear. So by having 2-pixel verticals, it actually displayed as a normal font. This is lost on a modern display or LCD which is pixel perfect - a more realistic rendition would be if the font were redesigned as one pixel plus anti-aliasing so simulate the smearing of the video signal. (I worked at Acorn and heard the 2-pixel vertical explanation first-hand from the font designer)

It was one of the first early micros that both had a relatively high resolution font system (I forget how large but certainly more than 8x8 - it looked great!) and which allowed users to define their own fonts.

The default video-mode on the BBC was Mode 7 - that was indeed not bold as it is generated by the Mullard SAA5050 video generator. The Mode 1 font however definitely is bold. It might have been the intent to combat the limitations of video but the BBC saw the most success in schools combined with Microvitec monitors.

Reply all
Reply to author
Forward
0 new messages