[HN Gopher] Nanofont3x4: Smallest readable 3x4 font with lowercase
___________________________________________________________________
Nanofont3x4: Smallest readable 3x4 font with lowercase
Author : lsferreira42
Score : 185 points
Date : 2024-03-17 16:39 UTC (6 hours ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| msarchet wrote:
| Just this morning I have been working on a font rasterizer for an
| eink screen project. So it's really interesting to see one this
| small.
| tripflag wrote:
| if you're in the market for something slightly bigger, I've
| found this font to be useful on lowish-res (640x480) displays:
| https://github.com/josuah/miniwi
| tomcam wrote:
| The size of the characters in pixels is not given in their
| readme, nor could I find it easily in the config files. Can
| you tell me how big the characters in its readme are?
| LukeShu wrote:
| looks like 3x5, or 4x8 if you include the whitespace
| medstrom wrote:
| The lowercase "s" is only 4 px tall. The "f" and "y" add
| 2 px above and below, so the total reserved height must
| be 8px. Then 2 more px for whitespace, so 10.
| FergusArgyll wrote:
| Readable is a very strong word
| ocrow wrote:
| They're really stretching the definition of readable.
| BolexNOLA wrote:
| Yes but their bar is "readable" not "very readable by all
| without effort," so I'm not sure why y'all find this so usage
| so objectionable. Yeah it wasn't easy but I was definitely
| able to read the example text on my phone as-is/without
| zooming or anything.
| wkat4242 wrote:
| Meh in that case even a barcode is 'readable'.
| lolinder wrote:
| The upper case letters are fine (impressive, considering
| the resolution), but there's no way I could read the lower
| case if I didn't already know the text.
| baking wrote:
| This brings back some memories, but my eyesight is worse than it
| was 50 years ago, so no.
| nickdothutton wrote:
| Like some in-game text/graphic from my 8-bit days. I was a big
| Tau Ceti/Academy player.
| johnklos wrote:
| I can finally have 85 characters by 48 characters on my Sinclair
| ZX81, and it'd be printable, too, on my T/S 2040 printer.
|
| (starts thinking in Z80...)
| chx wrote:
| Which leads to the question: what is the smallest Z80 assembly
| function which takes an ASCII code as an input and returns one
| of these characters some way? 3x4 is 12 bits so with a little
| waste one can fit it into a 16 bit register pair. You could
| thus encode it into a 96*2=192 byte lookup table but isn't
| there some procedural generation to shrink that?
| volemo wrote:
| I believe a table and a lookup function would be smaller than
| a function for generating bitmaps: just for a single pixel
| I've got this expression [1]. [1]: not(c0)
| and not(c2) and c3 and not(c4) and c5 and not(c6) or not(c0)
| and c2 and c3 and not(c4) and c5 and c6 or c0 and c2 and
| not(c3) and c4 and not(c5) and c6 or c0 and not(c1) and c2
| and c3 and c4 and c6 or c0 and c1 and not(c2) and c3 and c4
| and c6 or not(c1) and not(c3) and not(c4) and c5 and c6 or
| not(c2) and c3 and c4 and not(c5) and not(c6) or not(c0) and
| c1 and not(c3) and c5 and not(c6) or not(c0) and c1 and
| not(c2) and not(c3) and c4 or not(c0) and c1 and c3 and
| not(c4) and c5 or c1 and c3 and not(c4) and c5 and c6 or c1
| and c2 and c4 and not(c5) and not(c6) or c0 and not(c1) and
| not(c4) and c5 and not(c6) or c0 and not(c2) and not(c4) and
| c5 and c6 or c0 and c1 and not(c3) and c5 and c6 or not(c0)
| and not(c1) and c4 and not(c5)
| johnklos wrote:
| Oops. It's 3x4 inside of a 4x5 box, meaning a Sinclair ZX81 can
| only do 64 x 38 :(
| sxp wrote:
| If you're interested in other tiny fonts:
|
| - PICO-8's 3x5 font with support for programming characters:
| https://www.lexaloffle.com/pico-8.php?page=faq
|
| - Ken Perlin has an RGB stripe subpixel font. Unfortunately, the
| original page uses Java so I can't access it, but
| https://www.fastcompany.com/1662778/the-worlds-smallest-legi...
| has more info.
|
| - Dotsies if you're willing to try very strange encodings:
| https://dotsies.org/
|
| - https://news.ycombinator.com/item?id=33127419 has more
| examples.
| accrual wrote:
| A favorite of mine is the MonteCarlo Programmer Font [0]. I
| used it as my terminal font for a couple years.
|
| [0] https://www.bok.net/MonteCarlo/
| dheera wrote:
| 3x4 = 12 bits
|
| 52 upper/lower case letters + 10 numerals [?] 64 = 6 bits
|
| It's kind of amazing that the overhead is only a factor of 2 to
| literally read BINARY data with my eyes.
| Avshalom wrote:
| obviously 8x8 is comparably enormous but
| https://damieng.com/typography/zx-origins/ has a great
| collection of fonts
| gitgud wrote:
| Uppercase is impressive for 3x4 pixels. Lowercase is pretty much
| unreadable...
| skygazer wrote:
| You learn to read it, or at least I did as a child trying to
| use a small font on the c64 when connected to BBSs, so I could
| see ascii art without wrapping. It takes reminders like this to
| realize how awash in high density pixels we are now.
| snowpid wrote:
| Does anyone know the size of the font from the first Pokemon
| games? They had similar constraints.
| msk-lywenn wrote:
| It's 7 pixels high, like most games on that platform, because
| it fits with the 8x8 tiling system (if you had the space
| between lines)
|
| https://github.com/pret/pokered/blob/master/gfx/font/font.pn...
| LukeShu wrote:
| 8x8 tiles; most characters fit in 7x7 to allow for 1px between
| characters
| wkat4242 wrote:
| I see I have a slightly different interpretation of the word
| 'readable' lol.
| Anotheroneagain wrote:
| Minuscule gets down to 2; 3 and above don't even look that weird.
| Maybe that pixel fonts are not the optimal choice.
| hulitu wrote:
| > Nanofont3x4: Smallest readable 3x4 font with lowercase
|
| Readable by who ?
| neverokay wrote:
| Don't let the lawyers find this font.
| mgaunard wrote:
| Not that readable.
| pavl wrote:
| Is this downloadable somewhere as TTF?
| 3rd3 wrote:
| A nano font but huge images. The large image is a 4873 KB bitmap
| which can be losslessly compressed to 47 KB using PNG.
| vardump wrote:
| Nowadays it's often hard to even notice a 4 MB file, especially
| when you're on a gigabit connection or better.
|
| Of course unfortunately not everyone has a connection like
| that. But can understand how someone might have missed it.
| andenacitelli wrote:
| This is sometimes so hard to remember. There's so much
| content on optimizing for page size -- and admittedly, it
| does matter a lot in some industries like e-commerce and/or
| if you have users in less developed countries -- but quite a
| lot of situations kind of just let you ignore it.
|
| I work in B2B and we frankly put way more effort in than we
| should have to optimize bundle size before just making the
| assumption that everyone has a good connection and we didn't
| really need to worry about it.
| dheera wrote:
| Github also loads something like 4.6MB of JavaScripts and other
| crap, according to chrome dev tools, so ...
| samatman wrote:
| I propose that this sort of font be called "decipherable" rather
| than "readable".
|
| I could learn to read this. I can kinda-sorta make out the
| example, because I already know the Declaration of Independence.
| Is it readable the way, say, this text is? Or the PICO-8 font?
| No.
| kuboble wrote:
| I think any font which is decipherable becomes readable with
| practice.
|
| The characters in the font are unique and clear so learning to
| read it should be easier that say reading using some completely
| unknown alphabet.
|
| This font should be easier to read than most people's hand
| writing.
| semi-extrinsic wrote:
| The lowercase characters are non-unique, which may be what GP
| was referring to. For instance "ox" and "co" can only be
| distinguished by context.
| vpribish wrote:
| if more than one bit of color was allowed you could make
| different levels of grey/opacity hint at where the opening
| in the symbol should be. just as learnable and now it's
| unique.
|
| taken to a silly extreme, you could compress 26 letters
| into 2 pixels, 3 colors, and 3 levels of opacity. before
| even considering a time-dimension.
|
| a mantis shrimp just needs one pixel with color.
| samatman wrote:
| Many people's handwriting is best described as "decipherable"
| as well, yes.
|
| A readable font takes no practice to read, presuming you
| already read the script of the font and the language of the
| text. A decipherable one can be sort of limped through at
| first and probably picked up to fluency with experience.
| Although, as the article notes, this font has homonymous
| glyphs, there are only a few words where that creates
| ambiguity, and as few as none where it would be ambiguous in
| context.
| hinkley wrote:
| I worked on project planning software years ago. We got caught in
| a loop arguing about fonts and data density.
|
| We were getting lots of clipping of text and I asserted that even
| a couple more characters on the screen would improve people's
| abilities to guess what the entire phrase was. You can derail
| momentum in project management meetings by having people ask what
| something says repeatedly. Seen it happen, it's dumb and we can
| fix it.
|
| So it came down to a shootout. We put five fonts on a projector
| screen, at multiple font sizes, stood everyone against the back
| wall of the fairly average sized meeting room (maybe 70th
| percentile), and had them vote.
|
| Verdana 13pt won for legibility, even over some of the 14 pt
| fonts. It also got more characters per inch, so win win.
| Something in the range of 5-10%.
|
| Then corporate made us change it back because their flagship app
| used a different font and they wanted them to match. Which made
| no goddamned sense because they weren't even used together.
| dsp_person wrote:
| > In case you are interested, there are a total of 65,536 4x4
| monochrome glyphs. Here is a uber texture atlas that shows all of
| them with our glyphs highlighted (red) where they are in the
| table.
|
| So did this font exist all along and was simply discovered?
|
| And same goes for everything we create, but just in higher
| dimensions??
| rcxdude wrote:
| https://en.m.wikipedia.org/wiki/The_Library_of_Babel
| dsp_person wrote:
| https://en.wikipedia.org/wiki/Permutation_City
| junon wrote:
| Unlike the flagrant dismissal in other comments I actually find
| use for projects like these. On some electronics that I write
| firmware for the OLED screen space real estate is incredibly
| limited, and when they need to output logs or debug info for
| developers it can be a pain to fit everything in a way that is
| usable, especially when there is no input to allow for scrolling
| or whatever.
| fnordpiglet wrote:
| This. As soon as I saw this I thought "oh neat that'll come in
| use for my electronics displays"
| volemo wrote:
| I'd argue that character count advantage of this 3x4 versus say
| PICO-8's 3x5 is overshadowed by the loss of readability.
| gillesjacobs wrote:
| The lowercase is nigh unreadable but the all uppercase example
| is not too bad.
|
| Would be cool to integrate in my split keyboard OLED screens in
| ZMK firmware.
| lynndotpy wrote:
| Yes!
|
| For all the discussion here, I feel like the README answers it.
| It was a fun project with a few use cases.
|
| > Once the novelty wears off a "practical" example would be
| rendering "in-game book pages" that don't look like complete
| gibberish, or an "accurate print preview" with real text
| instead of blurry placeholder pixels that don't even look close
| to being the glyphs scaled down.
|
| This seems very reasonable. They put it out there in case
| someone found it usefuo.
| gillesjacobs wrote:
| > Once the novelty wears off a "practical" example would be
| rendering "in-game book pages" that don't look like complete
| gibberish, or an "accurate print preview" with real text
| instead of blurry placeholder pixels that don't even look close
| to being the glyphs scaled down.
|
| Low-res or LoD video game textures are a bit of a stretch but
| could be cool.
| dougmwne wrote:
| Whe I was in high school I had plenty of dull classes to sit
| through. I'm old enough that there were no phones and laptops to
| keep entertained.
|
| My parents had a laser printer for their business. I realized
| that it had a very high DPI and also very little ink bleed. I
| started printing whole books I downloaded at the smallest font
| size that I could managed to still read, just a few point. I
| removed line breaks and printed out whole books on a page or two.
| I found it incredible how much tiny text I could fit on a page.
|
| In class I would read with a little half folded sheet of paper
| hidden in a notebook. Sci-fi, Russian lit, biographies, classics.
| I was never caught, but it's bizarre to think back that I was
| reading Crime and Punishment while the rest of the class was
| learning fake American history propaganda.
| arketyp wrote:
| > Sci-fi, Russian lit, biographies, classics. I was never
| caught, but it's bizarre to think back that I was reading Crime
| and Punishment while the rest of the class was learning fake
| American history propaganda.
|
| Sounds possible your teachers figured as much and let it slide.
| dougmwne wrote:
| I did eventually show a teacher and they were shocked. Their
| older eyes had no way of focusing on the text and they could
| barely tell it was anything but a sheet with grey lines.
| pvg wrote:
| _I was reading Crime and Punishment while the rest of the class
| was learning fake American history propaganda._
|
| You were simply unaware of the classmates who were secretly
| mastering the tiny 3d printed blade.
| userbinator wrote:
| I think 5x7 is the smallest size where characters are still fully
| recognisable, which is why it's used on all common character
| LCDs. Beyond that, with things like this font, reading becomes
| more of a "recognise vaguely evocative custom glyphs" exercise.
| klabb3 wrote:
| English speaker detected! Half kidding, but in my language that
| would be difficult. AAO
| kiicia wrote:
| ACELNOSZZ
| tom_ wrote:
| The Atari ST had a 6x6 font (5x5 for most glyphs, 5x6 including
| descenders) that took surprisingly few liberties with the lower
| case chars. I'm going by memory, but this looks like an
| accurate rendition:
| https://fontstruct.com/fontstructions/show/876150/atari_st_6
|
| Lower case "a", "e" and "i" are not ideal, but the rest look
| pretty good to my eyes! (The OS used this for icon titles, so
| there was only ever 1 row at a time. Probably recommended.)
| grumbel wrote:
| DSLinux[1] used a 4x6 font for the terminal, I found that
| surprisingly usable.
|
| [1] https://www.dslinux.org/dslinux-cpuinfo.jpg
| hammock wrote:
| >Smallest readable 3x4 font with lowercase*
|
| *Roman alphabet
| ramijames wrote:
| "Readable."
___________________________________________________________________
(page generated 2024-03-17 23:00 UTC)