The Flea's Knees - Handmade Subpixel Type Family with 3px x-height

miha's picture

It has x-height of 3 pixels, it is italic, inspired by old masters and most important – made by hand. You must not look too closely, because colors get visible. It's work in progress. Here:

I am also writing a program which will set text automatically. These horizontal lines in the picture is actually information about glyph unicode value and positioning.

It can be used in favicons and for … well, one reason is enough :-)

Scroll down for additional weights of roman, bold & bold italic.

The title was "First Handmade Subpixel Type Family, Ever*".
[* Moderator's note: Miha's enthusiastic use of the claim "first ever" has been seriously challenged by StoneCypher. Read on for the drama and sub-pixel intrigue, if you dare!]

PS: Ken Perlin's work is interesting too.


squidbilly's picture

Sooooo miha is dishonest for not thoroughly researching some obscure font that hasn't been in use for over a decade that no one has ever heard of?! Call the cops! He's a thief! Oh puh-leeze...

Fact is, this is brilliant work. It's perfectly fine that it may be copied work (or derived from another work), even if he was not aware of the prior works. He's not selling it as original art, but if he does, he would be fine there too because it IS original work. And besides, it's a typeface, not the Mona Lisa (sorry miha, it's good but not a priceless work of art).

One point to keep in mind is that there are usability considerations when using this typeface online. Just be careful what you use it for. Using it to depict thumbnails of documents or text: GOOD. Using it to render your entire blog post: BAD.

tupper's picture

I love it! The colour fringing certainly brings back memories of the 8-bit days.

caf's picture

It looks good (although I see noticeable "rainbowing" on most glyphs, particularly on '<' and lower-case 'v' and 'w').

It'd be very useful for mobile phones with the little ~3cm x ~5cm screens - you should see if Opera and Google are interested for the mobile Java versions of Opera Browser and Google Maps.

Cjoez's picture

Registered just to say I'm red-green colourblind and I can read it easily, from right up to the screen to about 1.5m away. :)

Henry Birdseye's picture

Amazing, Miha. We are working on kind of the same thing.

John Hudson's picture

Firmin Didot would’ve loved that ornamented specimen

I was thinking more Fournier. Actually, the proportions and slant of the italic also suggest Fournier to me. Congratulations on the first manual subpixel French neo-classical type.

DevilsAvacado's picture

Isn't any font "subpixel" if it's anti-aliased?

StoneCypher's picture

"Sooooo miha is dishonest for not thoroughly researching some obscure font that hasn’t been in use for over a decade that no one has ever heard of?"

No, Miha is dishonest for claiming first ever without having put in any serious effort to find out whether that's true. (I maintain that not google searching the simplest possible phrase, subpixel font, is evidence that no serious effort was put in.)

