如标题所示,我要写的主题就是生肉汉化繁中AI翻译中的字体解决方案。
看前提示:你得是个正常人,会上GitHub会用cmd会用python,都不会也没关系,只要会用ai问问题解决就行,如果只会问我怎么解压我给你两嘴巴子尝尝。
相信大家在推游戏时,多少都遇到过各种糟糕的字体问题:要么字体忽大忽小,要么粗细宽窄不一,要么日繁这些的。
而我本人也是个ai翻译补丁作者(御爱同盟和鲲补丁站),所以要天天和字体打交道,而我要分享的就是让所有人都能解决大部分gal游戏的字体问题。
首先,我们要知道,虽然很多引擎支持设置换字体,但是也有部分引擎不支持设置换字体,对于普通玩家而言,那岂不是天塌了,想换自己心仪的字体都不行,更何况部分游戏的字体实在是丑的不行。
我们以前翼社的官中《雪恋交融》为例,这部官中的字体我相信对于玩过的人来说简直就是辣眼睛,身为一个官中,字体居然一粗一细,我的天哪,但是设置又不能换字体,于是很多人就硬啃这种字体游玩(悲)。
有没有什么对于普通玩家的解决方法呢,当然有,众所周知,大部分galgame走的是Windows 系统的 GDI API 来渲染字体。所以我们可以通过hook技术来劫持这玩意,使其调用我们的字体,但是对于某些只有位图字体 或者内置字体的就不行了。先给你们看看劫持后的效果,是不是瞬间舒服多了()。
原理我就不巴拉巴拉了,因为我知道对于大部分人来说解决问题才是最重要的,所以我给你们造了个字体选择器(适配大部分galgame),虽然其原理还是hook()。
工具我放在我的GitHub上了,叫做SimpleFontHook,推荐和里面的GalFontTool搭配使用,接下来我会向你们介绍这些工具怎么使用。
为了更好的做演示,我选择水晶社的《牵绊闪耀的恋之伊吕波》来做例子,因为他是softpal引擎,因此对于字体比较苛刻。
《牵绊闪耀的恋之伊吕波》的字体汉化组选择的是黑体和宋体,那个默认对于softpal而言是内置字体,如果你是玩生肉或者ai翻译的话别选那个默认字体,大部分人遇到的日繁问题就是这个内置字体的锅。
如图所示这就是黑体的效果,而我们要搞的就是换掉这个黑体。
由于这个是32位的游戏,你们进入这个仓库后,因为我已经帮你们编译好了,所以你们可以直接把Release里面的winmm.dll放到游戏根目录里面,如果游戏是64位的,就选择那个x64/Release里面的winmm.dll。同时扫毒结果也放在这里,32位一个没有,64位报了一个。

