对于第二人生来说是跨平台运行的,那么显示文字就成为一个问题了。特别在3D环境里显示文字,更加是比较困难的问题。因为在图形界面里显示的字体,都是图片,并且每个字是一个图片,可以随着不同的字体大小而改变的。第二人生里是使用FreeType来实现文字显示的,而不是基于WINDOWS平台的显示字体技术。下面就来看看FreeType的字体管理器类,如下:
#001 class LLFontManager
#002 {
#003 public:
#004
static void initClass();
#005
static void cleanupClass();
#006
#007 public:
#008
LLFontManager();
#009
virtual ~LLFontManager();
#010 };
#011
在类的初始化函数里创建字体管理器。
#012 //static
#013 void LLFontManager::initClass()
#014 {
#015
gFontManagerp = new LLFontManager;
#016 }
#017
在清除函数删除分配的资源。
#018 //static
#019 void LLFontManager::cleanupClass()
#020 {
#021
delete gFontManagerp;
#022
gFontManagerp = NULL;
#023 }
#024
在构造函数初始化FreeType。
#025 LLFontManager::LLFontManager()
#026 {
#027
int error;
#028
error = FT_Init_FreeType(&gFTLibrary);
#029
if (error)
#030
{
#031
// Clean up freetype libs.
#032
llerrs << "Freetype initialization failure!" << llendl;
#033
FT_Done_FreeType(gFTLibrary);
#034
}
#035 }
#036
#037
在析构函数里删除FreeType。
#038 LLFontManager::~LLFontManager()
#039 {
#040
FT_Done_FreeType(gFTLibrary);
#041 }
FreeType支持很多字体显示,支持TrueType类型的字体,比如Windows里的字体文件。