Don't worry, Erly, I know yew kin't reed tew gud-like. I'll try to speak slower when you're around next time. (Miha: it's a reference to the television show from whence he draws his username and icon, not slander.)


  1. "I am very sorry if I was dishonest, I had no such intentions."

    I realize that. The reason for the journalistic precept of not making sweeping statements without researching them first is to prevent unintentional dishonesty from still making one dishonest. Notably, your blog entry's title has not yet changed, nor has yet the text been amended; noting a wrong as intentional doesn't mean you shouldn't still clean it up.

  2. "I suggested that maybe this is first such font for LCD screens"

    Well, you'd be wrong there too. Hence the bit about "please try checking before making the claim." Don't worry, Dorothy, you'll get there. Eventually.

    The Apple Newton and the Palm III both had SPAA color fonts. Incidentally, your font isn't for LCD screens; it's for right-bar screens. Many screens that aren't LCD are right-bar, and many LCD screens aren't right-bar. For example, the two screens on the Nintendo DS, which have had SPAA fonts in commercial use for nearly five years, are aligned differently to save on cable length, so your font doesn't apply to one of (I think the top, but forget) those screens.

    I'm sure there are earlier examples of LCD screens SPAA fonts, but I'm not a fontologist with a domain name that implies a deep familiarity with type, so I can only think of about a dozen counter-examples off of the top of my head. (Without research, the gameboy advance, the nintendo ds, the palm 3 and all following it, windows mobile both as bitmap and as cleartype, my apple iphone, the sega nomad, the apple newton, the google android, my canon vixie hf-200 camcorder's screen, the cybiko in monochrome, the Sony PSP, the Game Park GP-32 and all following it, and just to make it a baker's dozen, let's say the Nintendo DSi is a different machine than the DS.)

    But that's cool: if you don't know enough about the thing you're saying "first ever" in public about to think of those dozen plus obvious examples off the top of your head, there's always research.

    Try it some time.

  3. "I also did a google search"

    Wow, one whole google search? That must have taken ages; I can see why you'd be surprised that such thoroughness might come up empty handed.

    So far I've been unable to think of a reasonable google search which doesn't find an example in the first two pages. Let's call it Google Anti-golf.

    What search did you use, please? I'm unable to replicate your failure even at the single attempt level. (Note the lack of pluralization in order to help you understand the quality and diligence of your research before declaring a world first, by the way. It's instructive. And hilarious. But mostly instructive.)

    If you didn't look at the second page of results, then it's a little easier to find queries that might fail; I've tried around 40 so far, and two have so far failed to give a first page result.

    And as we all know, there are only in fact ten things on the web, so looking at a second page before declaring a world first would be a waste of time.

  4. "but I found only automatically rendered subpixel fonts."

    Well, that's curious. They're not hard to find. For example, my old website,, has four rendered PNGs of complete SPAA fonts in every flag combination of [bold, italic, underline, strike-through] (16 renders per font per size) at about half a dozen sizes per font, covering the entire publically released microsoft T series (tahoma etc), V series (verdana etc) and C series (candara etc).

    I mean it's not like they're on a page rank six blog too, or anything. Really, really hard to find stuff.

    And I mean, in the two minutes it took me to stop sadbear laughing, I found about a dozen bitmap SPAA rendered fonts in things like FLTK and older projects from SWAG.

    One of my font renders was the default font in the linux shell compiled for the Nintendo DS, last time I looked, if I remember correctly (if I'm wrong, Pepsiman will set me straight, but I think he was using one of my Consolas renders.)

    So yeah. I guess you looked pretty hard, huh?

  5. "Only later there was a comment that it is indeed not the first font"

    Yeah, generally people can't leave comments about the wrongness of a claim to a world first before the claim is published. "Only later" is a side effect of our not being able to see web articles through time. You know, not being John Pertwee, it's a little hard to rustle up that kind of defiance of physics just to get some luls in on a blog.

Please amend the article and title (and this doesn't mean to a third wrong guess, this means to something simple and factual like "my first subpixel bitmap font"). The mistake is excusable; to err is human. Making a new false guess claim after your last false guess claim didn't work out isn't fixing an error, it's repeating an error.

Subpixel fonts are nothing new. They're 30 years old in a field with a 40 year consumer presence. You aren't getting a first here. Stop pretending, please.


John Haugeland is

StoneCypher's picture

DevilsAdvocado: no. Subpixel antialiasing is the practice of using the independant color channels in the pixel as if they were distinct grayscale positions, instead of using them as color, in order to triple the effective horizontal resolution (assuming a standard three-band arrangement like one finds in most LCD, plasma and OLED monitors), along with a little math hokey pokey to prevent color fringing.

You can see the difference by zooming way in on a screenshot of traditional AA and subpixel AA. The subpixel AA has colored edges because it's using the physical position of color channels like a mask, which the eye can sort out when it's at scale. There's an earlier post on this same blog about the youtube favicon; that's an example of the effect (the newer one, which is nicer, has colored edges because they're the rightmost and leftmost channel - red or blue respectively - being turned off to get graceful curves.

It's the difference between old style anti-aliasing and ClearType, if you're a windows user; ClearType is Microsoft's sub-pixel technology.

If you're interested, here's a pretty good beginners' tutorial.

Subpixel antialiasing isn't actually antialiasing; it's a different addressing mechanism for physical screen positions. Boolean SPAA looks better than most antialiasing, but you can mix antialiasing with SPAA (that is, in that GRC tutorial, use the narrow grid but then use grayscale anyway) and get really gorgeous results.

The downside is the math for that is moderately expensive, because you have to do some filtering (usually a 1-2-3-2-1 filter) to get it to work, so if you're working on an embedded or portable device, you can expect slow results or large battery draw or both, depending on the device.

But it's totally worth it.

John Haugeland is

neoarch's picture

so when can I put this on my eeepc?

StoneCypher's picture

Miha: here's some of the extremely easily available documentation of your "first" for you, showing where Apple was implementing it in 1976 (so 33 years right there). Amusingly, it's a right-bar system on a CRT, because none of this has anything to do with LCDs, only with the physical color bar arrangement.

Oh, and it's on the first non-wikipedia site to come up on Google for subpixel.

Oh, and it's linked to on every single page, using the link text "the true origins of these ideas."

Oh, and he cedes that he has no idea where it comes from, despite having been involved with it probably before you were born and having seen it in use at Apple, IBM, Xerox, Microsoft and Koala. Because he doesn't have time to do the research.


Seriously, this information could not be any easier to find if it was nailed to your door by Martin Luther himself with a knife and a blood signature.

And GPS.

StoneCypher's picture

NeoArch: your EEEpc already does this.

StoneCypher's picture

Oh, also:

When you mix a color for one pixel, you use three sliders: each slider is actually for one subpixel.

Yeah, this isn't actually correct. This is correct when-and-only-when Photoshop's color model matches the monitor's color model. PNG has color model adjustment because that's essentially never true; even disregarding things like color temperature, the color base constants aren't actually fixed points, but rather chosen points in a range, and many manufacturers use subtly different colors (which is why photoshop has all that color registration stuff, so that different monitors working on adjacent projects wouldn't cause clashing results.) That has to do with what the underlying chemistry of the dyes used to mask the LEDs, dope the phosphors or light the OLED/Plasma are, and are the reason why certain manufacturers have such better performance in certain color ranges.

This is why Samsung makes a five channel monitor, too.

What you tried to say was:

"In a three color colorspace, the color output value can be used as a lightness control when thinking of the subpixels as grayscale values rather than chrominances. This is compounded by the fact that I'm working in Photoshop, which is going to screw with the colors I output in ways I apparently don't understand, which is why I'm having such difficulty with straight lines. But that's cool, because everyone's monitor is just like mine, which is why my LCD font looks wrong on about 20% of LCDs, and works on lots of CRTs and OLEDs and so on."

Stop using PNG for SPAA unless you're going to learn colorspaces, which are hard for color scientists (no, that's really a job), so you won't. Photoshop and PNG conspire to try to fix your work in colorspace, which is usually a good idea but murderous to SPAA. Switch to Targa or TIFF instead. PNG is lossless in a lot more ways than pixel values, and you actually want colorspace channel loss here, because otherwise it screws with your per-pixel calibration.

Incidentally, a photoshop user should be intimately familiar with that colorspaces don't match, that photoshop colorspace isn't monitor colorspace even when the names match, and that photoshop can switch between colorspaces within a single document, so those sliders obviously aren't subpixel values.

StoneCypher's picture

Here's X11 doing it in 1987:

John Haugeland is

osteele's picture

I love this! Here's my little homage: a jQuery plugin to replace text on a page by characters from this font -- incomplete, impractical, and probably not compatible with very many browsers, but hopefully fun.

jsimmons's picture

Wow, StoneCypher is on a mission LOL.

He did this by hand in Photoshop, it doesn't matter if X11 did it in 87, ClearType does it now. He does it by hand. Are we seeing the difference here? I can barely appreciate the genuinely interesting things you had to say about color because you're so wrapped up in your bad attitude.

aluminum's picture

"Isn’t any font “subpixel” if it’s anti-aliased?"

It's rendered that way, though that info isn't necessarily a part of the font.

miha is pretty much hand-hinting letterforms specifically for optimized sub-pixel rendering at an x-height of 3px. So that's not the same as just letting the font-smoothing software do it for you.

neoarch's picture

StoneCypher: maybe so, but it doesn't look quite as good as these imo. my font size only goes down to 6 for most fonts.

dontbugme's picture

StoneCypher: Six consecutive posts to snipe at someone's work is at least six too many. You've dragged the intelligence level of the whole site down by a full order of magnitude by subjecting us all to your verbal abuse of miha. Talent, which miha has clearly manifested in spades, trumps moral self-righteousness. It's a f**ing website, not a court of law. You pretty clearly created an account here specifically to put miha in his/her place, to accomplish what?

Grow up and let someone have a moment to enjoy being rightfully impressed with themselves for pulling off an impressive feat. Next you'll be telling kindergarteners that Santa Claus isn't real just to watch them cry.

Btw, what you tried to spell in your first post was "independEnt."


So easy, you don't even have to DO anything. You just wait for the little red line to show you that you're dumb. If you're going to be a pedantic pain in the arse, at least do us the favor of being impeccable yourself.

Please amend your post by typing out "I will not misspell independent" twenty times.

dontbugme's picture

Would you like to verify for us that these previous subpixel fonts are in fact handmade, like miha's? My google finger is too tired to check.

Chandler.'s picture

aaaannd in comes StoneCypher with the Bonerkill...

miha's picture

John Haugeland: You wrote such a lenghty posts, but I am still missing an example of handmade subpixel font. [other than for Apple II]*

When I said "first subpixel typeface, ever" I meant a handmade typeface – because "pixel fonts" are handmade and most obviously, fonts are rendered with subpixel technology for millions of users for a years now. How on earth could mine typeface be the first one that is "rendered" using subpixels?

Because he [I] doesn’t have time to do the research.
Did you even read my post earlier in this thread? I already gave the link to this wonderful website, which BTW doesn't mention hand-optimised subpixel fonts.

unless you’re going to learn colorspaces
Actually I already know about it a lot. I had one semester of Color mesauring and another of Color managament. Also, I had an assignment for Color managament in Photoshop. Believe me, I know what I am doing. A single statement on which you based your whole comment was simplified. Ironically, your comment about color managament is simplified too.

Oliver, can you add a license information that generated images are released under this license: CC by-nd 2.5 with an addition that all generated images will be changed once I finish my typeface. I may latter also change rather restrictive conditions for attribution to less restrictive ones.

* I was able to find only one subpixel font for Apple II (of course font doesn't work with current technology of most web users). And is't only a typeface, not a type family.

This thread is becomming a negative one. Some of you may be more polite, although if you are saying the right thing. :-(

gingerbeardman's picture

I recommend ignoring John Haugeland

This is great work, even if it might be lost on the majority of people :)

svenni's picture

Nice work!

Regardless of weather this is a first in any sense, I like your design.

I've not seen, in samples posted here by your detractors, or elsewhere, subpixel coloring used to make such fine little glyph shapes.

Keep up the good work!

PS: Mr Haugland, you made your point in your first post. With every extra post you add you seem ever more obsessive and weird. If you browse around this site you'll find that the tone of conversation here is polite and grown up. Criticism is usually constructive (and not repetetive, we're trying to help each other, not win an argument that no-one but us wants to participate in), and to the point. And you've made yours.

osteele's picture

Oliver, can you add a license information that generated images are released under this license: done.

This thread is becoming a negative one: This and this might be useful.

towolf's picture

Very neat. But alpha blending to anything other than white will be cumbersome. Using your palette and brush method you’ll basically have to redo it all each time. With a more automated method you could do alpha blending in each RGB channel separately.

dst.r += (src.r - dst.r) * alpha.r;
dst.g += (src.g - dst.g) * alpha.g;
dst.b += (src.b - dst.b) * alpha.b;

acrobat's picture

John Haugeland, your style sucks, but thanks for a lot of interesting information.

Miha, I can feel your enthusiasm. Wonderful work!

chank's picture

totally awesome. congrats miha! nice work, indeed.

sexyrobot's picture

the name should be simple...i like 'tiny' or 'fine print'
also, i have a question (non-typographer here so forgive me if it's stupid) the letters overlay? i.e. is the leftmost pixel in the 'e' the same when it follows an 'o' as when it follows an 'l' ?
also, you got some love from metafilter...

miha's picture

David Jones, thank you very much for the link! I really didn't know wether it was my typeface that it was first or not, but now all doubts are gone. Well, probably mine is still the first type family [like it says in the title], but anyway: all the glory should go to Ken Perlin! :-)

About his font: he actually had a little different intentions than me. I also wanted to design the smallest typeface, but with style comming before being the smallest (actually, I like style in both italics). My typeface has 1 pixel lower x-height, but has ascenders & descenders; and even by cropping them I wouldn't fit more text than him.

I like his typeface! But for my taste there are a bit too much pronounced colors. Despite stronger colors it has one huge difference: not all its glyphs are made the same, which leads me to conclusion that it was actually at least partially programmed. I would love to know more! If it was programmed, rendering engine was probably programmed specifically for this font. In this case, I would still consider it "handmade", and mine respect would even deepen.

Maybe it's strange, but I am not dissapointed because of this. I think I am getting more excited!

Matt Sephton: "I recommend ignoring John Haugeland"
I will, I see it was my mistake responding. His posts are actually the most impolite I've seen for some months on Typophile.

Tobias, I think that you can't do it as easily. While alpha is correct, color should change too. Because I used a consistent color pallete searching & replacing each color with a different set of colors would be trivial. I used 4 shades of red, 5 of blue and I think 3 grays. With white as a background.

"Actually, the proportions and slant of the italic also suggest Fournier to me. Congratulations on the first manual subpixel French neo-classical type."
John, this was almost exactly what I tried. I wanted to do a garamond-styled italic. I have still more room for experimetations. I will certainly try more slanted italic "A" and "f". Also I really love OsF, they are really appropriate.

This time, there is no update in design, I am too busy reading retweets :-P. But just for fun, can you guess what is below:

Original size is in my post with specimen of bold italic.

miha's picture

Steve, this is also new for some type designers.

Letters are almost always the same, but sometimes when manually setting the text you have to erase the leftmost pixel to get the spacing right. I think you may read Wikipedia page about subpixel rendering and maybe this.

fieryspoon's picture

Miha: I'm impressed with your font, Miha. I'd really love to see it when it's complete.

StoneCypher: Even if you are actually correct, it is not at all acceptable to speak to people the way you have been. There are ways to communicate without making everyone hate you. As someone who doesn't even disagree with you, it is hard not to completely disregard what you have to say due to your overwhelming arrogance. You're obviously intelligent, so I'd suggest that you behave than a thirteen year old forum troll.

StoneCypher's picture

Miha: oh, now it has to be hand made? That's quite new. If you had said that before I would have pointed you to the several I've made or the dozen-odd I've collected over the years. I can also direct you to the webpages of various people who have made them and released them freely on the web. I'm sure you'll then change your blog title to "first hand-made subpixel font in photoshop ever", which will also be wrong.

There are about a dozen in circulation for the GBA, all of which were hand made. Many of the fonts I've pointed you to were hand made. And, of course, the very first example I gave you, the Apple ][ ROM font, was also hand made, as were about half of the other examples I gave you.

You're just making claims based on guesses and acting like there's nothing wrong with that.

I notice that you've picked a third completely wrong guess about your being first, and used that as your latest false unresearched claim about your world firsts.

Please stop making false claims. You aren't even trying to research them. People are repeating your claims as if they were fact. You are building a reputation based on things you made up.

The first time it was an understandable mistake. The second it was a not-understandable mistake. By now, the third time, I'm hoping you'll learn your lesson about basic honesty: don't make claims if you don't know them to be true.

Unfortunately I'm learning that you won't do that, and your readership is becoming extremely abusive.

Please fix your post title to something that is honest, instead of making yet another false claim to a first. You've made the same dishonest class of statement three times in a row, now. The first you posited as an honest mistake. I notice you haven't tried to explain the other two as such.

Also, now there are people on MetaFilter claiming I'm wrong, based on that they developed fonts for Newton and believe that means they know everything any Newton application ever did, and I'm not willing to pay five dollars to set the record straight. One fish Two fish Red fish Blue fish, if you would like a hand finding apple newton applications using subpixel fonts, please contact me directly instead of telling a bunch of people I won't pay to talk to that I'm wrong. I'm not hard to reach, and you should probably ask me where those applications are before saying I'm wrong in public.

I released some of the software you're claiming I'm wrong about, so you might feel like an authority, but hey, so do I. It seems likely that I know more about the software I released than did a guy who made vector fonts.

StoneCypher's picture

It is unfortunate that the people here are so happy to condescend to me, when I was initially polite and did not become rude until the dishonesty was repeated, yet are all over a minor font designer who has hand-rendered a subpixel font 33 years after the technology went to market, and made repeated false claims about firsts afterwards.

It's almost like you guys aren't offended by being lied to.

StoneCypher's picture

"PS: Mr Haugland, you made your point in your first post."

Obviously not; the post is newly dishonest twice, and still is as we speak, on the back of data which is refuted by said first post. Indeed, Miha has ceded the first to Ken Perlin, who acted more than 30 years after the examples I gave her, yet still has not amended her blog title or text.

If you hadn't realized, she's trying to become famous by claiming something she didn't do, knowing that most people who repeat the work won't read the comments, and so her name will be on everyone's blog for achieving something she even now admits herself she did not actually achieve.

It's bothersome that someone would claim someone else's success this way. I'm friends with several of the people who performed these steps most likely before Miha was born, and they are legitimately offended by this person lying and stealing their thunder.

If you guys are angry because I brought facts to the table? Well, too bad.

This doesn't go to Ken Perlin, who is a great guy, and who I miss talking to.

This probably goes to Steve Wozniak, who as I already told Miha a day before she decided to credit Ken, hand-made a family of fonts for right-raster subpixel rendering in 1976.

She just doesn't care to be honest about the data she was provided because her fans have decided to tell me I'm a bad, bad man, in much harsher tones than the tones they're complaining about.

Compelling stuff, really.

We'll see whether Miha ever becomes honest. At this point, I'm not holding my breath.

towolf's picture

Well roared, lion! But drop it now please.

Besides, probably the »first page of google hits« would have revealed the likely gender of a person from Slovenia named Miha.

Frode Bo Helland's picture

John: I think your argument is absolutely fine, but I still want to ask you to tone down the angry voice. Being ridiculed in public is no good experience, not for any of you. My advice is to continue this talk in private. I'm sure, if you let him, Miha can learn tons from you! You clearly have a lot of interest in the subject, and he seems eager to learn.

StoneCypher's picture

Frode: I'll speak as I see fit, thanks. Should someone ever take credit for your work thirty years late falsely in public three times in a row, I should hope you also have a friend who will stand up for you.

I was polite the first time. When the false claims continued, that changed.

As far as Miha learning from me, I have a fascination with honesty in those I choose to teach. Given that Miha has already made three distinct false claims, and that Miha has chosen to say her mistake was to respond to me at all, I don't think either party involved is interested in such an arrangement.

It's been more than a day. It's been several distinct communications. It's time for the masquerade to end.

StoneCypher's picture

"Besides, probably the »first page of google hits« would have revealed the likely gender of a person from Slovenia named Miha."

Yeah, I used to date a Slovak named Miha who was a girl. I'd have thought had I that wrong, s/he would have said so.

As I understood it, it's like Dale, Carol or Sammy: it can be either, but it's usually female. If that's wrong, s/he should probably mention it.

StoneCypher's picture

SexyRobot: what you're looking for is called "kerning", and is handled by most type systems, including bitmapped font type systems. As these are actually images, not a font at all, there is no kerning information, and as such you would have to position them manually. Since these are images, not a subpixel grid, you are constrained to whole-pixel positioning, which loses the 3x kerning benefit normally inherent in a subpixel type system.

However, this is actually an understandable limitation of this work: subpixel bitmapped font systems are barely present at all, and difficult even for programmers to locate and use, let alone people who don't work with code.

There is a subpixel font system from 2003 in pure portable C on my webpage if you want it, but the work involved with converting this image set of letters into an actual subpixel font is significant; it means writing something to break down the color channels independantly and re-assemble the grid.

On the bright side, an actual subpixel font would not be locked to RGB screens, as this one is, so if you intend to use it in software without losing 20% of your customer base immediately, you should probably get cracking.

StoneCypher's picture

"Very neat. But alpha blending to anything other than white will be cumbersome. "

It's actually not too bad. Using the 1,2,3,2,1 filter which may be read about at GRC, you get color balance without burn or channel burn, and since it's so small, you can implement it in the registers on basically any modern embedded CPU (or in matrices in a SSE machine, but I can't imagine anyone would worry about font alpha on a processor that large.)

I had subpixel truetype with alpha rendering working for full-screen 8-pixel Arial on the GameBoy Advance (an arm7 running at 16mhz) in single frames (1/60, roughly, of a second.) The GameBoy Advance is approximately half of nothing, in terms of processing power.

Granted, all I was doing was using FreeType 2, so my role in that work was basically typing #include and hitting compile, but the point is, alpha actually isn't expensive at all, in any practical sense. You spend a whole lot more CPU power alpha blending every single window border on a Vista machine running Aero without DX10 shaders.

It's basically a blitter, honestly. Generate the font grid and then apply it to the background like you would an alpha texture. It's pretty much the same thing you'd use to draw sprites on a Commodore 64, but with three multiplies per pixel (or four shifts and an XOR, if you do your old-bear reading.)

StoneCypher's picture

"This is really cool!

How did you decide how to choose the pixel colors to address the subpixels? Are you using the [1/9,2/9,3/9,2/9,1/9] filter described by Steve Gibson in the link you mentioned above?"

No, this is a simple boolean channel rendering. This is subpixel, but it isn't anti-aliased.

If you take the time to write out each combination of the three channels in a pixel, then do the math to see what they turn up, you get the top eight colors from ANSI, except with gray as black instead. A web designer would call them #000, #00F, #0F0, #0FF, #F00, #F0F, #FF0 and #FFF. Each F is an on (or "white") subpixel, and each 0 is an off (or "black") subpixel.

The key to understanding the effect is to forget about the relationship between color channels and composite pixel color, and instead to view things like the cerebral cortex does - as a black mask over a varying-color background.

The brain processes the mask _before_ it composites the color. The fineness of the subpixel line is present explicitly because it is position independant of color. Color is honestly forgotten. You forget it too.

Look at the top of a capital A. It'll just be one sub-pixel, but it still looks black in a white background, even though whatever pixel that's in is down one color channel. Why isn't it magenta, yellow or cyan?

Because the brain sees a black mask there, and interprets the background color as an iridescent range which is *later* blended together.

GRC's 1,2,3,2,1 filter is for anti-aliasing within that mask. The reason that filter exists is that raw anti-aliasing spreads artifacts over the color channels, which then become visible as net color changes.

But this font isn't anti-aliased at all. It's subpixel. The two are seperate concepts which can be applied together, but have not been here.

GRC's capital A example is exactly what's going on here: there is no anti-aliasing at all, but since the effect of subpixel is stronger than AA, it still looks better than AA.

1,2,3,2,1 is about doing both at the same time while managing color fringes.

StoneCypher's picture


"Has anyone built a chart that shows the relation between the specific colors needed to trigger the individual combination of sub-pixels?"

On RGB (~80% of the market), the web color #RGB, where for each pixel you want dark you fill in a 0, and for each color you want light you fill in F. So, for example, if you want the right and center subpixel mask-black, but the left unmask-white, it's #F00, or bright red.

On BGR (~20% of the market), use #BGR instead.

There are only eight colors per arrangement, and in the real world, only RGB and BGR exist.

The germane observation though is that this is actually a boolean triple, not a color. The reason that it matters which screen orientation is used is that these are images, not a font; a subpixel bitmap font is just a collection of boolean or integer valued pixels, as some grayscale range.

This is a serious problem in practice: one of five of your customers using LCD screens will not be able to read this font. It'll look like tiny color blobs. Larger fonts can usually be resolved with some head pain, but at this scale, the human can't usually put it together if the color set is wrong.

An example of where this matters is the Nintendo DS. That device has two screens. The manufacturer of the screens (Sharp) put the connection cable on the bottom edge. To save on extra cable, Nintendo installs the top screen upside-down and reverses its addressing order so that it shouldn't affect programmers.

Except that changes the top screen to BGR, so if you want to do subpixel on the DS, you have to have *both* orderings (or an actual font).

An actual font would just be {1,0,0}, {0,1,0}, ... , and the colors would be worked out at runtime to match the monitor in use. A font renderer would, as such, also be able to position the font characters at subpixel boundaries instead of pixel boundaries, since it's just a big 3:1 boolean mask it's painting, instead of precalculated color pixels meant to trigger the subpixel effect. That means 3x the fine-grained positioning of the spacing between letters, and if you're a fontographer, you know how important that is for kerning, for justification and so on.

Which isn't Miha's fault: subpixel bitmap font software is brutally difficult to find and has essentially no customer penetration, so unless you're also writing the dependant software (which is why you see this in cases like the nintendo ds, where that's always the case, but not on PCs), it's generally an exercise in futility to attempt that sort of font.

Just saying.

StoneCypher's picture

Incidentally with regard to color blind effects, it depends on the kind of color blindness in question. There are two general groups of color blindness: people whose cones for one or more color ranges have developed to report as a different range (most common) and people whose cones for one or more color ranges are absent, either because they didn't develop or because they were destroyed, typically due to disease.

People whose cones are for the wrong color (say, red-as-green, green, blue, the most common color blindness type) will see roughly the same quality that normal visioned people will see. Those people still respond to the third light color, but cannot differentiate it between that and the other color stimulus. The blue light is caught, but is responded to as green. There is a minor difference in that the human eye is more sensitive to certain light ranges - we're much better at green than blue, which is why YUV encodes only one quarter the blue range to save on bandwidth - then when one of the photoreceptors reports in the wrong range, it reports a diminished signal, so it's like having dark stripes on whichever of the color pair is less responsive, but the human visual cortex is made to remove partial alpha patterns, so that doesn't really matter much in practice (which is also why most SPAA systems don't try to adjust their output to the sensitivity range of each color).

People whose sensitivity to a color is absent will see a significantly degraded quality of text, because there will be stripe gaps in important curves and angled lines, and the human brain doesn't like to guess, because that leads to optical illusions, so it decides you must be looking through a fern instead, and interprets the missing rows as a second mask of vertical lines, which is very distracting. However, this kind of color blindness is rare.

You can tell the difference by holding up a white board with primary red, green and blue circle on it. People whose sensitivity is there but mis-labelled will see red, green and green, or whatever. People whose sensitivity is absent will see red, green and black, or whatever.

If they see two colors, one repeated, they'll report a quality font rendering. If they see two colors and black, they'll report a very poor font rendering.

StoneCypher's picture

Here's HRCG (High-Resolution Character Generator), which is Apple doing a handmade subpixel type family in 1976, US Patent 4079458:

Three years later they released a font editing application, US patent 4345244. It's basically what you're doing right now in Photoshop, except that it also had a grid 2:1 mode (because apple screens weren't actually 3-color back then).

By the way, Apple originally did it actually by hand: numbers in code. Using a paint program like the one they released in 1979 isn't by hand at all. But they had that as a sale product on the market in 1979, and more than four hundred fonts were released by people like you. This was a product you could buy in Radio Shack in the Carter era, during the Arab Oil Embargo.

None of those font authors claimed to be the first, though.


Here's a collection of hand-made subpixel fonts (he brags about how hand-made anti-aliasing makes a difference, and brags about how Microsoft heard about the Cleartype practice from him) for the Mac from _1999_, which went offline in 2006, but is still held on the Wayback Machine, offering eleven different face families at varying scales, boldness and italicness of which five are lost forever:


Here's the list of Microsoft patents that apply to subpixel bitmapped rendering. Just replace the patentstorm number with the one you want to see. 6,188,385; 6,219,025; 6,239,783; 6,307,566 These are all from the early 1990s.


Here's the Chinese doing it for Han in 1985:


I half-wrote a bitmap subpixel font editor in 2006 for the web:


Here is a hand-made subpixel font demo for the GameBoy Advance from the 2005 GBAX coding competition. It is a larger type family than the one here. It's near the end; search for guyfawkes.


Here's AstroStorm, a game written for a 2002 competition for the commodore 64, with subpixel bitmap font face rendering and subpixel *level* rendering, from hand drawn fonts. This is primarily hilarious because the Commodore 64 died long before screens which could ever have rendered this game, which the author notes in his readme.txt in the competition entry. It's a programmer joke.


Here's XFT, which has been doing this since 2003:


Here's Anti-Grain Geometry, a graphics engine which can subpixel render vector fonts at any angle since 2004, because it's actually subpixel rendering, not just pre-calculating colors:

He has an extremely long and detailed explanation of half a dozen forms of subpixel rendering, from 2007.


Here's Cairo Graphics, which can do the same thing since 2005:


Here's Adobe GIL, which can do the same thing since 2006:


Here's SubLCD, which can do the same thing since 2007:


Here's a Nintendo DS universal text reader from February of this year which uses a different subpixel font.


Here's Tonc's Text Engine, a standard library in almost every GBA and DS toolchain, which is portable and has builds for a dozen or so handheld devices, including basically everything targetted by DevKitPro. It's a real subpixel font engine: it has subpixel positioning, subpixel kerning, more than a dozen fonts with a variety of faces and the ability for users to add more, and can support color subpixel text. TTE began in 2004 if I remember correctly, though it was actively maintained until 2008.


Here's the 2006 port of Angband to the Nintendo DS, which has a variety of subpixel font options.


Here are half a dozen subpixel implementations, some vector and some bitmapped, for the GP32x.


Here's discussion of the Amazon Kindle 2 getting SPAA in February.


Here's Microsoft explaining how they handle bitmap subpixel positioning post vector font rendering in 2004 at an astoundingly technical level:


Now would you please stop pretending you invented, what is it this time, the "hand made subpixel type family"? Even a cursory look around the internet reveals dozens of counter-examples from the era of Disco.

This was old news to KC and the Sunshine Band.

miha's picture

I said:
"But is this the first font family? […] I changed title to this. […] BTW, I would love to see some examples of your (or someone else) hand-made subpixel typefaces."
Replies with almost two thousands words followed, but there was no link or embedded image of what I asked.
David responded with four (!) words and a link. I was very glad he posted it, and I modified first post to mention Ken Perlin.

I said latter:
"Well, probably mine is still the first type family [like it says in the title]"*
Again, replies followed with now more than three thousands words. Yet I stil haven't seen an embedded image or the link to typographic family.

Strange, there were also no direct responses to what I directly responded to him after he made almost two thousands words.

I see this as a trolling.

I also strongly dislike discussing about discussion. I am not satisified that this happened in my second blog / thread post post I ever made here (and I am a member for more than a year!).
* I am not sure if non-compatible rendering on LCD of old technology counts, but I didn't see an example for it either.

jwr's picture

I suggest ignoring StoneCypher. He obviously has 1) way too much time on his hands, 2) can't spend it in a creative way, instead destroying what others have done.

Frode Bo Helland's picture

John, I'm only giving an advice. It's up to you to make something of it or not:) Cheers

autacraft's picture


I've just been slung here via the glories of MetaFilter

Just wanted to sing your praises, I LOVE your teeny tiny font family! Its just great!

Is it available yet? If not, any idea when it will be complete and where can we all get it from? Id absolutely love to use it if possible, just on my own site?

I started reading on the comments, and to be honest didnt really understand a lot of what was been said so I skipped through :-)

One thing though, Mr. John Haugeland ('full of bs' - how very apt!)is there really any need at all to be so enraged, angry and adamant? You are seemingly the only one on this post so 'effected' by any genuine oversight on Miha's part....bit dramatic don't you think?...thats rhetorical by the way.

To err is human sir, remember that!

Cheers again Miha!

Syndicate content Syndicate content