Your description of using freetype to create a texture atlas along with all the glyph information is exactly what I'm doing in my current iPhone project.
I do all the parsing of the font in a pre-process step (All in C# on Windows as it happens). The atlas itself gets generated and contains only the characters needed - to cut down on space, I also sometimes end up generating more than a single atlas to keep textures sizes pow2 and of a sensible resolution.
You can easily pull out the glyph information from freetype. Pass that along to your app along with the textures at runtime and then it's fairly trivial to just alter the UV coords of the texture as required.
For what it's worth, this is how I define a glyph character inside my little engine:
struct FontGlyph
{
u32 char_code;
u32 m_x;
u32 m_y;
u32 m_width;
u32 m_height;
i32 m_horiBearingX;
i32 m_horiBearingY;
u32 m_horiAdvance;
u32 m__tpage_index;
};
I then have a 'SpriteString' object, which behaves pretty much like any other string, apart from I can draw it using sprites....
I agree this all might seem like a big job for a fairly trivial problem, but I've found it's given me plenty of flexibility and really didn't take that long to implement when I got down to it.
Feel free to reply or comment if you need any other details. (And good luck :)
Reply to your comment as I ran out of room in the comment section...
Check out the freetype documentation, it basically gives you the glyph data without messing about, it just pulls it right out of the font. As for the textures themselves, you get freetype to render each glyph, and then manage that to build the texture. This I do as a pre-process entirely separate from my main app.
Here's an excerpt of my tool code that does this: http://pastebin.com/md1c6354
Please note though, this was only ever intended for my eyes and not for public consumption, so excuse the fact it's messy as hell :)