Each glyph is a 14x8 array of uint8s. Each element takes a value from 0 to 9, where 0 represents the background color and 9 represents the foreground (text) color. The renderer then converts this number to a a floating point value [0, 1] and uses it for blending. The only downside to this so far is that the glyph representations are no longer clear in the code:
[snip] // 35 - '#' { {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 8, 5, 4, 9, 0}, {0, 0, 0, 9, 4, 5, 8, 0}, {0, 0, 4, 8, 0, 7, 7, 0}, {4, 9, 9, 9, 9, 9, 9, 9}, {0, 0, 7, 5, 0, 9, 4, 0}, {0, 0, 9, 0, 4, 8, 0, 0}, {9, 9, 9, 9, 9, 9, 9, 5}, {0, 6, 7, 0, 8, 4, 0, 0}, {0, 7, 6, 3, 9, 3, 0, 0}, {0, 9, 4, 5, 8, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0} }, // 36 - '$' { {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 9, 0, 0, 0}, {0, 4, 7, 9, 9, 9, 7, 4}, {0, 8, 5, 0, 9, 0, 4, 8}, {0, 9, 4, 0, 9, 0, 0, 0}, {0, 5, 8, 7, 9, 4, 0, 0}, {0, 0, 4, 5, 9, 5, 8, 5}, {0, 0, 0, 0, 9, 0, 0, 9}, {0, 8, 4, 0, 9, 0, 5, 8}, {0, 4, 7, 9, 9, 9, 7, 4}, {0, 0, 0, 0, 9, 0, 0, 0}, {0, 0, 0, 0, 9, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0} },[/snip]
Now, I really have one thing to say before going off to sleep: Rawrrrrrrrrrrrrrrrrrrrrrrrr.