
Millitext – A subpixel text encoding font - jonshariat
https://advent.morr.cc/2018/17
======
msarnoff
Wow! What a surprise to see this here. I made this 10 years ago, when the
display ecosystem was much different than it is today.

In 2008, if you were using a device with an LCD screen, it almost definitely
had a rectilinear R-G-B subpixel arrangement. Nowadays devices have all kinds
of exotic subpixel schemes (and are usable in many different orientations!) so
its usefulness is a bit limited if you're on a mobile device.

~~~
int_19h
I would imagine that the bigger problem is increased resolution. Less so on
the desktop, but even there 4K displays are far more common than they used to
be.

~~~
datenwolf
Resolution is not really the problem. When it comes to that, assuming the RGB
horizontal rectilinear subpixel arrangement that dominated the lanscape,
having higher resolution just means you could pack _more_ text onto a given
screen.

But if you were to send militext to, say, a pentile display, it comes out as
unrecognizible mess. It'd also not work with CRT displays, even vertical mask
Trinitrons, because, albeit the phosphors may look like subpixels, they're
actually "just" sampling points along image lines, traced out by an electron
beam, and each digital image pixel would cover several phosphor pitches and
not change apruptly.

~~~
int_19h
My point is that it's packed so tight as to be unreadable with the naked eye
on those displays.

------
detaro
_The Fellowship of the Ring_ as a 3500x3500 px image:
[https://files.morr.cc/lotr1.png](https://files.morr.cc/lotr1.png) \- if you
have a 4k screen, you only need to scroll once for the entire book. (via the
authors twitter:
[https://twitter.com/blinry/status/1074774555707797509](https://twitter.com/blinry/status/1074774555707797509))

~~~
loeg
Is that not some kind of copyright violation? Or does this count as a fair use
derivative due to the transformative purpose of ... something?

~~~
traverseda
Obviously one could decode it. The law cares about intent, so while you can
probably get away with doing it once or twice, if it became a standard thing
it would quickly stop being fair use and become just a distribution channel.

------
tomsmeding
Makes me think of a related font, dotsies [1]. It's not necessarily meant to
be displayed at 1px wide, but it would be possible. The intro/tutorial on that
page is a pleasure to go through, in a mind-bending way.

[1]: [http://dotsies.org](http://dotsies.org)

~~~
IMTDb
Has anyone learned to actually read that . If so, how hard is it ? :)

~~~
aeneasmackenzie
I picked it up briefly to familiarity. You can learn to read it very quickly
("read" here meaning you no longer need to refer to the key so you can
increase your reading speed just by reading more). If you're going to learn it
consider learning dotsies v3[0] instead. All vowels plus y, and only the
vowels, touch both edges which fixes the main issue, that you can't tell abcde
apart.

0:
[https://news.ycombinator.com/item?id=3602163](https://news.ycombinator.com/item?id=3602163)
the bottom link is v3.

~~~
marchdown
Since no one has presented a version of the dotsies bookmarklet, which is
actually necessary to use them in practice, I'll go and make one with the
proper mapping for v3.

If there is one already, let me know.

Actually, looks like all the permutations in the bookmarklet only allow you to
use glyphs in Dotsies.tff, and there are some possible glyphs missing. I'll
have to edit the font file.

------
Hussell
Here's another subpixel font called The Flea's Knees:
[http://www.typophile.com/node/61920](http://www.typophile.com/node/61920)

It's 3 pixels tall (not including ascenders and descenders, which are another
two pixels each), and uses the full range of colors available instead of just
black, white, and the 6 fully saturated colors. I think it's much more
legible.

------
kazinator
This reminds me of a trick that was is used on Apple II computers to achieve
560 pixel resolution on a monochrome monitor, using the 280 pixel "high res"
mode.

Why these strange numbers instead of 160 or 320?

The high res mode in these machines is funny. 280 is divisible by 7. Each scan
line is encoded by 40 bytes, which provide 7 bits of resolution, so 280. On a
monochrome CRT, these correspond to B&W pixels: on and off. What is the 8th
bit of a byte used for? It will shift the group of 7 by half a pixel. Thus,
sort of, you have 560 positions: you just can't use all 14 positions freely in
any one byte slot.

On a color CRT, things look like this: the pixels alternate between two
different colors, and the 8th bit shifts to a different set of two: purple-
green versus orange-blue.

(The alternation between colors means that, since each byte contributes 7
places, successive bytes are coded opposite.) I.e. two successive bytes in
"purple-green" mode coding 14 pixels: PGPGPGP GPGPGPG. If adjacent P and G are
on, we get white.)

(As if that weren't bad enough, the scan lines are not consecutive in memory.
If you start with a black screen and fill the memory with 1's, the screen will
turn white in a kind of "venetian blind" effect consisting of a superposition
of two interlacings of different period lengths.)

------
thomasjonas
Interesting! I hadn't found anybody else doing this back when I "typeset" my
thesis in a subpixel font. I even build my own tool in Processing for
designing the font. A part of my graduation was making an installation of our
thesis for the exhibition so people could "read" my thesis. I build an
installation with a LCD screen, a USB microscope and a projector. You can find
it over here: [http://www.thomasjonas.nl/project/a-new-aesthetic-for-
text](http://www.thomasjonas.nl/project/a-new-aesthetic-for-text) (sorry
mobile users)

The thesis was about how the aesthetics of tools/technology can influence the
aesthetic of art, so I thought this installation was a pretty fitting idea.

------
hinkley
This is melting my brain. On my main monitor, and on my laptop, the green and
blue pixels seem to be deeper into the screen. The text looks like it's set in
acrylic at a 30° angle off of the display. And they _move_ when I shift my
head from left to right.

As cool as this is I couldn't look at this all day. I'd start making allusions
to Elder Gods (fhtagn!) by 2 pm.

~~~
Cthulhu_
You rang?

~~~
hinkley
He's... He's standing right behind me, isn't he?

------
bluesaunders
For those interested, here's what I was able to read from the twitter avatar:

    
    
        Pro Tip: You can add more
        than 140 characters into
        your twitter avatar. For
        example, here are 156 of
         them. Just make sure to
        include all links in the
        main text ;-) Also, hand
        out magnifying glasses!

~~~
AceJohnny2
Thanks! I was trying to decipher it on iMac with a 5k display (? 5120x2880)
and an attached LED Cinema Display (2560x1440). MacOS does a good job dealing
with the DPI so that they appear the same size (but one is clearer than the
other). Using a magnifying glass, I could almost make out the text on the
lower DPI screen, though blue was almost invisible, and I could not seen
anything other than a colored bar on the high DPI screen :)

~~~
sonar_un
I tried using my native resolution on my MBP Retina and then taking a photo
and zooming in. Nope. I could only decipher the ;-)

