4x4 ASCII Font (2016)

3 years ago (simplifier.neocities.org)

This is smaller than I've ventured to go; I used 4×6 in http://canonical.org/~kragen/sw/dofonts-1k.html (and I think the font is Janne Kujala's design; I wouldn't be surprised if I changed a few things, but it's been more than ten years, so I don't remember) and a proportional font that averaged 3.6×6 in http://canonical.org/~kragen/sw/netbook-misc-devel/6-pixel-1..., used by http://canonical.org/~kragen/sw/netbook-misc-devel/propfontr... to render http://canonical.org/~kragen/bible-columns.

4×6 is 24 pixels, which is one pixel less than 5×5.

If you're rendering a single column of characters, I think you can do 3×n, where n ranges up to 7 or 8 but is usually more like 5: http://canonical.org/~kragen/sw/netbook-misc-devel/3xnfont.

All of these are larger than 4×4.

My hat is off to the Simplifier.

  • The smallest I ever did was 4x8 on a Commodore 64. The actual text was 3x7, with a one pixel spacer on the right and bottom. Did this for a terminal emulator that output 80x24 text (plus a status line) on the 320x200 screen.

    Rending was slow, but that's OK because 1200 baud was state of the art at the time, and the computer could keep up OK. 2400 baud worked, if there wasn't too much scrolling.

    Eventually we came up with a way of doing a 8x8 characters on a 640x200 screen using some of the scrolling methods we saw from the demo scene, but it was blurry, even on a good monitor, and we couldn't output the characters fast enough to be usable. By then the 128 was out, and it was assumed people who wanted 80 columns would just use that machine's real 80-column mode.

  • I guess it is a 50% increase, but yours is really good, it could actually legitimately be used.

    • Thank you! My proportional font is about a 35% increase over 4×4, so I guess what you mean by "yours" is Janne Kujala's 4×6 design (from which I think I derived my proportional one).

      I think that if you use grayscale, and certainly if you use LCD subpixels, you can get readability down to a smaller size.

      4 replies →

  • Amazing how only an extra 2 pixels horizontally adds a ton of readability. If I was ever going to use a font like this I would hands down use your 4x6 version over the barely legible 4x4 that was linked.

  • It's a little annoying that my mobile browser refuses to zoom in far enough on that final image, now I can't properly admire the result of your work!

    The font sample looks great though

    Tangent: does anyone know how to tell mobile Firefox to use crisp rendering by default when directly loading images?

    • It's a 10 meg image. Drag it off the browser onto the desktop (or save it) then use an image viewer/editor to zoom.

Impressive how readable that still is, and how good our brains are at filling blanks, but you wouldn't want to rely on it. I'm not sure I can parse || as an x reliably for example. The uppercase alone works, lowercase is pretty challenging.

>DonHopkins on Oct 4, 2018 | parent | favorite | on: Sans Forgetica, a font designed to help you rememb...

Who can possibly forget the font that Mike Koss's "The Terminal" Apple ][ terminal emulator used to get 32 lines of 70 characters each in HIRES graphics mode in 1981? It's the most difficult to read font I've ever used regularly! (Don't try using it on a color TV, though.)

When you are at 4 by 4 you might as well use the entire 16 pixel space for every font, rather than worry about them lining up when lower case.

That way you can have a Q that looks like a Q:

    ***
    * *
    ***
       *

  • You do still have to worry somewhat about space in between characters; if it's missing too often, you can't recognize the character boundaries.

You can go smaller. Here I made 3x3, 3x4, 3x5:

https://twitter.com/tosuto_studio/status/1520071869529001984...

  • 3x3 in your link is exactly same size as 4x4 in initial post. It's just difference whether you include required amount of space in the dimensions.

    Edit: I was wrong. Some of Simplifier characters like j actually use full 4 pixel height and poke out of 3x3 block.

    • I get it, no problem. Some characters are extremely hard to make them fit in 3-4 pixels and I cheated on some too!

Its super hard to read. I don't like it. I generally like these low-fi fonts but this just doesn't lend itself to anything.

Those who used a Commodore-64 and yearned for 80-column displays ended up using 4x7 or 4x8 fonts, in other words this font with more vertical headroom. It worked relatively well, good enough for me to use it to write many a report in a version of SpeedScript [1] I had modified to use 80 column text using just such a font plus the necessary code to actually use it. I could switch between 40- and 80-character mode using a key combination and tended to use 40-character mode while entering text, 80-character mode while formatting the document.

