CEGUI中文显示四步曲

      最近使用CEGUI做界面碰到无法显示中文问题,百度,谷歌了一下,搜到不少方法,着实让我兴奋了一下(不用自己想了:-)),但真正去做的时候发现很是有问题,大部分的方法都不能正确的解决,基本是都“短斤缺两”,无奈,只能站在巨人的肩膀上自己摸索了,经过两个小时的努力,终于在晚饭把问题解决了,高兴之余记下解决方法,长征路上留个“脚印”。

第一步,要显示中文,就必须有中文字体,这个很容易就可以得到,在C:\WINDOWS\Fonts目录下就可以找到,在这儿我使用的是仿宋体(simfang.ttf),找到以后将它复制到..\OgreSDK\media\fonts目录中。OK,第一步完工:-)。

第二步,光有字体还不行,你需要建立一个font文件,此文件是字体的xml配置文件。下面我们就开始创建此font文件,在..\OgreSDK\media\gui目录下创建一个文本文件,输入 

<? xml version="1.0"  ?>

< Font  Name ="simfang"  Filename ="simfang.ttf"  Type ="FreeType"  Size ="12"  NativeHorzRes ="800"  NativeVertRes ="600"  AutoScaled ="true"   />

然后将此文件重命名为simfang.font。接下来进入第三步。

第三步,此步有两种方法

第一种,打开..\Ogre\media\gui目录下的TaharezLookSkin.scheme文件(打开方式自定,文件名有可能不同,但内容大同小异),然后在 

< Font  Name ="BlueHighway-8"  Filename ="bluehighway-8.font"   />

后面插入

< Font  Name ="SimFang-12"  Filename ="simfang.font"   />

后保存。

第二种,什么都不用做,直接进入第四步,O(∩_∩)O~。

这两种方法都需要将你所使用到的layout文件(在..\Ogre\media\gui目录下)另存为utf-8格式,否则你在layout文件中显示中文时会出错,好了,现在已经完成了,剩下的就是代码了。

第四步,在程序中找到 

mSystem -> setDefaultFont((CEGUI::utf8 * ) " BlueHighway-12 " ); 

在第三步中如果采用第一种方法则将此句修改为 

mSystem -> setDefaultFont((CEGUI::utf8 * ) " SimFang-12 " ); 

如果第三步中采用的第二种方法:-),则在此语句之前添加以下语句

CEGUI::FontManager::getSingleton().createFont( " simfang.font " );

然后再将其改为 

mSystem -> setDefaultFont((CEGUI::utf8 * ) " SimFang-12 " ); 

OVER,到此CEGUI可以支持中文显示了,下面几点要注意一下。

保证你的resources.cfg中的资源路径可以正确找到。

在程序中需要设置中文显示的地方用

CEGUI::utf8 * )Ogre::UTFString(L " 添加你要显示的中文 " ).asUTF8_c_str();

来设置。

好了,终于可以在CEGUI中,见到我们的母语了。
作者:wanghao111
Email:[email protected]
QQ:715156780

你可能感兴趣的:(GUI)