前言
最近在用Qt做各种进制的输入框,发现很多字体的字母或数字不是等宽的,这就造成相同长度的字符(英文和数字)总长度不一致,很不美观。而字符等宽的字体很多不支持中文,即使同时支持中英文,要么是英文样式不符合期望,要么是中文样式不符合期望。于是,就诞生了一个大胆的想法,可否将符合期望的中文字体和符合期望的英文字体合并成为一个新字体呢?于是,就在网络上搜索相关文章,尚好,找到了一篇文章,并且成功合并。非常感谢那篇文章的作者。
原文章地址:完美字体合并教程 / 中英文字体合并 / 解决字间距过大或异常 - 知乎
为了防止以后这篇文章消失,或找不到,特意将此次合并字体的过程记录下来,以便以后有相同需求时回顾。
下载软件FontForge
FontForge下载地址:Download FontForge
可以看到,有Windows,Mac,Linux三种版本。本人下载的是Windows版。
点击标记橙色下划线的Windows。
点击按钮样式的 Confirm and Download。
点击上方橙色按钮,下载。
下载完后,双击安装包安装即可。
设置中文
在安装时曾有一个选择语言的选项,但是其中并没有中文选项。
可以通过修改配置文件让软件支持中文,操作如下:
- 找到安装目录,打开其中的fontforge.bat文件。
- 找到::set LANGUAGE=en,将 :: 删除,把 en 改为 zh_CN
- 保存修改后的文件。
- 重新打开FontForge软件,可以看到软件中支持了中文。
准备源字体
在系统盘中找到要合并的两个字体。系统字体位置一般为:C:\WINDOWS\Fonts。
如果需要合并的两个字体是刚刚下载的,并没有安装到系统中,就跳过这一步。
将需要合并的两个字体拷贝到一个目录(比如为桌面)中,这样做是为了防止损坏系统字体库中的字体。
打开字体
在这里点击文件夹,或者双击文件夹不生效,不会进入点击的文件夹目录,可以直接在下面的输入框中自行输入字体路径。 如果嫌打字输入太麻烦可以在点击字体文件右键查看属性得知文件所在路径并复制粘贴。
然后点击“确定”按钮。
点击“元素”->“OS/2”->“特征”,将所有的都选择“任何”。
再将“通用”中的“全字大小”设置为1000,“缩放轮廓”选中。 最后别忘记点击确定。
点击“文件”->“生成字体”->“Generate”,生成字体的路径及字体名自行填写。
另一个文件如法炮制。
合并字体
将B合并到A,两者重复的字符字形会保留A的,因此要按需选择合并顺序。
现在我是要JetBrains的英文字体和思源黑体的中文字体,因为JectBrains的字体中并没有中文,所以我直接以JetBrains字体为基底,将思源黑体合并进来。
插句题外话:JetBrains字体应该很多人都熟悉,pycharm、clion、IntelliJ 等等都是使用的该字体。不论是字母还是数字都很优美,而且是等宽的,在写代码时相同的字母或者数字长度,不会表现得参差不齐。但是如果在上述编辑器中加入中文注释就会发现,中文有锯齿,而且字形也不知道是哪门子字形。强迫症受不了。所以合并字体让JetBrains字体支持中文也挺有必要。
现在已经打开了JetBrans字体。
点击“元素”->“合并字体”。自行输入需要合并的字体绝对路径。
点击“确定”。进度条之后,应该会有一个弹框,点“是”就完事儿了。
将滑动条向下拉,会看到中文已经加载进来了。
但是还有很多空白,那些应该是日文、韩文、阿拉伯文等等的空间,管他呢,中文支持就行。
接下来,点击“元素”->“PS字体名称”。为了防止与同名字体混淆,将字体名、字族名、人类可读名称、版权等等都改成自定义的名称。
点击“TTF名称”,同样将其中能改的名称都改成自定义名称。
点击确定。
最后点击“文件”->“生成字体”,再填写保存路径和自定义的字体名称。
点击“Generate”生成。
大功告成!