您的位置:首页 > 产品设计 > UI/UE

CEGUI中文显示四步曲

2009-08-11 09:38 155 查看
最近使用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:wh-7528731@163.com
QQ:715156780
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: