首先,网上仅存的这份上古教程+工具(https://bbs.91d2.cn/read-htm-tid-892303.html)是不完整的,按照他们的说法做出来的东西根本没法用。实际上已知多数字库制作团队所用的工具是用Cai_Miao-BTH大佬的源码为基础制作的,然而他们从未放出过编译好的工具,别说GUI了,连bat版本的都没有。不排除是藏而不发为了谋取什么利益,毕竟私服、付费模组团队之类的都是他们潜在的金主。那么做为普通用户或模组作者,是不是没有可能制作自己想要的字库呢?肯定不是,工具不完善可以自己去完善,教程不完整可以自己去补充。本教程重点在于补完那份残卷缺失的关键部分,让字库制作不再是那些专业团队的专利,尽管他们手中更强大的工具不放出来,但普通人用大众工具做出的东西并不比会他们差太多,仔细阅读那个残卷,再回头看这个教程中补完的部分即可。
链接: https://pan.baidu.com/s/11100RcVPVZe_8UVrtKkVSw?pwd=pkn6
第一步:「码表」
所谓「码表」,是残卷教程提出的概念,就是字库中字元的列表。是一套跟介面显示文字表副档名相同但本质完全不一样的tbl档案,它被游戏调用确定显示所对应dc6档案中的哪个字元图像。由此可知,「码表」包含的字元越多,游戏中就越不会出现「?」现象,原版松岗码表采用big5字库不包含多数简体字,奥美码表采用gb2312字库又缺失多数繁体字,而暗黑二引擎简繁体调用同一个字库,这就导致无论使用哪个字库,简繁切换都会带来大量「?」,所以扩大码表容量是很重要的。
残卷教程提供的码表制作程式很好用,但他们给的模板码表mb.txt甚至比奥美的还小,根本无法满足要求。因此我提供了一个28907字元的超大码表档案,它包括了「新细明体」字型中所有基础字元,可以完全满足各种场景的需求。另外,我还提供了一个python脚本用于提取任何ttf字型档案中的字元,有一定程式编写能力者可以通过编辑并执行它制造专属于指定字型的码表,这样会更精简,因为绝大多数字型档包含的字元数远远小于28907,会产生大量白占地方的空置字元。我不会详细写出这个脚本的用法,会的一看就知道,不会的临时去学后果就会像我当初啃它的时候一样痛苦,没有必要遭这个罪,直接用28907就好了,如果的确觉得它太过冗繁,也可以选用我提供的另一个10828字元码表,也能够满足大部分需求了。
注意:「码表」的工作原理其实是按照Unicode的编码顺序依次排列,确定相应字元在dcc中的位置,因此码表中字元的顺序必须是Unicode的编码次序,不可以混排,也就是说如果你想要在码表中添加字元,一定要先确认它的Unicode编码,然后插入到正确的序列位置而不能随意添在哪个地方,否则是无效的。
第二步:汇出字元
前半部分和残卷教程中描述的一样,用预览功能确定字元在图像中的定位。残卷中没说为何用「g」作为测试字元,其实这非常重要,因为g或y这一类字母是所有字元中位置最低的,一般来说字库制作时最推荐的位置就是g或y的最低处正好贴合图像底边,多数情况下这么安排的效果是最好的。
然后就是真正汇出字元的时候了,重点来了:批量脚本汇出的字元跟预览脚本汇出的是完全不同的,批量脚本有边缘柔化,也就是反锯齿,而java汇出文字反锯齿后模糊是被用户广为诟病的,这使得此脚本用于笔画较细且平直的字型如「细明体」一类时,小号字基本就没法看了。因此我另改了一个「不柔化」脚本,针对这类字型的小号字时使用它效果会更好,后续修图也更简单。
接下来是汇出字元的颜色参数,这里非常重要!
残卷中写的「白色255,255,255」是完全错误的,真给文字部分设置纯白色255,255,255或者纯黑色0,0,0的话,会严重影响后面的操作,因为它们在很多环境中都是作为背景色被引擎透明化的。事实上,在字元汇出时,白字仅推荐两组参数:不柔化方案时196,196,196,柔化方案时244,244,244,背景色必须是0,0,0纯黑;而黑字仅推荐一种参数:28,28,28,背景色最好是纯白255,255,255,当然纯黑背景也可以如果你修图时眼睛不嫌累,毕竟暴雪、松岗、奥美的黑字背景色也是纯黑~选择它们的原因在后面「色板」步骤中会详细说明。
即使你想要制作彩色艺术字标题,也绝对不要使用自以为合适的颜色汇出,java预设的色板非常糟烂,会花到你怀疑人生,也会影响后面PS的操作,制作彩色字的正确思路是修图最后使用暗金色版。
第三步:色板
刚刚汇出的那一堆字元图像是不能够直接汇入dc6的,特别是用柔化脚本汇出的那些,因为它们的配色完全是错的。暗黑二引擎在不同显示环境下调用不同的色板,这使得如果你随意选择颜色,在你用于汇入dc6的那个色板中可能是正常的,换到另一个显示环境下就马上花掉。对于文字来说,想要在所有显示环境下正常使用,目前已知只能使用两个色板:一个11色灰阶d2fontgrey和一个12色暗金d2fontgold,分别用于一般显示环境和个别选单标题处。我已经把它们整理为PS色表ACT档案供后面步骤调用。
第四步:修图
对于小号的细明体这类不柔化的文字,修图相对容易,推荐步骤是先找一个笔划多的字作为试验品,转换图像为RGB模式,然后用选取颜色范围功能,将「朦胧」调到0,选定黑色背景,再使用模糊滤镜为字型边缘制造一层暗色过渡,然后使用淡化模糊功能调整模糊参数到满意的水平就可以了,当然如果你要求更高,也可以额外处理一下文字部分做点模糊混色之类的操作,最后再将其转为索引色,注意此步骤要使用我提供的那两个色板之一,对于这种小号字基本上就是用灰阶色板。反复尝试上述操作,找到一个满意的修图流程,保存成PS的「动作」,然后批次处理所有字元图像,就能得到用于最终汇入dc6的东西。
柔化过文字图像的处理要复杂很多,因为脚本汇出的图像用的都是极其糟烂的java色板,实际颜色是花花绿绿的,如果直接转为RGB颜色很难舒服的修图,因此需要先转为灰阶,然后反复尝试调整对比度和亮度,按照我的经验,根据字型的不同,大约需要二到三次将对比度极限降低的操作然后再适当加亮,才能获取清晰的文字。满意之后,选定黑色背景,执行一次模糊滤镜制造文字边缘暗色过渡,调整模糊参数到满意为止。接下来注意:不要立刻转为索引色,要先转一次RGB再转索引,这样会明显减少清晰度损失。转索引色时记住一定要选择我提供的那两个色板,否则进游戏花给你看。同样,反复尝试以上操作后找到满意的流程录制为PS动作,然后批次处理得到真正能汇入dc6的东西。
对于黑色字,将加亮操作换成变暗即可,其他和白色字一样。
修图是个很考验技术的过程,我说的只是个参考,高手完全可以做得更好,普通爱好者也可以慢慢尝试逐步提高水平。
第五步:码表tbl修改
残卷中写到,自动生成的码表档案需要修改,把字型占位尺寸改成实际图像大小。这只是部分正确,实际上这个过程中要做的事情不止于此:首先就是调整部分字元所占宽度,自动生成过程中,「空格」和「i」「l」等字元的宽度都是非常小的,有时会严重影响显示效果,需要找到它们并将宽度调整到合适,我个人推荐跟数字「0」一样或更小些就差不多了。然后就是某些特定字型,比如奥美所用的「魏碑」和「行楷」,字型有效尺寸其实是明显小于预设占位像素的,15像素的字其实只有14像素有内容,在某些需要更紧凑显示的时候,用比实际尺寸小一个像素的占位尺寸更为合适。等这些修改都完成后,就可以按照残卷的指示生成tbl码表供游戏调用了。
其他补充内容
1. 这套工具只能调用系统中已安装的字型,请确保想使用的字型已安装在系统中并可以正常在Office等程式中调用。
2. 如果想要同时支援简繁体,请确保所选用的字型不是big5或gb2312的,否则达不到要求。
3. 注意字型版权问题,以免被制造商起诉。
4. Font8字型及尺寸最好跟Font6一致,否则佣兵介面会变得奇丑无比,奥美原版就是这样。
5. Font16可以稍大一些,超过14影响并不很大,残卷的说法是错误的。
6. 真正不应该超过14的是Fontformal11,如果超过了,NPC对话的文字就会跑到框框的外面去,带来搞笑的相容性问题,毕竟你不能保证使用你字库的人会为了你专门费力气去改对白文字的换行位置~
7. Font30是要跟游戏选单同时出现的,不推荐为了选角介面的职业名拉风而改动过大,否则「你挂了」就会跟「死亡取走XXX金币」的字型完全不搭调。如果你不想出现这个效果,也不想改UI的dc6与之配合,那么与松岗版配合的Font30仅推荐「细明体」、加粗、汇出配色196,196,196、修图过程尽可能少加亮,保证清晰度即可。
8. Fontexocet8和Reallythelastsucker目前没发现被游戏调用,可以不做,也可以做为其他的备选额外做一份~
9. Photoshop推荐用CS6版本,不要使用最新版,因为它是个吃系统的怪兽,批次处理如此之多的图像会大概率在5000左右个时卡死。如果你一定要用最新版,请一定把0000-9999跟后面五位数的档案分开处理,否则会发生乱序问题,一旦中途卡死了找进度会让你怀疑人生。
10. 如果你技术过硬,选择使用那个python脚本制作专属码表,那么一定要注意,绝大多数ttf字型档中都会有两个全形空格,Unicode编码分别为「02C9」和「3000」,整理码表时一定不要为了精简只留下一个,因为他们虽然没被游戏使用,但很多第三方外挂程式会用它们来排版,外挂制作者不会考虑字库里有谁没谁,一般都是任意选用,如果不想让外挂出现大量「?」,就一定要两个都保留,这是我自己的惨痛教训,差点让两个字库就此报废~
链接: https://pan.baidu.com/s/11100RcVPVZe_8UVrtKkVSw?pwd=pkn6
第一步:「码表」
所谓「码表」,是残卷教程提出的概念,就是字库中字元的列表。是一套跟介面显示文字表副档名相同但本质完全不一样的tbl档案,它被游戏调用确定显示所对应dc6档案中的哪个字元图像。由此可知,「码表」包含的字元越多,游戏中就越不会出现「?」现象,原版松岗码表采用big5字库不包含多数简体字,奥美码表采用gb2312字库又缺失多数繁体字,而暗黑二引擎简繁体调用同一个字库,这就导致无论使用哪个字库,简繁切换都会带来大量「?」,所以扩大码表容量是很重要的。
残卷教程提供的码表制作程式很好用,但他们给的模板码表mb.txt甚至比奥美的还小,根本无法满足要求。因此我提供了一个28907字元的超大码表档案,它包括了「新细明体」字型中所有基础字元,可以完全满足各种场景的需求。另外,我还提供了一个python脚本用于提取任何ttf字型档案中的字元,有一定程式编写能力者可以通过编辑并执行它制造专属于指定字型的码表,这样会更精简,因为绝大多数字型档包含的字元数远远小于28907,会产生大量白占地方的空置字元。我不会详细写出这个脚本的用法,会的一看就知道,不会的临时去学后果就会像我当初啃它的时候一样痛苦,没有必要遭这个罪,直接用28907就好了,如果的确觉得它太过冗繁,也可以选用我提供的另一个10828字元码表,也能够满足大部分需求了。
注意:「码表」的工作原理其实是按照Unicode的编码顺序依次排列,确定相应字元在dcc中的位置,因此码表中字元的顺序必须是Unicode的编码次序,不可以混排,也就是说如果你想要在码表中添加字元,一定要先确认它的Unicode编码,然后插入到正确的序列位置而不能随意添在哪个地方,否则是无效的。
第二步:汇出字元
前半部分和残卷教程中描述的一样,用预览功能确定字元在图像中的定位。残卷中没说为何用「g」作为测试字元,其实这非常重要,因为g或y这一类字母是所有字元中位置最低的,一般来说字库制作时最推荐的位置就是g或y的最低处正好贴合图像底边,多数情况下这么安排的效果是最好的。
然后就是真正汇出字元的时候了,重点来了:批量脚本汇出的字元跟预览脚本汇出的是完全不同的,批量脚本有边缘柔化,也就是反锯齿,而java汇出文字反锯齿后模糊是被用户广为诟病的,这使得此脚本用于笔画较细且平直的字型如「细明体」一类时,小号字基本就没法看了。因此我另改了一个「不柔化」脚本,针对这类字型的小号字时使用它效果会更好,后续修图也更简单。
接下来是汇出字元的颜色参数,这里非常重要!
残卷中写的「白色255,255,255」是完全错误的,真给文字部分设置纯白色255,255,255或者纯黑色0,0,0的话,会严重影响后面的操作,因为它们在很多环境中都是作为背景色被引擎透明化的。事实上,在字元汇出时,白字仅推荐两组参数:不柔化方案时196,196,196,柔化方案时244,244,244,背景色必须是0,0,0纯黑;而黑字仅推荐一种参数:28,28,28,背景色最好是纯白255,255,255,当然纯黑背景也可以如果你修图时眼睛不嫌累,毕竟暴雪、松岗、奥美的黑字背景色也是纯黑~选择它们的原因在后面「色板」步骤中会详细说明。
即使你想要制作彩色艺术字标题,也绝对不要使用自以为合适的颜色汇出,java预设的色板非常糟烂,会花到你怀疑人生,也会影响后面PS的操作,制作彩色字的正确思路是修图最后使用暗金色版。
第三步:色板
刚刚汇出的那一堆字元图像是不能够直接汇入dc6的,特别是用柔化脚本汇出的那些,因为它们的配色完全是错的。暗黑二引擎在不同显示环境下调用不同的色板,这使得如果你随意选择颜色,在你用于汇入dc6的那个色板中可能是正常的,换到另一个显示环境下就马上花掉。对于文字来说,想要在所有显示环境下正常使用,目前已知只能使用两个色板:一个11色灰阶d2fontgrey和一个12色暗金d2fontgold,分别用于一般显示环境和个别选单标题处。我已经把它们整理为PS色表ACT档案供后面步骤调用。
第四步:修图
对于小号的细明体这类不柔化的文字,修图相对容易,推荐步骤是先找一个笔划多的字作为试验品,转换图像为RGB模式,然后用选取颜色范围功能,将「朦胧」调到0,选定黑色背景,再使用模糊滤镜为字型边缘制造一层暗色过渡,然后使用淡化模糊功能调整模糊参数到满意的水平就可以了,当然如果你要求更高,也可以额外处理一下文字部分做点模糊混色之类的操作,最后再将其转为索引色,注意此步骤要使用我提供的那两个色板之一,对于这种小号字基本上就是用灰阶色板。反复尝试上述操作,找到一个满意的修图流程,保存成PS的「动作」,然后批次处理所有字元图像,就能得到用于最终汇入dc6的东西。
柔化过文字图像的处理要复杂很多,因为脚本汇出的图像用的都是极其糟烂的java色板,实际颜色是花花绿绿的,如果直接转为RGB颜色很难舒服的修图,因此需要先转为灰阶,然后反复尝试调整对比度和亮度,按照我的经验,根据字型的不同,大约需要二到三次将对比度极限降低的操作然后再适当加亮,才能获取清晰的文字。满意之后,选定黑色背景,执行一次模糊滤镜制造文字边缘暗色过渡,调整模糊参数到满意为止。接下来注意:不要立刻转为索引色,要先转一次RGB再转索引,这样会明显减少清晰度损失。转索引色时记住一定要选择我提供的那两个色板,否则进游戏花给你看。同样,反复尝试以上操作后找到满意的流程录制为PS动作,然后批次处理得到真正能汇入dc6的东西。
对于黑色字,将加亮操作换成变暗即可,其他和白色字一样。
修图是个很考验技术的过程,我说的只是个参考,高手完全可以做得更好,普通爱好者也可以慢慢尝试逐步提高水平。
第五步:码表tbl修改
残卷中写到,自动生成的码表档案需要修改,把字型占位尺寸改成实际图像大小。这只是部分正确,实际上这个过程中要做的事情不止于此:首先就是调整部分字元所占宽度,自动生成过程中,「空格」和「i」「l」等字元的宽度都是非常小的,有时会严重影响显示效果,需要找到它们并将宽度调整到合适,我个人推荐跟数字「0」一样或更小些就差不多了。然后就是某些特定字型,比如奥美所用的「魏碑」和「行楷」,字型有效尺寸其实是明显小于预设占位像素的,15像素的字其实只有14像素有内容,在某些需要更紧凑显示的时候,用比实际尺寸小一个像素的占位尺寸更为合适。等这些修改都完成后,就可以按照残卷的指示生成tbl码表供游戏调用了。
其他补充内容
1. 这套工具只能调用系统中已安装的字型,请确保想使用的字型已安装在系统中并可以正常在Office等程式中调用。
2. 如果想要同时支援简繁体,请确保所选用的字型不是big5或gb2312的,否则达不到要求。
3. 注意字型版权问题,以免被制造商起诉。
4. Font8字型及尺寸最好跟Font6一致,否则佣兵介面会变得奇丑无比,奥美原版就是这样。
5. Font16可以稍大一些,超过14影响并不很大,残卷的说法是错误的。
6. 真正不应该超过14的是Fontformal11,如果超过了,NPC对话的文字就会跑到框框的外面去,带来搞笑的相容性问题,毕竟你不能保证使用你字库的人会为了你专门费力气去改对白文字的换行位置~
7. Font30是要跟游戏选单同时出现的,不推荐为了选角介面的职业名拉风而改动过大,否则「你挂了」就会跟「死亡取走XXX金币」的字型完全不搭调。如果你不想出现这个效果,也不想改UI的dc6与之配合,那么与松岗版配合的Font30仅推荐「细明体」、加粗、汇出配色196,196,196、修图过程尽可能少加亮,保证清晰度即可。
8. Fontexocet8和Reallythelastsucker目前没发现被游戏调用,可以不做,也可以做为其他的备选额外做一份~
9. Photoshop推荐用CS6版本,不要使用最新版,因为它是个吃系统的怪兽,批次处理如此之多的图像会大概率在5000左右个时卡死。如果你一定要用最新版,请一定把0000-9999跟后面五位数的档案分开处理,否则会发生乱序问题,一旦中途卡死了找进度会让你怀疑人生。
10. 如果你技术过硬,选择使用那个python脚本制作专属码表,那么一定要注意,绝大多数ttf字型档中都会有两个全形空格,Unicode编码分别为「02C9」和「3000」,整理码表时一定不要为了精简只留下一个,因为他们虽然没被游戏使用,但很多第三方外挂程式会用它们来排版,外挂制作者不会考虑字库里有谁没谁,一般都是任意选用,如果不想让外挂出现大量「?」,就一定要两个都保留,这是我自己的惨痛教训,差点让两个字库就此报废~