kragen 3 years ago

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.

  • bee_rider 3 years ago

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

    • kragen 3 years ago

      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.

      • avmich 3 years ago

        The Simplifier's font is 4x4 including 1 pixel space on horizontal and vertical borders. The 4x6 font does not include that space, so it's an extra difference between them.

        • kragen 3 years ago

          I'm not sure whether you're saying that three lines of text in the Simplifier's font would be 15 pixels tall, or that three lines of text in Kujala's or my font would be 21 pixels tall, but I think neither of those is the case; the former would be 12 pixels tall, and the latter 18 pixels.

          • avmich 3 years ago

            I'm also saying that three letters of text in Simplifier's font would be 12 pixels wide, and in your font they will be 15 pixels wide.

            • kragen 3 years ago

              You're talking about Kujala's 4×6 font, then, but you have it wrong; three letters of text are 12 pixels wide in it. There's no extra implicit spacing pixel, either horizontally or vertically.

              As you can see from the code in http://canonical.org/~kragen/sw/dofonts-1k.html, moving to the next character position is "x += 4" and moving to the next line is "x = 0\n y += 6".

  • reaperducer 3 years ago

    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.

    • layer8 3 years ago

      I think I remember seeing 4x6 (3x5) on the C64, possibly in an environment like GEOS. That’s about the limit of what is usable, pixelation-wise.

      Edit: The smaller GEOS UI font indeed had a cap height of 5 pixels, but it was variable-width: https://upload.wikimedia.org/wikipedia/en/e/e2/GeOS_Commodor... (the font of the icon labels)

      • zimpenfish 3 years ago

        Tasword 2 (word processor) on the Spectrum did 4x8 (3x7 with a spacer) to get 64 characters per line which was miraculous at the time.

        (They probably kept it on an 8-high grid because the Spectrum's screen layout was a bit bonkers if you went off 8-alignment.)

  • vanderZwan 3 years ago

    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?

    • zasdffaa 3 years ago

      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.

  • FullyFunctional 3 years ago

    4x4 is impressive, but your 4x6 is shockingly good. Probably my new favorite.

  • magic_hamster 3 years ago

    Unlike the font in the linked example, your font is actually legible. Good job. The lowercase in the link is virtually unintelligible unless you really squint.

    • notorandit 3 years ago

      Fully agree.

      • kragen 3 years ago

        Again, just to clarify, the 4×6 font is (at least mostly, maybe entirely, I don't remember) the work of Janne V. Kujala in 4x6.bdf, as distributed by Markus Kuhn and now included in XFree86 (and presumably X.org, unless they've dropped BDFs entirely). The XLFD is -misc-fixed-medium-r-normal--6-60-75-75-c-40-iso10646-1, so you can try it by running

            xterm -fn -misc-fixed-medium-r-normal--6-60-75-75-c-40-iso10646-1
        

        My proportional n×6 and 3×n fonts are derived from it.

  • Thorentis 3 years ago

    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.

simonjgreen 3 years ago

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.

  • xyproto 3 years ago

    On the upside, x isn't used that much.

    • dsr_ 3 years ago

      As much as j, more than q and z.

  • Waterluvian 3 years ago

    I found the test sentence that we all know and love to be legible.

    I find a string of random characters to be impossible to read.

    • bee_rider 3 years ago

      I wonder if the test sentence is easier to read just because it is very familiar.

      • deepspace 3 years ago

        Yes! I read "The quick brown fox jumps over the lazy dog [something] times", and was scratching my head over the penultimate "word". Had to go into the source to recognize it as a string of digits.

      • yjftsjthsd-h 3 years ago

        Oh, totally; your brain is great at error correction, but the more you can reduce the search space / prefill the better it'll do.

      • smusamashah 3 years ago

        Test sentence is actually the training data for us. Luke one shot training. Author should have given random sentences after that one so that we could test how well have learned the font.

DonHopkins 3 years ago

https://news.ycombinator.com/item?id=27781606

DonHopkins on July 9, 2021 | parent | context | favorite | on: Hoard-of-bitfonts: bitmap fonts from disused opera...

It should include the 3x5 pixel font from Mike Koss's "The Terminal" on the Apple ][.

https://news.ycombinator.com/item?id=18142258

>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.)

