工具下载地址:https://pan.baidu.com/s/1zlcgZpFtGymRZVzBt8bdHg?pwd=6fw8 提取码: 6fw8
解压Font2Tga4Cwace.7z,进入Font2Tga4Cwace文件夹,运行run.bat,然后双击打开Fonts,可以看到生成的贴图文件。编辑run.bat文件,可以修改生成的结果:
· 修改size以指定字号
· -bold参数表示使用粗体
· -italic参数表示使用斜体
· 倒数第二个参数是字体名称。run.bat里填写的是"长仿宋体",可以自行修改,但字体必须是你的电脑中已安装的,否则默认生成宋体
· 倒数第一个参数表示路径和生成的文件名。run.bat里填写的是 Fonts\changFangSong,它会在Fonts目录下生成名为changFangSong的一系列文件。可以自行修改,但目录必须手动创建好,否则文件不会生成
举例:将run.bat的内容修改为
.\Font2Tga4Cwace -size=22 -bold "隶书" Fonts\lishu
那么它会生成字号22、粗体、隶书,输出的文件位于Fonts里,文件名都是lishu
注意:每个汉字都需要用2个字符表示,目前的程序无法处理换行的问题——如果换行发生在2个字符中间,那么本行的最后一个字符及下一行的内容都会乱码。因此中文任务战役必须要在任务简报、无线电等文案处仔细处理换行,而字号对换行有至关重要的影响,所以任务作者在设计文案时,一定要把字号一并纳入考虑,建议在发布任务的同时,一并发布配套的字体文件
2026/02/20更新:修复后的程序可以自行处理换行位置了,制作任务时已不再需要人工考虑换行位置。
此外,不同的字体有不同的用途,譬如游戏主界面、屏幕顶端的文字通常都比较大,如果为这些用途提供了字号偏小的贴图,那么展示文字时会看到明显的模糊;而用于无线电频道的文字通常都比较小,为这些用途提供字号偏大的贴图,对文字显示并没有明显的好处,但是会增加无谓的开销。作者应当为不同的用途准备不同字号的贴图
Font2Tga4Cwace工具除了贴图之外还生成了一个fxy文件,它用于告知游戏主程序每个特定编码的字符位于贴图的什么位置。ASCII字符集只需处理256个字符,但汉字需要处理65536个字符,因此原生的fxy文件无法直接使用,需要做额外的处理
faguss提供了convert_fxy程序与源码[1],基于他的源码制作了chn_convert_fxy。解压chn_convert_fxy.7z,将Font2Tga4Cwace生成的fxy文件拖拽到chn_convert_fxy.exe上,会生成一个txt文件,再将这个txt文件拖拽到chn_convert_fxy.exe上,会生成一个fxy文件(它会覆盖之前那个fxy文件),这个fxy文件的体积比之前小,它就是chn_convert_fxy处理完毕的产物
输出的贴图为tga格式,需要转换为OFP所支持的paa格式。BI官方为OFP提供了TexView2工具,可用于浏览tga、paa等贴图,也可用于贴图格式转换
安装好TexView2后,找到它的安装目录,将第一步生成的tga贴图拷贝到安装目录下,并将【贴图tga转换为gs后缀的paa.bat】文件也放到安装目录下,双击运行,此时会发现每个tga贴图都被转换为同名的paa贴图。现在可以删掉tga贴图,并运行【贴图paa名称替换.bat】,将 _gs 后缀替换为空字符串(也可以手动一个个修改贴图的文件名)

最终的效果如图上最下方几个文件所示,它们的文件名应当是 字体名称-编号
新建一个文件夹,名字自行决定。譬如可以命名为@My_Chn

后文中将统一使用@My_Chn指代插件包文件夹
1. 在@My_Chn里创建dta目录
2. 解压原版游戏的dta\fonts.pbo,得到fonts文件夹。将这个文件夹放到@My_Chn\dta里

