5x5 Pixel font for tiny screens
maurycyz.com
maurycyz.com
[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...
Replace "imgur.com" in the links with "rimgo.bcow.xyz" and consider voting against the parties of surveillance next time you can :)
Wish people wouldn't keep repeating this, imgur block the UK because they were caught with GDPR violations.
The fact their UK wide IP block came in around the same time as the online safety act is the only reason they can continue to quietly pretend it's the government's fault. Imgur is the reason you can't view imgur, it is not the UK Govt (this time)
"The UK's data watchdog, the Information Commissioner's Office (ICO), said it recently notified the platform's parent company, MediaLab AI, of plans to fine Imgur after probing its approach to age checks and use of children's personal data."
https://www.amazon.com/Best-Sellers-Kids'-Microscopes/zgbs/t...
Magnification is around 5x, but this is more than enough to see subpixels.
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
Electronic devices
Fine prints in images
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.
The hardware solution was to buy an "80 column card" that gave 80 columns of proper text, if your monitor could handle it.
> 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.
In the end, I found "Gremlin-3x6" font[0] made by the guy named zephram. It's 1 pixel taller, but still a very compact when laid out horizontally. But, most importantly, all standard latin characters are pretty distinct from each other and it remains readable without zooming in too much.
Unfortunately, since then, zephram deleted his fontstruct account and all of his fonts. I have a copy of this font in my mod repo[1] along with a CC0 license and you can see the actual rendering of the font in the project screenshots[2].
[0] - https://fontstruct.com/fontstructions/show/1488093
[1] - https://codeberg.org/janAkali/isaac-extended-icons-mod/src/b...
[2] - https://codeberg.org/janAkali/isaac-extended-icons-mod/media...
for [0]
> At this size, there's no way to have a distinct upper and lowercase [...]
3x4 is feasible. I've designed the MiniGent font [1], including greek letters, numerals, punctuation, math, currency, and emojis. Written a whole LaTeX typesetter [2] around it. While not perfect, I'm amazed by how far you can take it arranging just a few pixels.
[1] https://gurki.github.io/pixeltex/minigent/ [2] https://gurki.github.io/pixeltex/pixeltex/
Example: https://imgur.com/a/text-80-characters-per-line-240-pixels-w...
That's 3 horizontal pixels per character on average, including inter-character spacing.
https://chinese.stackexchange.com/questions/16669/lowest-pix...
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.
It can be enough if you "cheat" and make use of the horizontal space. This is how I did it in my font:
##
# #
## #
###I think that's the least of the properties I'd be willing to sacrifice to have a font that tiny.
(but yeah, it's not quite right, and is especially jarring in the nice, clean, blown up pixels in the top example)
x
xxx
x
xx x
xxx
x
x
But I think you're right. xx
x
x
x
xxThe extra 1 pixel of height for the text in green, in particular, allowed for some cool "italic" styling, especially for letters like E, D, J, U, V
Yowsa. For those playing at home, that monitor is over 20 years old:
https://everymac.com/monitors/apple/studio_cinema/specs/appl...
but wowza!! $900 for that lil guy, dang!
Can't help but think if they could sell that for, idk, $300? even $400. You'd get all kinds of people using it in fun ways.
-- ON another note, a few months back some guy posted here how he made a very simple midi device for his young daughter with a raspberry pi or the like. I do wonder if you could make a pocked-sized EQ-mixer with crossfade with this kind of interface. Do you know of anything like that?
xxx
x x
xxxxx
x
xxxx
It looks a bit like a 9 but the descender is different.(Could play around with how many x's to put on the first and third lines, particularly whether to set the first/last bits on those lines as "corners" or make it more rounded.)
I would also modify the top of lowercase e in a similar fashion.
xx
x x
xx
x x
xx
A little awkward, but very distinct from the 9. The reason to narrow the head of it is to allow the end of the descender to rise upwards without turning it into an 8.https://www.pagetable.com/?p=901
> Creating a 4×8 character set that is both readable and looks good is not easy. There has to be a one-pixel gap between characters, so characters can effectively only be 3 pixels wide. For characters like “M” and “N”, this is a challenge.
Competitors could apparently show 80 characters per line, but only by switching to a horribly unreadable 2x7 font. "I found the tiny 80 column characters tiring to read but the mode is useful if you want to see what the finished output will be like." - https://www.crashonline.org.uk/31/words.htm . I can't find a screenshot.
EDIT: realized a better demo for this discussion would be the photos I took of all the tiny bitmap fonts I had converted to the C array style at the time. Thread has more but here are my favorites: https://bsky.app/profile/janiczek.cz/post/3mh25atboz224
I think 3x5 works well enough:
Does the NC in CC4.0 BY-NC-SA mean I couldn't for example sell a device using this?
What fustrates me about this is that it's such a narrow workspace, if I decided I wanted a 5x5 font there are very few ways to do that.
I get that this probably isn't copyrightable but at least make your license sensible.
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.
At first, it seemed like an Easter egg, but it's probably just a natural happenstance of two people centuries apart deciding to represent the first ten letters of the alphabet in a 2x2 grid with a general idea to use fewer dots at the start than at the end.
Released by the author at https://joefatula.com/twoslice.html
[1]: unless you use multiple glyphs for a char. Or maybe it'd be possible to interpret if the glyph-to-char mapping pattern was very carefully thought out..
Side note: the Interact triple scanned every row of pixels, so the vertical resolution was only 77 (ish, it was overscanned) pixels. Had they used a bit more RAM for the display they could have easily just double-scanned each row and increased to a 5x7 font. That would have been a huge improvement.
BTW still need to find a museum that wants an Interact.
- https://www.hpcalc.org/hp48/games/board/sshots/ship.png
- https://www.hpcalc.org/hp48/games/board/sshots/othellof.png
But they mention:
> Narrower 4x5 and 3x5 dimensions are possible, but would require sacrificing the M, dotted zero, and reduce U/V/Y distinctiveness
Note whole the characters are 5x5, the character box is 6x6 to provide for Spain between characters, from what I can tell from https://maurycyz.com/projects/mcufont/real.jpg
The glyph coverage is enough for most programming languages; missing glyphs just fall back to a pixelized look.
Lode 1.5x works really well at 110 ppi displays, which seems to be the uncanny valley for antialiasing.
In theory (focusing on non colourblind english speakers) there could be say 8 distinct colours and 8 shapes giving 64 chars.
https://www.omniglot.com/conscripts/dotsies.htm (original site https://www.dotsies.org, which has a casual introduction text that slowly transitions into dots; however, it was unavailable at the time of writing.)
However I don't think even native developers with full Unicode language support tend to use Japanese/Chinese characters in variable names or keywords. There is the occasional hybrid registry key such as "令和_令_Reiwa_R" (which will allow the temporary replacement of the name of the Emperor in Windows dates when the current one dies).
Small text is an interesting problem, but we have moved on from pixels as useful units.
The smallest legible one I've come up with is 4x6 (with inter-character spacing).
https://fontstruct.com/fontstructions/show/1656341/tom-thumb
Doing the math, 70.5mm / 1440px = 0.05mm per pixel, x5 = 0.25mm wide. Just a guess though, I'm not exactly sure how big a period is without a microscope.
Plenty of systems did it like CP/M on the Spectrum +3 and it looks pretty decent.
https://archive.org/details/zx_Tasword_2_Tutor_1983_Tasman_S...
I haven't done the pixel-by-pixel deviation checking, but they may be comparable and independently derived!
I can't at all.
But I'm backfilling a lot of information from context, the same way that this works: https://www.dictionary.com/articles/typoglycemia
It would have been much harder to read a series of random words, or another piece of text with a less predictable structure.
I would have loved to have seen a sample of the 4x5, not just the 5x5.
VIP Term, and others, had 3x7 fonts on 4x8 grids to connect to 80-column mainframes.
I ended up finding a bitmap and modifying it for my own needs. That was fun.
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).
Find me a 0.66" OLED display for ~$1 that has hundreds of pixels on each side then.
> 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).
What train of thought led you to think people are primarily researching colorising new B&W photos? As opposed to historical ones, or those of relatives taken when they were young? You can take a colour photo of granddad today but most likely the photos of him in his 20s are all in black and white.
Every grayscale photo of someone famous has already been colorized during the past 50 years. If there are only grayscale photos of you, you were probably born before 1900, and all your friends or your children (who might want to colorize your photo) are probably dead, too.
2. Don’t forget about B&W films! Getting automatic methods to be consistent over a long length is still not 100% solved. People are very interested in seeing films from WW1 and WW2 in colour, for instance.
3. Plenty of people (myself included) have relatives in their 80s or 90s. Or maybe someone wants to see their ancestors from the 19th century in colour for whatever reason?
Bloody hell, warn people before you post things like that.
- https://github.com/akavel/clawtype#clawtype
- mandatory "Bad Apple" vid (not mine): https://youtu.be/v6HidvezKBI
(for the "splash screen" linked above I used font u8g2_font_3x5im_te: https://docs.rs/u8g2-fonts/latest/u8g2_fonts/fonts/struct.u8... and a multilingual u8g2_font_tiny5_t_all: https://docs.rs/u8g2-fonts/latest/u8g2_fonts/fonts/struct.u8...)
* a huge corpus of historical imagery
* cheaper grayscale cameras + post processing will surely enable all sorts of uses we haven't imagined yet.
* a lower power CCD and post-processing after the fact or on a different device allows for better power budget in cheap drones (etc).
* these algorithms can likely be tuned or used as a stepping stone for ones that convert non-visible wavelengths into color images.
And that's just off the top of my head as someone who doesn't really work with that stuff. I'm sure there are plenty of other reasons I can't think of.
Also, if there are only grayscale photos of you, you were probably born before 1900, and all your friends or your children (who might want to colorize your photo) are probably dead, too.
It's a very strange argument to make: there exist some photos therefore other photos may not be colorized!
Seeing that a "neat tool" exists and using that "neat tool" are two diffrent things. Google Glass was neat, too.
Just because you don't want to use a tool, it doesn't mean others also won't.
But today, only 1% of people has black-and-white childhood photos. I just makes me want to argue when people pretend that it is still needed as much as in 1995 :D
I was also arguing with my friends about buying laptops with an optical drive ten years ago :D
There are also several 32x32 led panels, which one could imagine needing some text.
Also, this kind of thing is just interesting, regardless of the usefulness.
https://www.crystalfontz.com/product/cfal12856a00151b-128x56... - 128x56
https://www.crystalfontz.com/product/cfag12864u4nfi-128x64-t... - 128x64
There's a whole world of embedded devices with wide varieties of screen resolutions.
I think you will not be able to read 5x5 pixel letters on that display (a letter would be about 1 mm tall).
I tested this on a phone, and was able to read it without much difficulty at roughly 18-30 inches.
Actually, the 4x6 doesn't look half bad if viewed at wrist-level.
128x64 monochrome screens are very common in both LCD and OLED format.
I don't think there's a need for tiny fonts on an e-reader, even one with a small screen. IMO when you're reading a book I think you want to prioritize readability, not characters-per-page.
I could almost fit an entire 80x40 terminal on my watch face!
I mean, look at the capital "I".
;-)