FlightGear飞行模拟器

标题: FlightGear汉化方法 [打印本页]

作者: donald3102    时间: 2013-3-27 23:53
标题: FlightGear汉化方法
FG的汉化分下面几个部分。其实就是对plib的汉化。
(一)首先把XML文件转为UTF-8编码格式,注意是不要BOM的UTF-8,Editplus软件可以完成这项功能。因为如果直接改为中文的话,中文是多字节的,有可能会导致XML解析时碰到特殊字符出错,UTF-8格式就没有问题。至于什么是UTF-8,以及UTF-8,UNICODE,ASCII,国标码之间的关系请百度一下,这些都是基本知识,下面的程序要用。
(二)FG的菜单使用的是plib中的fnt点阵字体,不过,由于在程序中内置了英文的显示方式,不适合中文,所以要想办法加载汉字库,网上有现成的HZK16,是宋体的。还有一个软件可以自定义字体,字号然后输出点阵字体。修改fnt的点阵字体模块,读取汉字,注意读出的是UTF-8,要转换为ASCII才能用,然后根据汉字编码查询汉字库文件,读出点阵信息,记住要上下翻转一下,就是把字上下颠倒,第一行在最下面。替换原英文的buff就可以显示汉字。
(三)FG中的操作提示,如tutorials中的操作提示,ATC的语音,就是在屏幕中间显示的一句话,可以用鼠标拖动的,还有程序中的对话框,控件中的字也是用点阵方式实现的,有的在nas文件中实现,那么nas文件也要改为UTF-8编码方式。
(四)SPLASH提示,就是进入程序前的那些加载地景,加载飞行计划,加载飞机等等的英文提示是用osgtext实现的,osgtext原生支持宽字节编码,就是UNICODE编码,只要修改一下输出函数就可以了,并且可以使用ttf字体,效果非常好。
(五)最难的就是纹理字体,比如在HUD上显示汉字,在面板上显示汉字就要用到plib中的纹理字体,plib的纹理字体是txf格式的,说白了就是一张图片,上面画好了各种字母数字符号等,然后抠出部分图片作为纹理贴到面板上显示。但汉字显然是不能这么做的,因为汉字太多了,无法预做成纹理图片。不过可以使用FreeType来动态生成纹理贴图,这部分可以参考ttf2txf程序的代码,这个程序是利用freetype生成txf字库的程序,我们不生成txf文件,而是把汉字直接渲染到buffer中,然后把buffer显示出来就可以了。就是说原来是利用freetype把ttf字体生成txf字库,然后程序读txf字库显示,现在把中间环节去掉,利用freetype直接渲染到内存,程序读内存显示。实现这个功能我用了2天,其实就是没用过Freetype,不熟。所以最好参考现成代码。



作者: Steven    时间: 2013-3-28 18:59
高手!精英!这个问题困扰大家很久了,donald3102老师的汉化方法总结的非常精辟。
作者: 四海之维    时间: 2013-3-28 21:24
思路已经明确,大家团结起来,一起实现吧!
作者: HWL    时间: 2013-4-3 22:31
Steven 发表于 2013-3-28 18:59
高手!精英!这个问题困扰大家很久了,donald3102老师的汉化方法总结的非常精辟。

不知道现在大家这么久研究的怎么样了?有信吗?
作者: 环球快车    时间: 2013-4-4 22:20
楼主分析得非常透彻!期待将来的汉化版本出现。
作者: 晓晓    时间: 2013-4-8 12:31
期待将来的汉化版本出现
作者: wangchenglanduo    时间: 2013-5-5 08:59
别期待了,还的自己努力研究啊,老师们也都是自己慢慢研究的!!!
作者: 从前有个人    时间: 2013-5-7 17:22
个人感觉非汉化版用着也不错,也没有很多障碍,熟悉就好
作者: =。=迈克尔    时间: 2013-5-17 10:13
大家好,我是新手,我想知道FlightGear中的Plib是什么,高手们解答一下吧 谢谢了
作者: vijak    时间: 2013-12-16 23:09
谢谢分享。。。。。。。
作者: zk_sima    时间: 2014-5-10 23:32
先顶楼主。
没太看懂,照楼主的意思是不是最终只要使plib支持中文就可以了?
作者: 支呐    时间: 2014-6-4 08:49
谢谢分享。。。。。。。
作者: sticksheng    时间: 2016-7-23 23:27
内容好久没更新了啊,手动点赞!




欢迎光临 FlightGear飞行模拟器 (https://flightgear.org.cn/) Powered by Discuz! X3.2