3. 在fonts文件夹里创建名为CHN的文件夹
4. 将前3步生成的fxy与paa文件放到fonts\CHN里

5. 将fonts文件夹重新打包成fonts.pbo

1. 在@My_Chn里创建addons目录
2. 在@My_Chn\addons目录里新建一个文件夹,名字不限,譬如可以叫Lang
3. 将config.cpp和stringtable.csv文件放到@My_Chn\addons\Lang里

4. 打开config.cpp,在CfgPatches中,将“你的汉化插件名”替换为你为汉化插件起的名字(由英文字母、数字、下划线组成)
5. 在CfgFonts下的Chinese中,为各字体指定路径,路径需要与fonts里的贴图相对应,譬如制作了长仿宋字体,名为changFangSong的文件放在fonts\CHN目录下,那么路径应当为"CHN\changFangSong"
6. 不同的字体有不同的用途。请根据用途选取合适的字体字号:
TahomaB24用于无线电频道,以及大多数对话框组件内文字(譬如任务编辑器)
TahomaB36用于屏幕中央、下方的浮现文字(执行加油、装弹时,在屏幕下方能看到的文字)
TahomaB48用途不明
CourierNewB64用于任务、岛屿、配置项列表
AudreysHandB48用于手写粗体,用途不明
AudreysHandI48用于手写斜体,笔记本里的手写文字往往用的是它
Garamond64用途不明
SteelfishB128用于主界面、屏幕顶端的大文字。如果
SteelfishB64用于屏幕中央的显示文字(进入游戏、加载任务时,屏幕中央的文字)
SteelfishB64CE用途不明
7. 将Lang文件夹重新打包成Lang.pbo
如果你是TZK玩家,那么跳过这一步
如果你不是TZK玩家,那么在@My_Chn里创建bin文件夹,然后将resource.cpp放到@My_Chn\bin里
至此@My_Chn插件包制作完成。将它挂载到2.03游戏里,并将ColdWarAssault.cfg中的Language设置为"Chinese",就可以使用该插件包。根据实际的表现,可以继续调整所使用的字体字号
以下内容仅供有兴趣有能力的读者进一步阅读
fxy为二进制文件,文件头提供了它所适配的游戏版本信息,然后对每一个字符,它使用6个数值记录:1、字符的编码;2、该字符在贴图中的页码;3、x坐标;4、y坐标;5、宽度;6、高度
在原版OFP里,只需要处理ASCII字符集的不超过256个字符。对于中文,字符的编码最大可达到65535,但实际常用的汉字只有几千,为节省内存开销,所有字符仍然连续排布,它们的索引与字符编码之间则需要再映射一次,这也是原版fxy无法直接使用的原因
通过chn_convert_fxy将fxy转换得到的txt,每个条目都准确地给出了字符的编码、页码与坐标信息。这个txt是可以人工编辑的。再次通过chn_convert_fxy将txt转换得到的fxy,则适配了二次映射逻辑,可以被CWA_CE正确解读
中文字体的英文字母、数字在OFP里的显示效果往往不理想。OFP本身提供了一些字体,此外也可以用Font2Tga(处理英文字母不需要用Font2Tga4Cwace,官方为OFP提供的Font2Tga就够了)生成其他字体。选好心仪的字体后,就可以通过编辑fxy文件、整合两种字体的贴图,将中文字体的汉字与英文字体的字母缝合在一起
因为OFP的设计,txt里的CharCode编号,要再加上32,才是该字符真正的编码。英文字体fxy转换后的txt,只到CharCode223为止。缝合英文字母时,只需将中文字体中CharCode223之前的部分替换为英文的,并且将贴图文件做相应的适配
缝合字体时,英文字母的平均高度要与汉字相当,否则显示效果也会很差。可以事先观察txt,也可以做好插件,进游戏体验后再做调整
[1] convert_fxy程序及源码:https://ofp-faguss.com/files/convert_fxy.7z