5x5 Pixel font for tiny screens

(maurycyz.com)

268 points | by zdw 3 days ago

35 comments

  • FelipeCortez 3 hours ago
    1x5 can also work if you take advantage of subpixel rendering https://www.msarnoff.org/millitext/
  • ludocode 1 hour ago
    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.

  • mjaniczek 33 minutes ago
    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

  • kibwen 3 hours ago
    > 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.

    • JoshTriplett 15 minutes ago
      > 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.

    • mulr00ney 2 hours ago
      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)

  • soperj 3 hours ago
    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.
    • gpm 2 hours ago
      I think I'd go with something like

           x
          xxx
           x
           xx
      • soperj 48 minutes ago
        didn't even think about the stem on the bottom. Originally I was thinking just the cross

             x
            xxx
             x
             x
        
        But I think you're right.
  • bmurray7jhu 3 hours ago
  • jh00ker 1 hour ago
    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

  • namanvyas 24 minutes ago
    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.
  • huydotnet 23 minutes ago
    I'm gonna use this article to explain to my peers about LLM quantization!
  • octagons 2 hours ago
    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…
    • Footprint0521 14 minutes ago
      Dude I was thinking exactly that, might have to mod my f0 momentum firmware
  • mikestew 1 hour ago
    "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...

  • Theodores 8 minutes ago
    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.

  • GolfPopper 1 hour ago
    I didn't seen any mention of Tony Pai's quite good 3x3 font (only uppercase):

    https://tonypai.itch.io/3x3-pixel-font

    • throwaway287391 25 minutes ago
      A bunch of these appear to be 9x9-ish? (B, P, Q, R, Z, 0, most of the non-alphanumerics...)
  • TruthSHIFT 2 hours ago
    Don't forget Jason Kottke's Silkscreen font: https://kottke.org/plus/type/silkscreen/
  • lostmsu 3 days ago
    Small g is unreadable. I obviously know the alphabet and despite that it took quite some time to understand what letter is that.
    • bartvk 3 hours ago
      Perhaps they should've used something similar to the 9. However then it wouldn't really look like a lower-case g.
      • antraip 1 hour ago
        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.

        • JoshTriplett 12 minutes ago
          I might do something like this instead:

                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 descender to rise upwards without turning it into an 8.
  • pugworthy 49 minutes ago
    CGA era developers are like, "Yea been there done that..."
  • rbanffy 2 hours ago
    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.
    • kevin_thibedeau 1 hour ago
      I assume you mean Braille is the 2x4 set. What range introduces 3x3 codepoints?
  • z2 3 hours ago
    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.

  • iamjackg 3 hours ago
    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
  • Dwedit 2 hours ago
    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.
  • IvanK_net 3 hours ago
    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).

    • akavel 2 hours ago
      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...)

    • joefourier 2 hours ago
      > 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.

      • IvanK_net 2 hours ago
        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.

        • joefourier 1 hour ago
          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?

        • zimpenfish 2 hours ago
          > 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.

    • compiler-guy 3 hours ago
      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.

    • JoshTriplett 3 hours ago
      > 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.

      • IvanK_net 1 hour ago
        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).

        • JoshTriplett 0 minutes ago
          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.

    • sophacles 3 hours ago
      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.

      • IvanK_net 2 hours ago
        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.

        • sophacles 2 hours ago
          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!

          • IvanK_net 1 hour ago
            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.

            • JoshTriplett 10 minutes ago
              Is there a particular reason you resent what other people enjoy researching and spending time on, enough so to post all this?
            • nancyminusone 4 minutes ago
              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

            • sophacles 8 minutes ago
              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.

    • kevin_thibedeau 1 hour ago
      Terminals are tiny screens.
  • damieng 3 hours ago
    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.

  • ghssds 2 hours ago
    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.
  • ESMP 1 hour ago
    Wouldn't something like this be ideal for devices like Xteink X4?
  • dfox 3 hours ago
    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).
  • calebm 2 hours ago
    You could call it the "Minimum Viable Font"
  • JoshTriplett 3 hours ago
    These look great.

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

  • DonThomasitos 3 hours ago
    Incomplete blog post! Where was the comparison vs. a 1x1 pixel font?
  • perarneng 2 hours ago
    If you start from the bottom of the page directly and scroll up then the 5x5 looks even better.
  • tliltocatl 1 hour ago
    At that point, just go Braille! Amazing work anyway.
  • akavel 2 hours ago
  • onlyrealcuzzo 2 hours ago
    I love the design of your website!
  • ramses0 3 hours ago
    ...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!

    • graybeardhacker 2 hours ago
      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.

      • JoshTriplett 2 hours ago
        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.

    • Nnnes 3 hours ago
      See also Picket Right, 2 pixels wide (7 high) and still readable: https://stormgold.itch.io/picket-right-font
  • dmitrygr 1 hour ago
    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

  • thesuperevil 1 hour ago
    Gg