Two Slice, a font that's only 2px tall

575 pointsposted 5 months ago
by JdeBP

126 Comments

JdeBP

5 months ago

There's a whole subculture for fonts smaller than 8 by 8, with real world uses for things such as small LED displays, for example. This is at the extreme end, though.

Also https://stormgold.itch.io/picket-right-font

evanb

5 months ago

I can think of a font that’s only 1 pixel high. Invented by Samuel Morse, takes a bit of practice to read :)

hnlmorg

5 months ago

That’s really more of an encoding than a typeface. Like ASCII and Unicode.

But I guess if you can build fonts that generate barcodes, and fonts that have LLMs built in, then you could design a 1 pixel high font that uses Morse code to represent most ASCII characters.

tomjakubowski

5 months ago

What is a typeface if not a specification for pixel encoding of text? You put text into the typeface, and you get pixel data out of it.

panarchy

5 months ago

Ah the internet where you can make a lighthearted joke and immediately get um-actually'd by multiple people.

evanb

5 months ago

I really thought the :) at the end would be enough.

hulitu

5 months ago

You do realize that you can't represent a glyph with only 2 pixels ?

ocdtrekkie

5 months ago

Bad kerning on that font would be incredibly problematic though.

user

5 months ago

[deleted]

Minor49er

5 months ago

This is like claiming that Esperanto is a font

b112

5 months ago

Somehow, this feels like a good description for how William Shatner speaks Esperanto.

omoikane

5 months ago

I wonder if there are really tiny fonts that make use of color. For example, this 2-pixel wide Picket Right font could theoretically be even thinner if we were to use sub-pixel features.

At least, I think the 2-pixel high Two Slice font can be more legible with some anti-aliasing.

thfuran

5 months ago

Don’t stop at colors. Just add a ligature for every string and support for animations and you have yourself a font that can render any alphanumeric string in a single pixel. I’ll need to brush up on Morse code though.

malnourish

5 months ago

Thanks for sharing this. I enjoy seeing these cool subcultures; they evoke the hacker ethos.

JohnDeHope

5 months ago

I’m not a hacker but I really appreciate their ethos. It’s like punk. I’m not punk either. But I will defend it all with my dying breathe.

Dwedit

5 months ago

With the gap, it's effectively three pixels wide. Basically a 3x5 font with one pixel chopped off.

On some displays, you can also divide RGB into three subpixels (R, G, and B stripes). A 3x5 pixel font (9x5 subpixels) can be drawn as a 6x5 subpixel font instead (a 2x5 pixel font).

iguessthislldo

5 months ago

That one is relatively easier to read, I guess because it looks like normal font that was cut into strips.

typpilol

5 months ago

Ya literally I could make out 85% quickly.

The linked one is unreadable at all to me lol

Dilettante_

5 months ago

That's really interesting, for me it was the other way around.

HarHarVeryFunny

5 months ago

Not sure about one font vs the other, but that one seems easiest to read from a highly oblique angle since that makes it look more similar to what it would do if half wasn't missing... Unless I'm just gaslighting myself and find it easier to read that way because I was expecting that it would be easier!

hdjrudni

5 months ago

> such as small LED displays

The highest DPI screen is 127,000 PPI. You could fit over 14,000 lines of 8x8 text in a single inch tall screen.

For reference, a decent monitor is 140 PPI.

I'm pretty sure we don't need to go below 8x8 if physical size is the issue.

crq-yml

5 months ago

Pad grid controllers like the Novation Launchpad, and its indie, open-source counterpart, Mystrix Pro, have an 8x8 grid. At first this style of controller didn't use any lights, but as the manufacturing and features progressed, they went towards one RGB LED per pad. So, of course, you end up doing some text and graphics on the resulting grid. Mystrix uses a scrolling marquee which isn't ideal, but does get the job done.

And yeah, you could throw on more hardware to have a display nearby and use that for text. That is not the problem being solved though.

scottyeager

5 months ago

I just did some code to display digits on my APC Mini's 8x8 light grid: https://github.com/scottyeager/pressed/blob/main/controllers...

By using the three available colors on my older model, I was able to render numbers up to 199 in a readable way. Two digits on the right are 8x3 and one on the left is 8x2. I quickly abandoned two pixels of width as impossible for making legible text for all digits, so seeing a full font at two pixels wide is a fun surprise.

Thanks for the tip on Mystrix—looks neat.

dr_kiszonka

5 months ago

What do you use a foot pedal for? Sustain?

bongodongobob

5 months ago

No, small LED displays with like 25 ppi. Think arduino/embedded.

jl6

5 months ago

I think readability is helped a lot by the low entropy of English words and sentences, i.e. if you can’t make out one letter, you’ll probably get it anyway from the context.

It’s not so readable if you test it with random strings.

