1.X主程序完全中文化教程
文章原地址:https://kfm.ink/index.php/archives/7/
MUGEN1.X FNTV2 TrueType运用实例
界面中文化
新建一个TXT文本文档,内容如下:
[FNT v2] fntversion = 2,00 ;版本 name = "" ;字体名 author = "" ;作者 [Def] Type = truetype ;字体类型,这里只用到truetype,即矢量字体 Size = 28,28 ;字体大小(宽,高) Spacing = 1,1 ;字间距(宽,高),高只用于truetype类型字体 Offset = 0,0 ;绘图偏移量(x,y) File = mini.ttf ;字体文件 Blend = 1 ;是否开启混合模式
字体文件可以设置为中文字体
TrueType字体定义必须伴随一个特定的.ttf或.ttc扩展名的字体文件。如果该TrueType字体文件是位于与定义文件(Def)相同的同一个目录(强烈建议),它将被加载。否则,M.U.G.E.N将尝试从Windows字体目录里加载该字体文件。
写完后,把该文本文档保存为任意名字的以def为后缀的文件,并设置编码为UTF-8。
之后在system.def的对应位置添加一个Font,指向刚刚创建的def文件,就能在system.def使用该字体显示中文了:
menu.item.font = 1,0,0, menu.item.active.font = 1,5,0, menu.itemname.arcade = "单人通关" menu.itemname.versus = "双人对战" menu.itemname.teamarcade = "组队通关" menu.itemname.teamversus = "组队对战" menu.itemname.teamcoop = "协作通关" menu.itemname.survival = "生存模式" menu.itemname.survivalcoop = "协作生存模式" menu.itemname.training = "练习模式" menu.itemname.watch = "演武模式" menu.itemname.options = "游戏设置" menu.itemname.exit = "退出游戏" p1.teammenu.selftitle.font = 1,3, 1, p1.teammenu.selftitle.text = "队伍1" p1.teammenu.enemytitle.font = 1,3, 1, p1.teammenu.enemytitle.text = "队伍2" p2.teammenu.selftitle.font = 1,1, -1, p2.teammenu.selftitle.text = "队伍1" p2.teammenu.enemytitle.font = 1,1, -1, p2.teammenu.enemytitle.text = "队伍2" match.text = "第 %i 战" ;“i%”会自动被替换为场数 match.offset = 320, 460 match.font = 1,0,0, [Continue Screen] enabled = 1 pos = 320,120 continue.text = "再次挑战?" continue.font = 1,1,0, continue.offset = 0,0 yes.text = "是" yes.font = 1,1,0, yes.offset = -40, 60 yes.active.text = "是" yes.active.font = 1.3,0 yes.active.offset = -40, 60 no.text = "否" no.font = 1,1,0, no.offset = 40, 60 no.active.text = "否" no.active.font = 1,3,0, no.active.offset = 40, 60 [Victory Screen] enabled = 1 time = 300 fadein.time = 30 fadeout.time = 30 p1.offset = 380,40 p1.spr = 9000,2 p1.facing = 1 p1.scale = 1,1 p1.window = 380,0, 620,300 p1.name.offset = 620,320 p1.name.font = 1,3,-1, winquote.text = "获胜者" winquote.offset = 20,380 winquote.font = 1,1,1, winquote.window = 0,300, 640,480 winquote.textwrap = w
对于人物和场景的displayname,也可以使用中文,但注意:存在中文的Def必须使用UTF-8编码,否则游戏中将无法正常显示
设置界面中文化
MUGEN虽然开放了设置界面的字体定义,即font/options.def,但并没有开放对字体界面文本的定义,所以要显示中文的话只能通过手工修改二进制数据,这里简单说下过程:
首先用十六进制编辑器打开exe找到界面文本字符串,接下来就要修改为中文,但是有一点要注意的是,直接输入修改的话是无法正常显示的,要用UTF-8编码的中文文本二进制数据来修改;
然后将font/options.def定义为中文字体,就能正常显示,由于UTF-8的中文二进制数据是三字节的,所以还要考虑到数据长度的问题,每两个相邻的有效数据之间必须存在一个00数据,否则会导致错误,
在修改过程中,部分动态数据是不能修改的,这些数据大多都是设置项值文本,不影响中文化效果,总之手工修改要极其小心,注意备份,而且也是个体力活。
这里是修改后的补丁(成品):https://pan.baidu.com/s/1skOUrKh ,根据版本替换文件即可。
人物def文件转码后,如果def中file下的路径名含有中文,最好将其和对应文件改成英文或数字,否则可能会读取出错