100 comments

[ 2.7 ms ] story [ 93.6 ms ] thread
Small g is unreadable. I obviously know the alphabet and despite that it took quite some time to understand what letter is that.
Perhaps they should've used something similar to the 9. However then it wouldn't really look like a lower-case g.
From using Okidata printers back in the day, a "tall" lower case g really does look bad in running text. (The similarity to the e is a little troublesome, but I don't have a fix for that...)
IIRC the really cheap Casio Organizers/DataBanks of 90's used 5x5 font. And then my ex used something like that on linux in order to fit a ridiculous amount of xterms onto 14" CRT (somewhat absurd feat with her congenital vision defect).
Too bad "tiny screens" pretty much do not exist anymore. Screens with hundreds of pixels on each side are very cheap already.

It reminds me people who research "colorizing grayscale photos", which do not exist anymore either (if you want a color photo of someone you met in your life, there probably exists a color photo of that person).

These look great.

I would have loved to have seen a sample of the 4x5, not just the 5x5.

Incomplete blog post! Where was the comparison vs. a 1x1 pixel font?
1x5 can also work if you take advantage of subpixel rendering https://www.msarnoff.org/millitext/
I was annoyed that all the images of the pixel fonts were larger than they actually ostensibly would be on a tiny screen, so I zoomed out my browser all the way on macbook pro retina screen, only to find the tiny letters of the blog text were 100x more readable than any of the pixel fonts in the post.

And if the pixel font images were to be rendered at actually 5 pixels on my Retina screen, because the resolution of Retina screen is so tiny, the pixel fonts would still be unreadable without a microscope.

So while it's a cool project, as long as we can put Retina-dense screens in things, we are past the point where there is any useful need for a 5 pixel font

Actually blown away by how good that works with my 1920x1200 8-bit HP Z24n G2 monitor [1] and my Laptop's 1920x1080 6-bit Panel [2]

[2x5-HP-Z24n-G2] https://i.imgur.com/yLyrpfg.jpeg

[1x5-HP-Z24n-G2] https://i.imgur.com/Z7kH005.jpeg

[2x5-Innolux-N156HCA-GA3] https://i.imgur.com/F4Ypxwj.jpeg

[1x5-Innolux-N156HCA-GA3] https://i.imgur.com/etkot5o.jpeg

[1] https://jp.ext.hp.com/monitors/business/z_z24n_g2/

[2] https://www.panelook.com/N156HCA-GA3__15.6__overview_33518.h...

I couldn't make out the 1x5 properly but the 2x5 was totally readable.
Subpixel rendering only gives you 3 effective pixels. M and N aren't really readable with less than 5.
I figured 2x4 would be the theoretical minimum since ascii characters are 1 byte each (without extensions). 1x5 with color is impressive, even if it is sort of like a faux 3x5
Not all displays have a simple horizontal subpixel layout though.
I actually thought of this (or a previous similar project? The one posted here seems more recent...) just a few days ago while watching the announcement video for this new DJ device, since it seems to use a 5x5 font: https://driftdj.com/dj-hybrid
If the author sees this. I think the lower case t would benefit from a pixel above the cross, similar to how the lower case k goes up one more pixel. It looks a lot like the capital T with how it is now. It is very well done though. Thanks for sharing.
> 4x4: Not enough to draw "E", "M" or "W" properly.

However, 5x5 isn't enough to draw "e" properly if you also want lowercase letters to have less height than uppercase, so you need at least 6 vertical pixels. And then that isn't enough to draw any character with a descender properly, so you need at least 7 vertical pixels (technically you should have 8 in order to allow "g" and "y" to have a distinct horizontal descender while still sitting on the baseline, but this is probably an acceptable compromise). And remember that in practice this means you will still need at least 8x6 pixels to draw each character, to allow for a visible gap between letters below and beside them.

> 5x5 isn't enough to draw "e" properly if you also want lowercase letters to have less height than uppercase

It can be enough if you "cheat" and make use of the horizontal space. This is how I did it in my font:

   ##
  # #
  ##  #
   ###
The 3x2 is fascinating, it's the same resolution as braille, albeit rotated 90 degrees. I wonder if this could become a braille-like system that's both visually and finger-readable.

Note: there are repeat glyphs here like c and o, though the example actually uses a different c somehow. But perhaps repeats are ok given context.

You can get nicer 5x5 fonts amd it was not that uncommon back in the day. 4 wide is not too bad if you make the center of M and W just two pixels inset from top or bottom respectively or borrow the spacing column.

Plenty of systems did it like CP/M on the Spectrum +3 and it looks pretty decent.

You could do a bit better with a 4x5 font for every characters except M, W, m, and w which would be 5x5 but use the pixels normaly used to separate them from the next character, so every caracters still use the same width.
If you start from the bottom of the page directly and scroll up then the 5x5 looks even better.
You could call it the "Minimum Viable Font"
One nice use for these tiny fonts is large text in terminals. Unicode now has 2x4 (from Kaypro), 2x3 (from Teletext, TRS-80), and 2x2 mosaic characters. Unicode also has 3x3 large text (from HP terminals) but font and terminal support is limited.
I developed a font with a similar resolution that was not nearly as legible for my Pi Zero with an e-ink screen many years ago. It allowed for similar tooling such as the flipper zero and esp32 marauder projects. I should fire that project up and implement this font…
A 3x5 font does not sacrifice the M or W. H,M,W end up as similar looking characters, but the M has the center pixel one higher, and the W has the center pixel one lower.
At that point, just go Braille! Amazing work anyway.
The 5x5 is very nice, and the 3x5 isn't bad either. Unfortunately neither of them have all of ASCII. The size is also a bit misleading because you need to add spacing so really they need a 6x6 or 4x6 grid.

I'm quite fond of Spleen:

https://github.com/fcambus/spleen

It has a 5x8 font which has all of ASCII, but most glyphs are actually 4x8 and include horizontal spacing. I modified it to reduce the rest for a project I'm doing so all glyphs are 4x8. The result can be rendered on a 5x9 grid with a guaranteed line of horizontal and vertical spacing between all glyphs. It's very nice.

In the early 1980s there were actually word processors for the Apple 2 which had a 40 column display (7 pixel wide fonts default) that gave 60 columns using the a 5x5 font in graphics mode. It was a selling point.

The hardware solution was to buy an "80 column card" that gave 80 columns of proper text, if your monitor could handle it.

At 3x5 it states:

> The "M", "W" and "Q" suffer, but it's still got a distinct O and zero.

The Q is weird; I would think it makes more sense to draw it as a zero with the bottom right set.