[1] https://www.c64-wiki.com/wiki/SpeedScript

I think some of the lowercase letters, and many of the symbols, aren’t recognizable in isolation, but we know that typical English sentences are read word-by-word rather than letter-by-letter, which might add enough context to overcome this.

The uppercase version is kind of ok. I'm not a fan of the 9 or the D, but I think you'd quickly get used to that. What's even more impressive is that if you consider just uppercase and numbers, it's a 3x3 font.

I like this, it's like code golf but for fonts. It's cool that it can be done but not something I would use regularly.

I think the end game would be a 3x2 font that is basically Braille.

  • The linked font has 92 characters (lowercase, uppercase, digits, symbols, punctuation)

    A 3x2 font can only represent 64 (2^6) characters.

    So I guess part of the golfing would be defining what the minimum set of characters is.

  • BESM-6 had indicator of kernel registers - http://www.mailcom.com/besm6/ . Using economic font, one could provide more information directly to the user than if the font takes too many pixels.

    In other words, we may have situations where the font size is at premium.

As much as I love bitmapped fonts I just don't know if there's one that supports unicode yet and since I work internationally it's kind of a sticking point in wanting to go all the way to using them in my terminal or whatever, even though it looks incredibly crisp. Is there anything like that out there which at least covers characters in latin alphabets with diacritics and cyrillic?

I’ve often wanted to try and see how minimal one could make a font that covers some subset of Chinese hanzi, but I’ve never quite found the time.

I feel strongly that it should be possible to do this better.

4x4 box, yet most characters seem to be confined to 3x3 box. This can't be right.

  • The "character canvas" includes the space between characters and rows. Think about it like you have a fixed 4x4 grid into which you copy the 4x4 bitmaps without the possibility to offset them to create whitespace between the characters.

This is readable... if I zoom in. Might be good for screens that are extremely low-resolution, but large. Maybe something that isn't actually intended to be a screen or something.

So 4x4 is too small for readable font

  • Seems 5x5 is the limit. 5x5 is perfectly readable to me, while this 4x4 one is not always very clear.

    Example of 5x5: https://www.dafont.com/5x5.font?text=Small+fonts+have+always...

    • Nice but keep in mind that 5x5 font just punted on lower case letters entirely. So there are no descenders and they use the full 5x5 for upper case.

      The 4x4 font has lower case, so it reserves the bottom row for descenders gjpqy. Its upper case letters don't use the descenders row so they're really 3x3, which is barely readable. It's actually interesting that the all caps 3x3 is almost readable!

      For comparison it would be interesting to see a 4x4 all caps font, or a 5x5 with lower case.

    • Indeed, and for upper/lowercase there's a reason why 5x7 has become a de-facto standard for character LCDs; the letters EeMmWw all have 5 "elements" horizontally, and vertically you'd want more than 5 in order to distinguish upper/lowercase.

    • The submission is really a 3x3 font on a 4x4 canvas, but your linked font is a 5x5 font that would (presumably) be on a 6x6 canvas.

    • Tasword on the ZX Spectrum used a font that fitted into 4x8 (so the characters were 3 pixels wide). It wasn't brilliant by today's standards, especially given it would usually be plugged into an 80s TV. However, this allowed 64 character lines on a 32x24 screen.

      I worked for Tasman Software and answered lots of phone calls and written queries, so I know it was the first word processor used by a great many people. I wonder how many are now blind.

      https://en.wikipedia.org/wiki/Tasword https://en.wikipedia.org/wiki/ZX_Spectrum

  • Uppercase is readable.

    • Only in context. Letters like B, D, E, G, O, M and W are just literal blobs of pixels without any indication of what the actual letter might be. You can only tell C and E apart if you know what the other one looks like. Even worse for lower case. See x for example.

  • I wonder if - and if so, how much - its readability improves with readers' experience with it.

    • Yes indeed. I am sure the author learned to read texts with this font quite fluently while working on it, and you'd learn too with little practice.

      2 replies →

This is an interesting idea, but given how inexpensive the high resolution small SPI-connected LCD displays already are, this might not be a very useful solution.

Unfortunately there’s no hope for upgrading it to full Unicode coverage, as 2^16 is less than half the number of Unicode characters :(