GMS游戏汉化教程(2——导入字体的三个姿势)

注:此操作是为了替换原有的字体,如果该原有字体有“足够多的”中文或外挂字体支持的好的 可忽略这一步
你要我怎么看?你可以看字体最底下的glyphs多不多字(具体为char ID在12540(日文字符末尾)是否还有其他字符而且很多那种,或者直接从textures也可以看出来)
这里稍微讲下GMS里的char ID是什么
准确来说就像ACSII(美国信息交换码)那样的对应的字的ID的十进制形式,比如ID是32的是空格,48的是阿拉伯数字1
你:我不到啊!具体在哪看呢???
你可以用FontForge打开一个有中文字的字体看,比如这里是俐方體11號的“功”

可以看到,Char ID是21151(PS:这是个繁体字库的字体)
又如这里是磊,Char ID是30922(字体是凤凰点阵体12PX)

这里我以fantasy ruinX的DR十六夜战为实例开始做一个完整的汉化作品
这里我们可以看出,只有ACSII的全部字(32~127)

那么我想加字体,怎么做???
1、 ExportFontData.csx / ImportFontData.csx(简单,新手向)
比如这里我有个从某个游戏的data.win导出的中文字体(导出后字体成png+csv的形式而不是ttf之类)

也许你会好奇会想去看看csv文件有什么,这里有个图可以简略表示出来

PS:由于字体的图就是这么多这么大(就是gm编译出来就这么大而且改不了),因此那个font size不能调节字体的大小,只能作为一个标识确认这字体有多大
还有确认字体是否打开/关闭粗体斜体选项,要保持一致才能导入成功
比如这里都没√(两个False)


其次,我们需要把字体的名字换成游戏中识别的字体名

比如这里是fnt_dtm

中文字体是fnt_maintext
那我们就要把fnt_maintext改为fnt_dtm(两个文件都要改)
修改后如图

这样我们就能开始了
比如我把这字体放在了游戏目录的Font文件夹里(只是说明我方放文件的位置,自己找得到,容易辨识即可,不管中英文什么事的)

开始用脚本(Scripts)
我们选择Scripts→Resource Repackers→ImportFontData.csx,

找到放字体的文件夹

你会觉得:啊啊啊啊啊啊啊啊啊字体怎么不见了1111111111
正常现象,他选的是文件夹而不是那两个文件,这个脚本是检测文件夹里(包括子文件夹)有没有那两个文件,有就导入,两个文件二者缺一不可,不然会报错,别说是我的问题
确定是这文件夹里有文件后就点“选择文件夹就可以了”

完成!,之后保存(ctrl+s)可以保存数据了
你可以替换当前的data也可以放到别的位置当对比
想导出字体?就左上角的 Scripts→Resource Unpackers→ExportFontData.csx
选择字体并点OK就完成了
2、Fonteditor.csx(过程较复杂,但可以编辑单个字符,在ImportFontData.csx没用之后的手段)
比如说你刚刚完成了上面的步骤后,你可以在Scripts→Community Scripts→FontEditor.csx

选择你要导出的字体

左上角Edit→Export font to ZIP

把它找个位置并给它个名字导出就可以了
这里不做演示,我已经导出过了
这就是导出的ZIP文件
你可以解压出来都有什么字(但都不是能直接用的)

反过来,我们能不能导入呢?
当然可以
首先我们得把字体的纹理图换成一个较大的图(4096*4096基本上就可以解决,不管那图里是否有东西,反正都会被换掉)
对着Embedded textures鼠标右键,选Add

右边窗口点Import(警告可忽略)

找到我们要导入的图片(够大就行,取决于字体大小,数量)
我这里直接把那字体的图放进去


记下这个嗷,重要的
对着Texture page items鼠标右键,点Add


在Embedded textures找到最底下的,就是我们刚刚导入的图

鼠标左键拖拽到右边的Texture

这里都写下我们刚刚记的大小,三个都得填


回到我们要导入的字体


然后我们再用FontEditor.csx打开该字体,左上角Edit→Import font to ZIP,把刚刚导出来的ZIP导进去再save就完成了






这样就算完成导完字体了,记得保存哟
3、 CopySpriteBgFont.csx(适合有同样字体名的data,更新翻译版本可不用上面繁杂的步骤)
假设我们有个导入中文字体的版本,而且这个作者更新了很多内容,但是字体没变过的
我们在这里找到这个脚本并运行(懒得写位置了)

看到这个点确定,找到要有中文字体的data

比如我这里是中文字体.win


显示这个后点确定,在弹出的框里写字体名,Done就可以了


PS:新版本运行脚本可能会报错,这里用旧版完成的操作
你想看看什么效果?来看看
在strings栏找到想换的文本(这里我找到了个”start”,我改成“开始游戏”)


(字体搞定,剩下字符串没去翻译了)
(有可能有缺漏,可以在评论区feedback下,毕竟我不是专业的)
如果有问题可以在群里问:718505318(BNP交流群)
901988001(FD交流群)