------
ktpsns
Interestingly, neglecting the image encoding overhead, storing plain text like
this is surprisingly efficient: One character is 1x5px in size, it seems that
the colour palette is quite limited, at least less then 42 colours (I count
like 5-10 colors, is there any reference?). This means an ASCII character can
be stored in less then 7 bits of information.

~~~
anamexis
Wouldn't it be 7 colors?

R, G, B, RG, GB, RB, RGB

~~~
utopcell
\+ all off for space, so 2^3.

------
kken
Well, this seems certainly straight forward from an information theory angle
of view:

\- Each pixel represents one bit.

\- Hence, we should try to increase information entropy.

That's all there is to it? Certainly not, since we are creating something for
human consumption. There are a couple of other factors:

\- The way the eye processes patterns: lateral inhibition [1]

\- The way the eye processes colours: photopic vision [2]

\- The way the brain interprets patterns

\- The way the brain can actually interpret ingoing information.

I don't have an answer to all of these. But is pretty certain that maximizing
entropy of a binary pattern is not equivalent to optimiziung reading speed.

[1]
[https://en.wikipedia.org/wiki/Lateral_inhibition](https://en.wikipedia.org/wiki/Lateral_inhibition)

[2]
[https://en.wikipedia.org/wiki/Photopic_vision](https://en.wikipedia.org/wiki/Photopic_vision)

------
3chelon
Sub-pixel rendering was often used on low-res monitors as a way of achieving
smooth fonts. The idea was to anti-alias the edges of the glyphs by filling in
individual R, G or B pixels to give a smoother edge, hence the font was more
detailed than your screen resolution.

In the world of early mobile phones and portable games consoles it was an
important technique for getting smooth fonts on low-res LCD displays.

I remember reading this very good article by Joel Spolsky way back then:
[https://www.joelonsoftware.com/2007/06/12/font-smoothing-
ant...](https://www.joelonsoftware.com/2007/06/12/font-smoothing-anti-
aliasing-and-sub-pixel-rendering/)

------
jld
Do all monitors have subpixels ordered RGB, left to right?

~~~
function_seven
I think the vast majority of them do, but not all. The other common ordering
is BGR.

I think G is in the middle of the pixel because it is the color our eyes are
most sensitive to?

~~~
jsjohnst
Human eyes are in fact most sensitive to green light, but I haven’t read
anything to indicate that’s why it’s in the middle.

