> 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.
Amazing. I zoomed in with my phone on the generated image and was surprised to see I could just make out the text! https://storage.j0.hn/subpixelfont.png - Also wow my screen is dirty af
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
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.
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.
Most tiny fonts are actually terrible to read at a glance especially when they're rendered at 1:1 scale.
I've had a need couple years ago for a very tiny and compact font for a game mod I was making. And after trying a lot of 33, 35, even 2*5 fonts - they were all terrible to read.
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].
As I explained in the last paragraph of my comment, it was deleted for some reason. I also couldn't find any archives of that page. I only added the link to show where I got the font from, in case people will miss the link inside the license file.
This reminds me of the book Arcade Game Typography (https://www.counter-print.co.uk/products/arcade-game-typogra...), which looks at the history of a lot of arcade game fonts, sorted by category, and often has a full sprite sheet of the letters. I've been meaning to make my own digitised copy of all of the fonts for a while
> 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.
I think the `e` looks better in the 'real pixels' example they gave; I find my tends to 'fill in' the space of the top part of the letter, and I suspect in the context of a longer sentence it'd be pretty easy to parse.
(but yeah, it's not quite right, and is especially jarring in the nice, clean, blown up pixels in the top example)
It definitely looks better in the second screenshot than the first, but you have to be very, very close to the screen in order to see individual pixels like that. And on low-res displays, which this sort of font might be necessary for, it's going to look somewhat different because low-res screens tend to be chosen for cheapness, and cheap screens tend to be monochrome, so none of that artistic fuzzy subpixel coloring.
Using multi-level grayscale instead of just two pixel states, on and off, can produce readable text at even smaller font sizes. The catch is that I have to say "text", not "letters", i.e., rely on humans inferring the too-blurry letters from their context. And I do not even need a specially designed font for that.
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.
When I was building the layouts for my e-paper calendars , I needed pixel fonts due to the lack of grayscale on the display. It was surprisingly hard to find them - especially with customers asking for Cyrillic characters.
This reminded me of work to get the C64 to do 80 columns in software, using a 3x7 pixel grid (with one row and column used for spacing), some of which were part of commercial products.
> 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.
I remember using Tasword Two for the ZX Spectrum. Even with a 3x7 font (4x8 grid) it only achieves 64 characters per line. Apparently in Tasword III the authors implemented 128 characters per line - by scrolling.
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.
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
yo! thanks for sharing, this is a wicked cool device. I've always wanted a "pocket" mixer to take with me on planes and trains. I know there are smaller devices that can perform that duty but their more like repurposed EQ or audio interfaces that can be used to mix.
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...)
Here is how I would personally modify lowercase g:
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.
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.
Looking at the screenshots shows why there's a reason 5x7 is the "standard" for tiny legible fonts that cover all of ASCII, e.g. as found in character LCD displays:
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
This is gorgeous. 5x5 is a wild constraint — every pixel has to earn its place. The fact that it's still readable at that size says a lot about the craft.
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.
In the 2x2 resolution (which can't support all of Braille, but does support the first 10 characters), A, B, C, E, and F are all the recognizable Braille shapes for those letters (though in offset positions).
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.
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…
The ship computers in the old game Privateer (and probably Wing Commander) had a pretty nice pixel font. Most of the characters were 3x4, but with a few niceties: descenders (j, p, q) could go below the normal outline, and wide glyphs like m/n/w were more than 3 pixels wide. Overall, pretty readable for uppercase/lowercase/numerics, and included a few "futuristic" touches.
This is cool, but my problem is the opposite: I have a modern laptop screen with tiny pixels. What I need is then a huge bitmap font... does anybody have any?
Makes me wonder. Geeks are happy to learn a new keyboard layout. What about a new alphabet that can give higher on screen density of data. Now 3x3 isn't necessary because we have high res monitors. We need 26 distinguishable shapes for a-z.
In theory (focusing on non colourblind english speakers) there could be say 8 distinct colours and 8 shapes giving 64 chars.
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).
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.
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.
The 3x3 are the large text blocks - intended to use in 3x3 groups to form letters and numbers from the fragments in the range. There are 2x4 mosaics as well, separate from the Braille alphabet. These are symbols coming from legacy systems (such as the HP terminals and Kaypro CP/M machines).
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).
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.
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.
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).
> Too bad "tiny screens" pretty much do not exist anymore. Screens with hundreds of pixels on each side are very cheap already.
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.
If you know a person who is 70 years old, they were 20 in 1975 - color photos existed back then.
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.
1. Improving the colourisation algorithms has value, it might be that the available colourised photos of celebrities have inaccurate colours or are of poorer quality than say, one done with a diffusion model that can be instructed about the colours of certain objects
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?
Color photos existed but color film and processing was very expensive (and while mono film development "middle school student can do at home" for a generation, home color work wasn't a thing until late 80s/early 90s as far as I recall.) So in practice, I personally have childhood pics of my dad with his mom and sister - that were shot black and white but colorized by being hand painted, and this was pretty common...
Quick browsing at adafruit.com (or any other similar vendor), reveals plenty of displays that are 128, 240, and 320 pixels wide. At 6 pixels of width per character, that's only 21, 40, and 53 characters wide. Seems quite useful to me.
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.
I wish that were the case. I'm trying to make a tiny emulated z80 computer, and to fit a screen of 64x16 test on a smartwatch sized screen, I have to use a 4x6 pixel font, because the highest res, most available screen I can get in that size is just 240x280. High-res 400+ px smartwatch screens like the apple watch has - you can only get those if you buy 10000 at once and sign an NDA.
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.
0.27mm dot pitch, so each letter would be 1.35mm square in a box of 1.62mm square. I expect I could read it just fine at the distances I'd expect to look at such a screen.
I tested this on a phone, and was able to read it without much difficulty at roughly 18-30 inches.
There exist plenty of reasons to colorize grayscale photos in 2026.
* 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.
Grayscale cameras are not that much cheaper than color cameras. And if you decided to use a grayscale camera on purpose, you probably do not care about the color information (which would be totally "made up" by the colorizing algorithm).
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.
What does the existence of a color photograph of my grandmother as an old woman have to do with my desire to colorize a grayscale photo of her as a child? Or colorize the photos of her wedding?
It's a very strange argument to make: there exist some photos therefore other photos may not be colorized!
I am just saying that the colorization was needed in 1995, when 90% of people had black-and-white childhood photos.
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
I have not yet, because my uncle hasn't scanned those photos yet. I have colorized the pictures of my grandmother as a child, and some previously unmentioned ones of the farm my grandfather grew up on. I've also colorized some photos of ancestors that no one alive this century has ever met.
Just because you don't want to use a tool, it doesn't mean others also won't.
The resolution on my X4 is pretty decent, and regular fonts look just fine.
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 think on my 6.8" WQHD+ 3200 x 1440 phone screen (70.5mm width), an actual 5x5 pixel square might be the size of a period → .
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.
Many decades ago it was anti aliasing with MS clear type that made small text possible. Yet, before that, for regular TV, this had been worked out, so lots of text could be shown on things like business TV, in glorious analogue PAL or never twice same colour for Americans.
Small text is an interesting problem, but we have moved on from pixels as useful units.
Nice overview.
> 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/
1x5 can also work if you take advantage of subpixel rendering https://www.msarnoff.org/millitext/
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...
The content isn't viewable in my area. Presumably the UK has rules about minimum font sizes.
No, it's the ultra authoritarian government stopping you from viewing it.
Replace "imgur.com" in the links with "rimgo.bcow.xyz" and consider voting against the parties of surveillance next time you can :)
https://www.bbc.co.uk/news/articles/c4gzxv5gy3qo
Amazing. I zoomed in with my phone on the generated image and was surprised to see I could just make out the text! https://storage.j0.hn/subpixelfont.png - Also wow my screen is dirty af
Suggest you check your .htaccess (or however you secure your server) for storage.j0.hn.
Whoa, amazing!
It seems like you need 2x5 for legibility
"if you look closely at the screen"
My child has one of those "Kids' microscopes":
https://www.amazon.com/Best-Sellers-Kids'-Microscopes/zgbs/t...
Magnification is around 5x, but this is more than enough to see subpixels.
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
$30 devices don't have apple screens.
Retro games
Electronic devices
Fine prints in images
FTA "Even a low-resolution 384x288 display has 110 thousand pixels: way too big to fit in the AVRs memory"
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.
Most tiny fonts are actually terrible to read at a glance especially when they're rendered at 1:1 scale. I've had a need couple years ago for a very tiny and compact font for a game mod I was making. And after trying a lot of 33, 35, even 2*5 fonts - they were all terrible to read.
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...
> The server returned a "404 Not Found".
for [0]
As I explained in the last paragraph of my comment, it was deleted for some reason. I also couldn't find any archives of that page. I only added the link to show where I got the font from, in case people will miss the link inside the license file.
This reminds me of the book Arcade Game Typography (https://www.counter-print.co.uk/products/arcade-game-typogra...), which looks at the history of a lot of arcade game fonts, sorted by category, and often has a full sprite sheet of the letters. I've been meaning to make my own digitised copy of all of the fonts for a while
Similar discussion for CJK scripts
https://chinese.stackexchange.com/questions/16669/lowest-pix...
> 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:
> if you also want lowercase letters to have less height than uppercase
I think that's the least of the properties I'd be willing to sacrifice to have a font that tiny.
I think the `e` looks better in the 'real pixels' example they gave; I find my tends to 'fill in' the space of the top part of the letter, and I suspect in the context of a longer sentence it'd be pretty easy to parse.
(but yeah, it's not quite right, and is especially jarring in the nice, clean, blown up pixels in the top example)
It definitely looks better in the second screenshot than the first, but you have to be very, very close to the screen in order to see individual pixels like that. And on low-res displays, which this sort of font might be necessary for, it's going to look somewhat different because low-res screens tend to be chosen for cheapness, and cheap screens tend to be monochrome, so none of that artistic fuzzy subpixel coloring.
Was it intended that we should fill in the word 'mind' ourselves, to prove your point???
The site looks interesting, but it has a pop up called "navigation" that cannot be closed, and sits over the page rendering parts unreadable.
Using multi-level grayscale instead of just two pixel states, on and off, can produce readable text at even smaller font sizes. The catch is that I have to say "text", not "letters", i.e., rely on humans inferring the too-blurry letters from their context. And I do not even need a specially designed font for that.
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.
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.
I think I'd go with something like
didn't even think about the stem on the bottom. Originally I was thinking just the cross
But I think you're right.Agree about lowercase t. I was surprised the lowercase l didn't look more like
Idk why maybe my font-size on this screen is too small but when I glanced at that title I read: "Sex Pistols font for tiny screens" haha
I love this but the licensing is ashame.
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.
Don't forget Jason Kottke's Silkscreen font: https://kottke.org/plus/type/silkscreen/
When I was building the layouts for my e-paper calendars , I needed pixel fonts due to the lack of grayscale on the display. It was surprisingly hard to find them - especially with customers asking for Cyrillic characters.
I always loved the 5x6 Pixel font in this classic 90s PC game: https://covertaction.fandom.com/wiki/Cryptography_(Mini-Game...
The 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
This reminded me of work to get the C64 to do 80 columns in software, using a 3x7 pixel grid (with one row and column used for spacing), some of which were part of commercial products.
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.
I remember using Tasword Two for the ZX Spectrum. Even with a 3x7 font (4x8 grid) it only achieves 64 characters per line. Apparently in Tasword III the authors implemented 128 characters per line - by scrolling.
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.
"Images were displayed on an Apple 30" Cinema Display"
Yowsa. For those playing at home, that monitor is over 20 years old:
https://everymac.com/monitors/apple/studio_cinema/specs/appl...
I'm gonna use this article to explain to my peers about LLM quantization!
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
yo! thanks for sharing, this is a wicked cool device. I've always wanted a "pocket" mixer to take with me on planes and trains. I know there are smaller devices that can perform that duty but their more like repurposed EQ or audio interfaces that can be used to mix.
but wowza!! $900 for that lil guy, dang!
>Narrower 4x5 and 3x5 dimensions are possible, but would require sacrificing the M, dotted zero, and reduce U/V/Y distinctiveness.
I think 3x5 works well enough:
https://robey.lag.net/2010/01/23/tiny-monospace-font.html
Used this kind of font for output on the 320x200 screen all of the time in the late 80s while coding 68k asm on the Atari St
Small g is unreadable. I obviously know the alphabet and despite that it took quite some time to understand what letter is that.
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...)
Perhaps they should've used something similar to the 9. However then it wouldn't really look like a lower-case g.
Here is how I would personally modify lowercase g:
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.
I might do something like this instead:
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.Fonts like this are also great for huge screens like LED signage. Big pixels and very low resolution, so logically a tiny screen.
Looking at the screenshots shows why there's a reason 5x7 is the "standard" for tiny legible fonts that cover all of ASCII, e.g. as found in character LCD displays:
https://en.wikipedia.org/wiki/HD44780_(integrated_circuit)
Oh cool, I have to try these fonts on my amber CRT getting commands from an Elm webapp ([demo](https://youtu.be/M9Q5tFPtGaA?t=121), [code](https://github.com/Janiczek/crt-esp32-elm/tree/main/vdom/)) - there's not a lot of real estate in a 400x240 NTSC resolution. But the scanlined rendering has so much charm!
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
This is gorgeous. 5x5 is a wild constraint — every pixel has to earn its place. The fact that it's still readable at that size says a lot about the craft.
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.
In the 2x2 resolution (which can't support all of Braille, but does support the first 10 characters), A, B, C, E, and F are all the recognizable Braille shapes for those letters (though in offset positions).
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.
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…
Dude I was thinking exactly that, might have to mod my f0 momentum firmware
Somewhat relevant, I learned a mapping of individual characters to colors with a chrome extension I made, so the text size doesn't really matter since words are just sequences of colors. https://chromewebstore.google.com/detail/rainbow-text/jhkgcm...
The ship computers in the old game Privateer (and probably Wing Commander) had a pretty nice pixel font. Most of the characters were 3x4, but with a few niceties: descenders (j, p, q) could go below the normal outline, and wide glyphs like m/n/w were more than 3 pixels wide. Overall, pretty readable for uppercase/lowercase/numerics, and included a few "futuristic" touches.
This is cool, but my problem is the opposite: I have a modern laptop screen with tiny pixels. What I need is then a huge bitmap font... does anybody have any?
Why a bitmap font if you have tiny pixels? Just use a sharp font like Iosevka or similar.
Here are a few made by upscaling and then manually cleaning up classic fonts: https://github.com/B2HDPI/B2HDPI
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.
Makes me wonder. Geeks are happy to learn a new keyboard layout. What about a new alphabet that can give higher on screen density of data. Now 3x3 isn't necessary because we have high res monitors. We need 26 distinguishable shapes for a-z.
In theory (focusing on non colourblind english speakers) there could be say 8 distinct colours and 8 shapes giving 64 chars.
There was a project a while back that attempted to do this, named “Dotsies”.
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.)
As various Japanese developers have discovered, you can fit quite a lot of distinct characters into 8x8 if your audience is familiar with them: https://japanese.stackexchange.com/questions/36423/is-this-8...
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).
Doesn't braille already cover this need?
This would be insanely cool. Building characters for the digital era not for handwriting.
The LINC minicomputer operating system LAP6 came with a 4x5 font, but it didn't have lower case.
This is great, i use a 3x3 font i drew up for lowres games, though there are many example that look mostly the same since it is such a small space.
You could call it the "Minimum Viable Font"
Some non-ascii characters will be hard on 5x5 like ñ o É
In the 3 x 2 example, the text is supposed to say “can probably” but I think the glyph for b was used instead, so it reads “you ban probably”.
6×3 is also good (fits on a 7×4 grid).
https://archive.org/details/zx_Tasword_2_Tutor_1983_Tasman_S...
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.
If you start from the bottom of the page directly and scroll up then the 5x5 looks even better.
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 assume you mean Braille is the 2x4 set. What range introduces 3x3 codepoints?
The 3x3 are the large text blocks - intended to use in 3x3 groups to form letters and numbers from the fragments in the range. There are 2x4 mosaics as well, separate from the Braille alphabet. These are symbols coming from legacy systems (such as the HP terminals and Kaypro CP/M machines).
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).
I didn't seen any mention of Tony Pai's quite good 3x3 font (only uppercase):
https://tonypai.itch.io/3x3-pixel-font
A bunch of these appear to be 9x9-ish? (B, P, Q, R, Z, 0, most of the non-alphanumerics...)
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.
CGA era developers are like, "Yea been there done that..."
And Commodore 64 people.
VIP Term, and others, had 3x7 fonts on 4x8 grids to connect to 80-column mainframes.
...and don't forget "twoslice": https://joefatula.com/twoslice.html
I haven't done the pixel-by-pixel deviation checking, but they may be comparable and independently derived!
Can people read that? I want to do a study to see the cognitive difference between people who can read that and those who can't.
I can't at all.
I could read every word at nearly full speed, with the exception of "tends" that required a lot of puzzling out.
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 tried copying a random line of text, pasted it into the textbox and could read most of it. Only a few words tripped me up.
See also Picket Right, 2 pixels wide (7 high) and still readable: https://stormgold.itch.io/picket-right-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.
These look great.
I would have loved to have seen a sample of the 4x5, not just the 5x5.
I've used 3x5 fonts on a couple of embedded projects and honestly the biggest pain isn't the font itself, its getting the spacing right.
Incomplete blog post! Where was the comparison vs. a 1x1 pixel font?
simplifier has a 4x4 version : https://simplifier.neocities.org/4x4
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).
> Too bad "tiny screens" pretty much do not exist anymore. Screens with hundreds of pixels on each side are very cheap already.
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.
If you know a person who is 70 years old, they were 20 in 1975 - color photos existed back then.
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.
1. Improving the colourisation algorithms has value, it might be that the available colourised photos of celebrities have inaccurate colours or are of poorer quality than say, one done with a diffusion model that can be instructed about the colours of certain objects
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?
Color photos existed but color film and processing was very expensive (and while mono film development "middle school student can do at home" for a generation, home color work wasn't a thing until late 80s/early 90s as far as I recall.) So in practice, I personally have childhood pics of my dad with his mom and sister - that were shot black and white but colorized by being hand painted, and this was pretty common...
> If you know a person who is 70 years old, they were 20 in 1975
Bloody hell, warn people before you post things like that.
There's a really nice, very low-power, 84x48 B&W LCD screen still widely available for electronics use, a clone of a Nokia 5110 screen - see e.g.:
- 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...)
Quick browsing at adafruit.com (or any other similar vendor), reveals plenty of displays that are 128, 240, and 320 pixels wide. At 6 pixels of width per character, that's only 21, 40, and 53 characters wide. Seems quite useful to me.
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.
I wish that were the case. I'm trying to make a tiny emulated z80 computer, and to fit a screen of 64x16 test on a smartwatch sized screen, I have to use a 4x6 pixel font, because the highest res, most available screen I can get in that size is just 240x280. High-res 400+ px smartwatch screens like the apple watch has - you can only get those if you buy 10000 at once and sign an NDA.
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.
> Too bad "tiny screens" pretty much do not exist anymore.
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.
That is not a tiny screen, it has over 7 thousand pixels.
I think you will not be able to read 5x5 pixel letters on that display (a letter would be about 1 mm tall).
0.27mm dot pitch, so each letter would be 1.35mm square in a box of 1.62mm square. I expect I could read it just fine at the distances I'd expect to look at such a screen.
I tested this on a phone, and was able to read it without much difficulty at roughly 18-30 inches.
What is your definition of a tiny screen?
There exist plenty of reasons to colorize grayscale photos in 2026.
* 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.
Grayscale cameras are not that much cheaper than color cameras. And if you decided to use a grayscale camera on purpose, you probably do not care about the color information (which would be totally "made up" by the colorizing algorithm).
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.
What does the existence of a color photograph of my grandmother as an old woman have to do with my desire to colorize a grayscale photo of her as a child? Or colorize the photos of her wedding?
It's a very strange argument to make: there exist some photos therefore other photos may not be colorized!
Did you colorize grayscale photos of your grandmothers wedding?
Seeing that a "neat tool" exists and using that "neat tool" are two diffrent things. Google Glass was neat, too.
Is there a particular reason you resent what other people enjoy researching and spending time on, enough so to post all this?
I am just saying that the colorization was needed in 1995, when 90% of people had black-and-white childhood photos.
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
I have not yet, because my uncle hasn't scanned those photos yet. I have colorized the pictures of my grandmother as a child, and some previously unmentioned ones of the farm my grandfather grew up on. I've also colorized some photos of ancestors that no one alive this century has ever met.
Just because you don't want to use a tool, it doesn't mean others also won't.
what are you even talking about? enough people want to colorize pictures that there's a damn Know Your Meme page for it
https://knowyourmeme.com/memes/colorized-history
Terminals are tiny screens.
Wouldn't something like this be ideal for devices like Xteink X4?
The resolution on my X4 is pretty decent, and regular fonts look just fine.
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.
Very cool for anyone with flawless eyesight!
At that point, just go Braille! Amazing work anyway.
The 3x5 size is pretty common in wplace, it's a good compromise.
Like dot matrix printer fonts
See also u8g2 fonts: https://docs.rs/u8g2-fonts/latest/u8g2_fonts/fonts/index.htm... (available also in original C at: https://github.com/olikraus/u8g2/wiki/fntlistall)
I love the design of your website!
I remember a weird font with a special alphabet made of dots or something like that. Not Braille, it was for fast reading or such.
I think on my 6.8" WQHD+ 3200 x 1440 phone screen (70.5mm width), an actual 5x5 pixel square might be the size of a period → .
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.
Many decades ago it was anti aliasing with MS clear type that made small text possible. Yet, before that, for regular TV, this had been worked out, so lots of text could be shown on things like business TV, in glorious analogue PAL or never twice same colour for Americans.
Small text is an interesting problem, but we have moved on from pixels as useful units.
And for 1x1 screens ..........................
I have used this one before, it uses one fewer pixels per char: (4x6 = 24 < 25 = 5x5)
https://fontstruct.com/fontstructions/show/1656341/tom-thumb
Gonna have to ask for a proportional version of this font.
I mean, look at the capital "I".
;-)
bunk! he left out 1x1
i really like your website design
Now do 1x2 using Morse code.
Gg