HGE中文显示的一个解决方案

     声明:本文章经由作者本人同意转载到此,如果您有任何问题或意见需要向作者请教,请您到文章的源出处http://blog.sina.com.cn/u/4b7f61c9010007gz 交流您的意见,谢谢! 
       HGE中文显示一直是中国HGE游戏开发者的一大心病,“微妙的平衡”曾提供了个解决方案,但只能支持20号以下字体,他也没有继续完善的意思。这两天我仔细看了他的代码总算把原理搞懂了,原来他是用GDI+把系统字体写到png文件上,并生成bin文件作为索引;然后另写了个hgeFontCN类读入字模文件并显示。
        他原程序当字体大于20时读入就会出错,开始我们都以为是hge只支持边长2000以下的png文件,所以我把过大的字模拆分成多个png文件并改写了bin文件。结果发现bin文件里在某些时候会莫名其妙得多写些0x0D的字节,这一度把我逼到了崩溃的边缘,后来在网上搜索发现有人也遇到同样的问题,原来是“微妙的平衡”犯了错误,本来应该通过"wb"写bin文件结果他写成了"w"。
        接下来遇到的一个难题是显示文字取矩形区域总是和文字具体位置有出入,不得已我加入了个dx作为修正值,总算能够在“宋体,隶书,黑体”模式下显示正确,但“仿宋”下还是有问题。我是没办法了,希望哪位高手能帮忙解决下。
        这种解决方案还有一个弊端就是必须事先准备多个字模文件,读入hge耗时很长而且占用的空间也很大。理想情况应该是预先将常用汉字写到一个纹理上,显示时如果遇到生僻字就动态写到备用纹理上,这样可以将资源占用降到最低。理论上可以做到,但我现在已筋疲力尽,短时间内不想再去弄了,再说目前的解决方案已能基本满足RPG游戏需求。
 
        说了这么多,有兴趣的朋友可以看下程序和源代码: http://free.ys168.com/?sftk (hge中文)
 

你可能感兴趣的:(游戏开发)