Fun! When I saw spherical harmonics I was confused about why spherical harmonics would come into play in a voxel universe (isn't everything flat?). Digging into it a bit I found out more about spherical harmonic lighting: http://www.research.scea.com/gdc2003/spherical-harmonic-ligh...
The geometry may be flat, but relationships between objects are still arbitrary, so light can still hit things from any angle. Try as you might, you can't escape curves. ;)
That article's a classic; definitely worth a read for anyone interested in graphics.
Whoops, yeah, you caught me. As I handwaved in the post, there's a little bit of implementation detail in the real code that I removed to clarify the algorithm. Fixed now, thanks.
I like stb_truetype myself. It's C so you'll have to bind it if you're using any other language, but it's a lot simpler than Freetype. (Less features too, but it'll take a .ttf and return a bitmap, which sounds like what you want.)
It's always great to see things that people would consider nontrivial programming tasks being done with a much smaller amount of code than they would expect from looking at the more "mainstream" libraries that do it. Public domain is a big bonus too.
In comparison, Freetype is absolutely monsterous; it is a few times faster according to some benchmarks I've found, but a few orders of magnitude bigger too. Sometimes you don't need the fastest, you just want something simple that works.
1. Sort words by frequency. Map the highest and lowest frequencies to some maximum and minimum font size.
2. Render each word into an individual image with FreeType.
3. Find some pleasing way to arrange the word images using only their bounding boxes.
4. Render the word images into a final image, picking a random pleasant color to tint each word as you go.
EDIT: Or did you mean, "how does font rendering work"? In that case, I think it mostly boils down to rasterizing line segments and Bezier curves, along with algorithms for kerning and for trying to fit the text to the pixel grid. FreeType's documentation goes into great detail about what exactly a modern text renderer has to deal with, yet I found it to be very accessible as someone with little prior knowledge of the field. I recommend giving it a look:
For concave shapes like letters the best choice would probably be a scanline-based rasterization algorithm.
Sort all polygon edges from top to bottom and walk through that list line-by-line, keeping track of all active edges for each scanline. For those you can then find all intersections and fill the ranges in-between. By using an even-odd rule you can make sure that concave polygons and polygons with holes are filled properly.
I wrote one of those once! It was a nightmare morass of one-pixel errors. Maybe there was some clever simplification I missed that would have made it all easy, but these days I use the libraries. :P
I know that's how stb_truetype's renderer works, incidentally. Don't know if Freetype is the same, but I'd be mildly surprised to find it wasn't.