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 ,根据版本替换文件即可。


neverer 评论于

人物def文件转码后,如果def中file下的路径名含有中文,最好将其和对应文件改成英文或数字,否则可能会读取出错

草薙劲(JINB) 评论于

换成中文后,每次启动都还原设置为默认

根据相关规定,发布评论前必须绑定手机前往绑定
你,确定要这么做吗?
正在处理中...