完美字体合并教程 / 中英文字体合并 / 解决字间距过大或异常

以云看科技2024-08-07 15:58:43  139

有时候我们需要将两款最常用的中英文字体合并起来,方便在Word、WPS、或者操作系统中一体化使用,节省操作时间和配置成本

本文写的很零基础,可能有很多废话,见谅

一、工具选择

在网上找了很多信息,最终筛选出 FontForge、FontCreator、Fontlab 这三款软件,都是windows平台可用的,也有跨平台的,其他平台没太关注,mac上面有个Glyphs看起来也可以

本文只介绍 FontForge,它体积小、性能突出,而且是免费的。其余两者经测试似乎没有办法最完美地合并字体。

FontCreator特点在于界面养眼、架构清晰、中文汉化水平最高(好像是第三方汉化?),但不免费,而且非优先字体在合并后间距可能会略有出入。Fontlab的话,优化实在太差,别人几秒解决的事情它可能要1分钟,不会设置的话甚至要几分钟,用起来也卡卡的,而且收费、无官方汉化、软件体积巨大。功能性上我不做评价,毕竟我是外行。

二、准备工作

首先准备好中英文两种字体,中文字体里面带不带英文都无所谓,假设是zhong.ttf和ying.ttf

安装软件

安装时,没有中文语言的选项,但安装后可以通过配置文件修改成中文(虽然是很蹩脚的汉化,但对于外行来说总比英文强) ,操作如下:

找到安装目录(在快捷方式上右键打开文件所在位置)

修改fontforge.bat文件(有可能需要管理员权限,可以先将其复制到桌面,编辑后再复制回去,允许权限)

找到其中::set LANGUAGE=en 一行,把::删除,把en改成zh-CN

注意,如果按照此法设置了汉化,软件将无法识别含中文的文件名称,例如要使用方正黑体_GBK.ttf,请先将其重命名为zhong.ttf

字体放大

把两个字体都打开,分别点击 元素 - 字体信息 - 通用,可以看到 全字大小,我们需要将小的向大的看齐

例如zhong.ttf是256,ying.ttf是1000, 那么ying.ttf不用管,将zhong.ttf的全字大小改成1000,保持勾选缩放轮廓(默认就是勾选了的)

然后点击 OS/2 - 特征,把所有选项都改成“任何”(这点很关键,如果不这么做会导致输出的字体间距异常),再点击确定

点击 文件 - 生成字体,字体类型选择“TrueType”,取消勾选“保存之前确认”,然后点击 选项取消勾选“TrueType渲调提示”(Hints会随着缩放而变形,可能导致缩放后的字体无法正常显示),最后点击 Generate 生成即可,这里我们保存为zhong-1000.ttf

不要反向看齐,将大的字体缩小会略微失真,最终间距会有很小的差距,虽然不仔细对比根本注意不到,但我们这可是《完美》教程:)

三、字体合并

将B合并到A,两者重复的字符字形会保留A的,因此要按需选择合并顺序。

例如,我的zhong.ttf里面中英文字符都有,但我想用ying.ttf替换里面的英文字符,那么就需要优先打开ying.ttf, 然后点击 元素 - 合并字体,选择zhong-1000.ttf,会有提示框问是否“retain kerning imformation”,选择“是”

合并后,点击 元素 - 字体信息 - PS字体名称,这里为了防止最终生成的字体和原本的两种字体撞名字、撞家族、撞标识,我们需要将所有相关字段改成自定义字段。例如,我的ying.ttf字体名叫FiraMono-Medium,那么我就要将所有含FiraMono的字段替换为自定义字段,如FiraFZ

修改后

同样的,在 TTF信息 中,也要修改所有相关字段(尤其是“惟一标识”一行),如果有字段是红色无法修改,点击右键 与PostScript名称分离 即可修改

修改后

和前文一样,点击 OS/2 - 特征,将里面的所选项都改成“任何”。还是在 OS/2 中,点击 字符集,在“Unicode范围”和“微软编码页”上面勾选默认(保证WPS等软件能识别出所有语言),点击确定

最后,和前文的步骤一样,生成字体即可

四、效果差异

后来我仔细观察过,合并后的实际效果,与分别使用两种字体还是略有差别的,来自于两个方面:

1、True Type Hints信息的丢失【忽略不计】

上文我们在生成字体时取消了“TrueType渲调信息”,因为不取消的话会导致字体显示异常、无法显示,但部分字体确实有一些渲染提示信息,丢失了这部分信息后,特殊设计过的情景微调会被删除,例如字号过小,ppi(像素密度)不够时,hints可能会告诉字体变细、锐化,若删掉hints,字体显示效果会更加接近字体的原始设计。所以这一点的实际影响不大,除非字体小的像饼干渣,否则正常使用一般看不出来,甚至有人还更喜欢重心均匀的原汁原味效果。

2、B字体的上下间距被丢弃

我们将B合成到A,A是优先打开的字体,最终字体的上下间距会和A保持一致。这就要求我们抉择是采用A还是B作为优先字体。在本文案例中,因为我们要保留ying.ttf的英文字体不被zhong-1000.ttf覆盖,所以优先打开前者,同时,我刚好也需要它的上下间距作为合并后字体的上下间距,所以没有矛盾。

假设我需要zhong-1000.ttf的上下间距,那么就需要先打开zhong-1000.ttf,为了保证英文字体能够导入,要把zhong-1000.ttf中的撞车字符字形删除, 再导入ying.ttf。当然,我觉得应该有某个地方可以直接设置上下间距,但是我太菜了,没有找到

如何决定用谁的上下间距呢?这要看个人需求,比如我想用的英文字体是一个等宽字体,用来写代码的,而大多数编辑器都会直接使用字体本身的上下间距来确定行距,因此保留这个英文字体的上下间距是必需的。而对于中文,主要应用场景是WPS、Word等,这些程序中行距并不由字体上下间距决定,而是由手动设置的段落行距决定,因此中文的上下间距对我来说意义不大。

笔者合并了 方正黑体 FiraMono,安装到系统后,重启wps等软件就可以正常使用了

wps效果

FiraFZH.ttf下载地址:

https://pan.baidu.com/link/zhihu/7Qh3zQuUhziFMwgm9FTHJlJUZrMjhGUQUmp0==

这是我合并出来的字体,有需要的可以自取。但注意,仅限个人使用,严禁用于商业用途,大公司字体版权追责很厉害,你敢侵权人家就敢告你,不会提前警告。虽然这里所用的方正黑体和FiraMono都是免费商用的,但打包了卖钱的行为就太逆天了。

作者:xuyanf66

转载此文是出于传递更多信息目的。若来源标注错误或侵犯了您的合法权益,请与本站联系,我们将及时更正、删除、谢谢。
https://www.414w.com/read/1017397.html
0
最新回复(0)