Text rendering
In this section, we describe every essential detail of the text rendering process implemented in the clTextRenderer
class. Here are the parts of our text renderer:
UTF-8 string decoding (http://en.wikipedia.org/wiki/UTF-8)
Text size calculation, kerning, and advance calculation
Rendering of individual glyph, just like the one in the FreeType example from Chapter 2, Native Libraries
Fonts and glyphs loading and caching
String rendering
We assume all the strings are in the UTF-8 encoding because this way all Latin characters with ASCII codes between 0 and 127 take exactly one byte, and various national symbols take up to four bytes. The only problem with UTF-8 is that FreeType accepts fixed-width 2-byte UCS-2 encoding, so we have to include the decoding routine to convert from UTF-8 to UCS-2.
Note
There is a nice article on the absolute minimum every software developer must know about Unicode and character sets. Check it out at http://www.joelonsoftware.com/articles/Unicode.html.
We...