[ TheFiddler: Topic split from http://www.opentk.com/node/236 ]
I get picky about text rendering and layout, which are two very different problems. Adding OpenGL, you have the additional problem of how to get the data into the graphics card. Here's are a couple good resources about advanced rendering: http://dmedia.dprogramming.com/?n=Tutorials.TextRendering1 and http://antigrain.com/research/font_rasterization/ The subject gets pretty complicated pretty quickly. I'll go over some things I'd like to do optimally, but by no means at first, and incrementally over time.
On the text rendering/OpenGL side, Freetype is the best library around. I know you're concerned about the external dependency, so what I'd like to do sometime is to have a separate Freetype driver that coexists with the OS-based drivers. Besides experimenting with what's discussed in the two links I posted, we'll need some way to find the fonts on the OS, a system for caching those loaded into memory. There's also the issue is applying styles like bolding and italics using either fonts in the same family or applying matricies. Another thing that matters is that fonts are optimized to fit to a specific pixel grid, so you have to query the OS for the screen pixel size and set a matrix based on that when you want to render the text.
Text layout is a completely separate problem. The simplest form is having fixed-width glyphs and trying to figure out where to break a line (so you don't have "exa" on one line and "mple" on the next). But it, too, gets much more complicated. For example, a lot of fonts have kerning, where two glyphs like an A and V are moved closer to each other because it looks funny otherwise. Internationalization adds a whole new layer of complexity. There are very few good libraries. Windows and OSX have built-in layout libraries. The only two good free ones are Pango and the ICU layout library. Both of the latter have their problems. I've found ICU much easier to work with, though it's written in C++, so it may have to be complied separately. Pango is written in C, and I've found it extremely difficult to use because all it has is a fairly terse API.
Before getting into Freetype and one of the free layout libraries, I would try to expand the complexity of the existing OS-based font drivers so that they could handle Unicode text, and maybe figure out some sort of tagging construct (XML?) to support bolding, italics, etc. The interface I'd like the client to see would be as simple as RenderText(font, text, rectangle). Maybe the font could be specified with an XML file.
To support this, we'd need access to something like Windows char messages that inform the program of Unicode text. Perhaps the best way to go about this would be to have a sort of text-entry mode. It would suppress normal key events except for those like the enter or escape keys so that hitting r wouldn't fire a rocket when the user is typing, and send character events instead. Note that there's a lot that can be going on here, too. Sometimes more than one keypress triggers a single character, and UTF-16 (what C# strings are made of) is sometimes only valid in pairs.
This is all ideas at this point. I don't want to take over your project, but I'd like to help if I can. This library has the potential to fix what I think are some of the problems with SDL.