HarHarVeryFunny

5 months ago

I think it's partly because we recognize letters, and whole words, by glyph shape more than specific identity. Obviously a 2x2 grid can only depict 16 different patterns, but we're trying to recognize whole words, not arbitrary letter sequences, and the sequence of shapes (hence letter possibilities) is evidentially enough, a bit like reading crappy handwriting.

It's interesting how we can do this with this 2x2 font immediately without any training, but I suppose reading in general has provided enough training, and ability to read this 2x2 font just provides some insight as to how word perception works.

tremon

5 months ago

Most letters are 2x3 px, the letter m is even 2x5. And I wouldn't say that I could comfortably read this, it was closer to deciphering than reading.

HarHarVeryFunny

5 months ago

True, but it's interesting that we can quickly decipher/read it at all. It seems to be a typical case of human perception where top-down prediction (maybe of visual word forms?) meets bottom-up sensory input, and we've gained enough experience of this (reading different fonts, handwriting, various lighting, etc) that this particular type of impoverished input doesn't pose much challenge.

NBJack

5 months ago

I believe it's in part because of our experience reading things at angles. In this case, it looks to me like letters tilted backwards on a table, and I'm peering at them just above their horizon. Legible, but not comfortable.

te0006

5 months ago

This brings back fond memories from the 8-bit era. Tasword II was a text processor for the Sinclair ZX Spectrum where the developers resorted to extra-narrow fonts to cope with the Speccy's very limited (256x192) screen resolution. The lower screenshot in [1] provides a glimpse of what seems to be a 3px wide font.

OP's 2px width are a bit too extreme for my taste though.

[1] https://spectrumcomputing.co.uk/entry/4000080/Timex/Tasword_...

reaperducer

5 months ago

Similar to VIP Term on the Commodore 64, which used a 3x7 bitmap font in a 4x8 space to display 80-column text.

I don't know is any word processors did that, though, except in printer preview mode.

classichasclass

5 months ago

Pocket Writer (version 2, at least). Used it heavily for term papers.

mrspuratic

5 months ago

One of the first Spectrum emulators (JPP?) used a VGA text mode with 2 pixel high font where each character was its own ordinal, i.e. 65 was two rows of 01000001 pixels. That meant you could draw individual rows bytewise exactly as the Spectrum did, and just take care of the Y offset bit shuffle, and fake the colour clash.

K0balt

5 months ago

White space around each letter is completely critical for fonts like this. That makes this font 4x4 as presented, or 3x4 but you lose a lot of readability—too much imho.

The exception to this would be a physical manifestation, where each 2x3 pixel block was surrounded by a dead space, so that the display was actually optimised for this font configuration.

Still, that’s an impressive accomplishment, allowing a 16x32 character display on a sub 1$ oled, and 10x18 on a 3$ integrated computer with built in display.

Nice work.

For anyone actually thinking of using tiny fonts in a practical project, imho 4x5 (3x4 plus padding) is about as small as it gets for a font that doesn’t require extra work to read, giving 1 pixel of (violable) padding bottom and right. Unlike the OP font, it only needs 1px of top padding to be perfectly readable, so you are actually getting “free” readability compared to needing top+bottom padding like the OP font.

gliptic

5 months ago

Glyph advance or line spacing is not part of the bitmaps.

K0balt

5 months ago

I get that, but it figures in when you actually put this on pixels. I’m thinking about practical use of such a font, most likely on a pixel-constrained screen, otherwise you would use a higher definition font.

It’s a cool hack, and for someone actually using little fonts like I do in real world devices it’s very interesting.

I find that you can actually go 4x5 (including padding) and still have great readability. Any less and you have to work to read it.

bigmadshoe

5 months ago

By this definition every n x n font is actually (n + 1) x (n + 1), but that isn’t the convention and fonts are never displayed with 0px vertical or horizontal spacing between letters.

K0balt

5 months ago

I see you didn’t grow up in the 8 bit age lol.

Early computers usually displayed characters directly mapped to the screen, with no space between them. There wasn’t enough memory to store a bit for each pixel, so they stored only the characters and wrote them out one line at a time from the ROM character map. Sometimes, you could define a few characters in RAM as well. Then if you were lucky there were “sprites”, characters that could be mapped at arbitrary alignments and sometimes even rotations “on top of” the existing character map.

This is how you got a 32x64 display (often only 32x32) mapped into 2k of RAM, instead of the 16k it would take if the pixels were stored— a time when 8k RAM total was pretty standard, and 16k was a lot. Then, color became a thing and ate up a lot of memory, so even with 64k nobody was generally mapping fonts onto a pixel background. That’s why you switched to graphics modes etc.

