A última vez que eu estava procurando por isso (para um jogo para iPhone), tentei várias opções, mas não consegui encontrar uma que fizesse tudo o que eu queria. Eu precisava renderizar uma única textura usando caracteres muito pequenos de uma fonte TTF comercial. Eu precisava ser capaz de especificar intervalos de caracteres, para que só contivessem os caracteres que eu precisava. Eu queria que ele empacotasse os glifos o mais firmemente possível. Eu precisava de coordenadas de textura em tempo de execução. Eu não me importava com o kerning "real", mas precisava de medições de glifos em tempo de execução, para que fossem espaçadas sensivelmente. Então, escrevi um pequeno aplicativo do Windows que renderizou todos os caracteres e salvou os espaçamentos ABC (conforme relatado pelo Windows) junto com as coordenadas de textura.
BTW, se você quiser renderizar um texto muito pequeno (com menos de 16 pixels de altura) no XP ou Vista, encontrará falhas no anti-aliasing do Windows. Uma solução fácil para mim foi usar http://drwatson.nobody.jp/gdi++/index-en.html para obter uma superamostragem transparente. Se eu estivesse começando de novo, provavelmente adotaria a mesma abordagem, mas observaria o FreeType2 em vez da renderização de texto nativo.
Se o seu texto não for atualizado com frequência, você poderá usar a renderização de texto da plataforma (ou talvez o FreeType) para renderizar pedaços inteiros para a textura conforme necessário em tempo de execução. Então você só precisa renderizar um único quad para cada string, mas a alocação de textura fica mais complicada. No lado positivo, você obtém renderização e layout de texto sem falhas gratuitamente nesses difíceis idiomas asiáticos, juntamente com o seu código GL significativamente mais rápido. A renderização de muitos caracteres individuais é cara, mesmo com três faixas degeneradas ou outros enfeites.