放入根目录直接运行游戏,会发现多了个这个UI界面,没错这就是今天的主角——字体选择器。字体选择器他能直接调用你的系统字体库,就是你系统安装了的那些字体,当然也支持同根目录没安装的字体劫持(就是不安装也能出现在字体选择器里面选择这个字体),字体劫持能有效减少字体污染问题。
就随便讲讲吧,首先是伪装,是什么意思呢,就是让支持中文的字体伪造支持日文的字体,或者支持日文的字体伪造支持中文的字体,看那个箭头就知道方向了可以点击换语言,点击伪装就能从关闭变成启动。不过对于这个我是推荐你们别乱玩,不会玩出现乱码我不负责()。
废话不多说,直接选择萝莉体看看效果,可以看到游戏字体居然变成萝莉体了,至于字体形状很怪我们等下讲怎么解决。
我们再换一个字体,汉仪玛奇朵75w,字体小的一批,可想而知黑体的含金量还在提升。
那么怎么解决呢,没错就是GalFontTool,这是我做的造字体工具,虽然是用在ai翻译上的,但是普通玩家也是可以使用,下载完后安装相应的依赖后双击main.py运行。
功能很多呃呃呃(虽然有些完全没用 ),首先是这里的处理模式和代码页,具体看这里的使用帮助吧,不过代码页那个还没写,说白了也是伪装,比如有些字体不支持日文编码,你就把代码页选择128生成一个新的字体就可以支持使用了,这就是通常用来做ai翻译补丁的代码页。
言归正传,我们放一个萝莉体在绊恋的根目录,然后选择度量修复,目标字体放萝莉体,参考字体放黑体因为兼容性最好,然后点击自动计算,他就会自动帮你计算参考字体的垂直度量,然后输出文件就行。
我们在游戏根目录得到一个新的萝莉体时,运行游戏能看到字体明显变得正常了,以此可知,只要会度量修复,当一个字体缺的字不多的时候你就可以为所欲为。如果连黑体兼容性都不行怎么办呢,那就只能自己慢慢调整垂直度量的参数了()。
上面是汉化的gbk编码,那么shift-jis编码又该怎么办呢,为了醒目,我就拿AI翻译补丁来演示,一个没改编码的shift-jis且以转区来演示。
示例游戏,公主社的《姫と乙女のヤキモチLOVE-きらめき夏物語!-》,首先映入脸前的就是讲了一万年的日繁,讲烂了还是有人不懂,懒得讲了,我自己都天天讲()。
可以看到,转区的话会发现可选择的字体和在gbk时的完全不一样,这些都是很典型的日文字体库。
首先就是很正常的在日文区选择萝莉体,然后去设置里面刷新一下字体选择就行了。
这是你选择中文区的萝莉体,去设置里面刷新一下字体选择后发现乱码了,很常见的gbk字体读取shift-jis乱码,所以我才写了个伪装的功能。
开启伪装后,中文指向日文,去设置里面刷新一下字体选择后发现又正常了,现在知道这个功能是干什么的了吧(),虽然并没有什么卵用就是了,直接GalFontTool生成个128代码页的字体放根目录就行了。
然后就是解决这个日繁问题,首先就是关于怎么生成日繁字体,其实就是需要一个映射表,大部分的ai翻译用的都是se映射表,少部分用的是作者自己的动态映射,而se的映射表在这个json里面,你们自己去下载即可,当然里面的映射关系是可以随便改的,但是我相信大部分人都不会改()。
然后就是又要用我的工具了,选择字体和映射表,设置好字体名字和处理模式日繁映射,代码页128,然后再去右边的映射表里面点击检查缺字,他会显示缺映射表多少字,最好选择一个全的或者尽可能少的,如果是缺音符和爱心符号的话不用担心,我这里也支持补全字体,就是右边那个合并补字。
生成对应的字体在根目录后运行游戏,发现变成了简体但是被截断了,继续修复垂直度量,和之前搞水晶的那样就行,推荐黑体。
生成后看看效果,看吧,一个可可爱爱的日繁萝莉体就诞生了。
还有就是在生成字体的时候命名的名字我推荐你们千万千万不要命名成系统字体,你命名成大肥鸭都行就是别搞什么微软雅黑,黑体这些的(),到时候字体被污染又不会删注册表浏览器全被污染你就哭吧,字体能不安装就别安装,这是大忌!!!!!!
大肥鸭日繁黑体()谁用谁知道()。
接下来讲什么好呢,繁中吧,这个的话一般来说未来数位多一点,我这边选择拉环社的《白熊铃星群》为例吧,其实也是映射表,我的GalFontTool里面提供的是OpenCC,所以会有部分字可能照料不到,比如“妳”“姊”这些的,不过也可以通过映射表来改就是了。
先看看游戏吧,这是游戏的原样子,很典型的繁中。
然后就是这样的设置,OpenCC加136代码页,生成对应的字体运行游戏。
然后就是如图所示的样子,嗯依旧很扁,接下来就是修复垂直度量了,这边继续选择黑体看看。
运行游戏发现字体渲染出问题了,比如图中“啦”“叽”的右下角,这是因为字体过大导致的渲染问题,所以我们要把字体变小。
把字宽字高从1调成0.95-0.99这样就行了,具体情况看字体来进行微调,萝莉体感觉选择0.95左右就行了,黑体0.99差不多。
然后你也可以自己写映射表把一些字映射到你想要的字,用日繁映射那个就行了,说是日繁其实随便映射()。
大致是这样了,当然位图字体和内置字体这些的不行,打个比方Artemis引擎,不过他这玩意的内置字体也不难就是了,随便解包随便改字体,有的游戏还可以把调用的内置字体rft去掉();位图字体的话就比如漩涡社最近的作品,他是文本调用位图字体(如图造的日繁位图字体),回想文本调用系统字体。
再强调最重要的一个点,就是有些引擎的游戏他不是实时换字体的啊,别问我为什么不生效,最好在进游戏前就切换到想要的字体或者游戏中途想换字体的可以去那些设置里支持提供少量字体的刷新一下字体选择,sl大法有些游戏也行,具体游戏具体自己去琢磨,总之就是要刷新字体缓存()。
miel社的 虽然是PC端的 但里面也有data.xp3 用kr运行就是这个字体(›´ω`‹ )