https://web.archive.org/web/20120206091422/http://mckoss.com...

>Tiny (3x5) Font

>Created for the Apple II program The Terminal. Copyright (c) 1981 Michael C. Koss

>In 1981 I wrote a terminal emulator for the Apple II. At the time, the Apple II could only display upper case characters. I used the hi-res display (280 x 192 pixels!) to display my own character set. In order to come close to showing an 80-column display, I created a truly tiny font, displaying the full ASCII character set (upper and lower case).

>I created a font within a 3x5 pixel dimension, allowing the display of 32 lines of 70 characters each. The font definitely takes some training and getting used to (especially recognition of characters that use descenders); but I found it to be quite readable after a while.

quickthrower2 3 years ago

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:

    ***
    * *
    ***
       *
  • kragen 3 years ago

    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.

titoasty 3 years ago

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

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

  • macote 3 years ago

    Simplifier's 4x4 includes both upper and lower case.

    • titoasty 3 years ago

      Yes, I was simply experimenting on how low you can go. I love small fonts! And Simplifier's one is clearly impressive.

      • macote 3 years ago

        Hats off to your experiment, it's still impressive :).

  • reaperducer 3 years ago

    Looks like the text on some of the modern Atari 2600 games.

  • Karliss 3 years ago

    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.

    • titoasty 3 years ago

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

arthurcolle 3 years ago

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.

  • godDLL 3 years ago

    I could be a code mini-map thing. That would be perfectly reasonable.

userbinator 3 years ago

If you want to go even smaller, the number of patterns that can fit in 2x4 would exhaustively represent all the values of a byte, although the majority of them will not be easily recognisable as letters without some extreme "applied imagination". At that point you might as well be reading raw binary.

the_third_wave 3 years ago

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

jl6 3 years ago

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.

wongarsu 3 years ago

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.

omoikane 3 years ago

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.

  • cldellow 3 years ago

    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.

  • avmich 3 years ago

    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.

jamal-kumar 3 years ago

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?

thebooktocome 3 years ago

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.

snvzz 3 years ago

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.

  • max-m 3 years ago

    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.

buescher 3 years ago

Just what you need for a 44x46 character display on a VIC-20 with sufficient memory.

c3534l 3 years ago

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.

RachelF 3 years ago

Great for writing terms of service small print!

seanalltogether 3 years ago

Isn't everything on the page in a 3x3 grid?

  • mccorrinall 3 years ago

    Nope. Take a look at lowercase j.

    • scrollaway 3 years ago

      It sounds to me like it should be possible to use a 4x4 grid but add a single bit to express whether the letter is shifted up or down by 1px. Then your characters are 4x4 but occupying a 5x4 space.

smusamashah 3 years ago

I dont agree with the capital D.

xani_ 3 years ago

So 4x4 is too small for readable font

  • capableweb 3 years ago

    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...

    • 1-6 3 years ago

      Looks like the 5x5 example doesn’t even bother recreating lowercase letters.

      • kelseyfrog 3 years ago

        This makes it completely unusable.

        • codazoda 3 years ago

          I mean, not completely. Lots of games use all uppercase so did many old computers. So, it’s got some potential uses.

          • RunSet 3 years ago

            Only free for personal use, alas.

            • yjftsjthsd-h 3 years ago

              If it's for commercial use, paying for a useful component should be plausibly reasonable?

              • RunSet 3 years ago

                Technically that is correct although when replying I had in mind use cases that are neither commercial nor personal.

    • zugi 3 years ago

      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.

    • _def 3 years ago

      I remember these from various forum signature prestige graphics lol

    • userbinator 3 years ago

      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.

    • xboxnolifes 3 years ago

      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.

    • RegW 3 years ago

      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

  • akvadrako 3 years ago

    Uppercase is readable.

    • numlock86 3 years ago

      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.

    • hyakosm 3 years ago

      THE QUICK BROWN FOX JUMPS OVER THE LASY OOO TED4PLTO7O TIMESY

  • trasz 3 years ago

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

    • vesinisa 3 years ago

      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.

trasz 3 years ago

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.

  • yjftsjthsd-h 3 years ago

    Still good for even cheaper kit, or retro gear.

aaaaaaaaaaab 3 years ago

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