This is also why you will find a bunch of 8x8 pixel fonts out there that have blank rows and columns built into them for spacing. It’s still very common for imbedded work, where you often have screen sizes like 64x128 and other small pixel counts, when you are trying for maximum readable density.

You can still find these fonts in the text-only display modes when you are in the POST routines off many PCs, if you unhide them in the bios…. But many BIOSs are graphics mode only now so even that is getting hard to find. Still there when booting Linux though, if you escape out of the splash screen.

kstrauser

5 months ago

I'm blown away. I'd have sworn that wasn't possible. It's brilliant. Bravo.

imcritic

5 months ago

[flagged]

umanwizard

5 months ago

Do you think anyone is suggesting this should actually be used for a practical purpose?

sniffers

5 months ago

Idiotic seems strong. It's an art piece, is it simply not to your taste in art?

EGreg

5 months ago

Exactly. My taste in art skews idiotic, so what! :)

imcritic

5 months ago

I am worried someone would use that somewhere thinking it's so artsy. This better not exist at all.

addaon

5 months ago

Capital H is cursed... unconnected pixels, indistinguishable from 'ii' or "II". The concept's cool, but for this one point the wrong choice was made.

PenguinRevolver

5 months ago

Try reading "HiGh sky buys The lies" in the font. Pretty difficult to make out what it says...

jibcage

5 months ago

I think most of what makes this font readable is the user using context to sort of guess at what the word could be.

If you start writing things that aren’t sentences normal people would use (or especially if you start mixing case) it doesn’t hold up. Still interesting for a “normal” use case though.

jasonjmcghee

5 months ago

I'm more concerned about V X Y all being identical.

How will I know if it's waxy or wavy?

throwaway808081

5 months ago

Like all of language: context.

Why would hair be like 80s synthpop, or potatoes be in any way related to a by-product of honey?

xboxnolifes

5 months ago

Hair can be either waxy or wavy or both.

IshKebab

5 months ago

Her long blond waxy hair blew in the wind.

Context.

jonathrg

5 months ago

Her wa[]y hair was a challenge for the hairdresser

IshKebab

5 months ago

I'm not saying the context always disambiguates it. You can have ambiguous sentences even with perfect fonts.

oneeyedpigeon

5 months ago

The judge delivered an ambiguous sentence.

lelanthran

5 months ago

> Her long blond waxy hair blew in the wind.

Same question as GP - how can you tell if that was meant to be waxy or wavy?

IshKebab

5 months ago

From the context. Long hair blowing in the wind is a description of beautiful hair. Wavy hair is beautiful; waxy hair is not.

This is very obvious to most people.

Biganon

5 months ago

"I'll have you know that some people find waxy hair beautifully therefore your example is invalid and I am very intelligent"

:nerd:

ant6n

5 months ago

Well I think to make fonts like these legible, the trick is to use texts as examples that the readers already know, then you don’t really need to recognize very letter, but just the one here and there to keep up overall recognition. It also helps to focus on letters that are most readable.

But tongue in cheek humor aside, this is a neat accomplishment. It’s a great idea to stretch the letters out in width, greatly improves readability. (Earlier approaches Fokus a lot on trying to stay square, which doesn’t really work at this size)

nikkwong

5 months ago

I wonder what the minimum resolution of Chinese characters is. It’s definitely more than 2px tall.

bapak

5 months ago

Apparently 8x8, for most characters traditional Chinese characters: https://imgur.com/DBRSqIn

Probably lower for simplified Chinese and katakana/hiragana Japanese characters.

I'd say that at 2x2, "Two Slice" is definitely not readable.

nikkwong

5 months ago

8x8 for Chinese is difficult, but I think it’s a bit less guesswork than 2px high for English. I wonder what simplified Chinese would look like 6px tall.

rtrgrd

5 months ago

Very cool - note that lowercase b, l and h are the same

Eric_WVGG

5 months ago

Really like that zero glyph. I wonder if, instead of Roman numerals, one could use ligatures to encode numeric strings as binary… 42 as 010101

(I sort of randomly picked 42, didn't know it was such an interesting string… Douglas Adams must have known that)

sugarkjube

5 months ago

101010 - I'm guessing you know, and want to find out how long it takes for someone to notice and respond.

hidroto

5 months ago

little endian vs big endian.

FabHK

5 months ago

Also, typing it out while you run the algo in your head: 42 even -> 0, 21 odd -> 1, 10 even -> 0, 5 odd -> 1, 2 even -> 0, 1 odd -> 1.

Eric_WVGG

5 months ago

ah, I never actually bothered to read up on binary notation. I only know it via party tricks (counting to a thousand on two hands)

librasteve

5 months ago

I eagerly await the use of this font in Microsoft’s new EULA

Jowsey

5 months ago

Some of the characters/words (particularly "c"/"can") sort of look like they've been cropped from the top, trusting the brain to fill in the bottom half. Reminds me of what Sandisk did with the "S" in their redesign. I wonder if there's any research behind this?

komali2

5 months ago

xyv, bl, hi, in various cap/uncapped formats, are the same characters or nearly indistiguishable. I'm trying to craft the most unreadable sentence possible. I got as far as "Hi, THe czech's bliss is exact"

shakna

5 months ago

> You can probably read this, even if you wish you couldn't.

Um... Nope. I can't.

I can get some of the letters, but not most of them, unfortunately.

Love the concept, and the art, that goes into things like this. But I just cannot read it.*

* I have nerve problems in my eyes. I'm not legally blind... Most of the time.

jader201

5 months ago

Yeah, a lot of words/letters made sense, but I definitely had to use some deduction to read it.

Interesting, and given the limitation, it’s quite impressive.

But I think “probably” is optimistic. I’d say “possibly” is more realistic.

IshKebab

5 months ago

It's not easy but I definitely could read it. It's easier if you don't try and read each word fully before continuing.

shakna

5 months ago

Yeah, scanning usually just needs start and end of each word. But as I can't get the endings, I can't get the word.

Cloudef

5 months ago

Trying to read the text produced by this font makes my brain hurt

NooneAtAll3

5 months ago

I was so confused why "o" in the example was wider than "o" written myself - until I understood that example has it capitalized... That seems useless

brador

5 months ago

It says in all caps: “YOU CAN PROBABLY READ THIS, EVEN IF YOU WISH YOU COULDN'T. IT TENDS TO BE EASIER TO READ AT SMALLER SIZES.”

magackame

5 months ago

I wonder if it's possible to train to read text encoded as one colored pixel per letter, or even per token.

userbinator

5 months ago

Given how people can learn languages, absolutely yes.

wingmanjd

5 months ago

I wish I had this back capability when I used to program my TI graphing calculators back in highschool!

strawberrysauce

5 months ago

Wow, can't be used as a braille alternative that people with sight can also understand?

pclmulqdq

5 months ago

It can be used as a braille alternative that blind people can't even read.

a3w

5 months ago

Observation:

Braille is 3 px in height. But only 2 px wide and monospaced, while this font is variable width.

Oh, and several characters share representation in this, say other threads here.

kps

5 months ago

X has had a 2 pixel bitmap font, `nil2`, from time immemorial (i.e. it's in X10).

BSOhealth

5 months ago

I love this. It speaks to me in a similar ways as a lot of the AI zeitgeist—why shouldn’t we optimize for how the brain actually operates at scale versus hundreds-years-old ideas about ligatures designed for reading in candlelight? (In the AI case, a romanticism for having to learn and prove memory in such a rote way)

Lalo-ATX

5 months ago

I wonder what happens if you allow greyscale, even if just 2-4 bits per pixel

shmerl

5 months ago

I can't really read anything with that, so somewhat readable is very moot.

matznerd

5 months ago

okay but what about "c" being nearly the same as "z", neither of which look like the character and are nearly(?) identical. Is our brain supposed to just be able to figure it out?

sharkjacobs

5 months ago

O and 0 are very similar in lots of typefaces. And I and l and 1. Even u and v. Your brain's pretty good at figuring it out. Context helps a lot.

efreak

5 months ago

With narrow spacing and poor kerning it can get much worse, especially if you're reading printed text; I've seen some extremely bad fonts used in print, (usually in italics or titles, but sometimes in the body text as well): m and rn, cl and d, lo and b, jo and p, ijl1, GC0OQ, italic Q2.

cal85

5 months ago

yeah I can read it ok

ccvannorman

5 months ago

finally, my vim window can hold 200+ lines on my laptop screen!

BobbyTables2

5 months ago

Wonder if any OCR implementations can read it!

eipipuz

5 months ago

Is it just me or the s Z and z S should be swapped?

Minor49er

5 months ago

You're right. The capitals look fine, but the lowercased versions look swapped. I think this is because the creator decided to cut the spines for the uppercases and crop out the arms for lowercases. Since the arms and spine point in opposite directions for "s" and "z", it really hurts their identification

sehugg

5 months ago

The Atari 2600 had pretty good vertical resolution (assuming you could set up the next line in 76 cycles) but limited horizontal resolution. A 3x5 font is possible, but good luck distinguishing N from M.

This font seems to use characters up to 5 pixels wide, which helps with its near-legibility.

notorandit

5 months ago

It is readable in English with quite some training and context. Many characters have the same representation.

I for one would say this is not generally usable and has a limited scope.

Interesting nonetheless.

kelvinquee

5 months ago

Love this. Brings so much joy. Try some punctuation. Hilarity ensues.

crm9125

5 months ago

Cool. I hate it.

qmr

5 months ago

Thanks, I hate it.