字体字库合并
前言
很多优秀的英文字体的字库中一般都不包含中文汉字,这导致了在使用这些字体时键入汉字出现乱码或白方块的情况。
下图是在Matlab中使用JetBrains Mono
字体时字符串中的”频率“两个汉字无法正常显示
(JetBrains Mono
是一款专用于阅读代码而开发的开源字体,可以使代码文本以一种更舒适的形态展现在屏幕上。)
在VSCode
以及大部分编辑器中均支持设置Font Family
,Font Family
可以为编辑器设置一组具有优先级之分的字体,当编辑器需要显示文字时,会从最高优先级的字体中查找,若字体字库中有响应字符则正常显示,若没有则向下一优先级的字体中寻找。因此,Font Family
的设置可以有效避免这种情况的发生。
但Matlab不支持Font Family
,因此只能为编辑器设置一种字体。若设置为代码友好的JetBrains Mono
字体,则汉字无法正常显示;若设置为宋体、黑体等常见汉字字体,则代码部分则一言难尽(大小写Oo和数字0难以区分、字间距行间距蹩脚等问题严重)
因此,就产生了将优秀英文字体和汉语字体字库合并的需求。合并之后导出的新字体,即保留了代码友好的英文字体,也向其中添加了中文字库。效果如下图:
工具准备
- FontCreator软件(本篇运行环境为Win11)
- 一个代码友好的英文字体(推荐
JetBrains Mono
,字体十分优秀而且开源允许修改,官网戳这)
- 一个你看着舒服的中文字体(宋体、黑体均可,但务必注意字体版权,请勿触犯法律)
字体合并
首先在FontCreator中打开准备好的中文和英文字体(一般为ttf格式文件)
在英文字体中,Ctrl+A
选中所有字形,随后Ctrl+C
复制,并记住共有多少个字形
然后打开中文字体,选择菜单栏的插入-字形,输入刚才记住的那个数字,选择“最前字形之前”,最后点确定。
然后点菜单栏的编辑-特殊粘贴,按照下图选择各项,然后点确定。
此时,两字库已经按照我们的要求合并完成。若此时直接导出,应为没修改字体名字的原因,安装本字体时会使电脑识别成为合并前的字体并替换,所以在导出之前,最好编辑一下字体的属性。位置在菜单栏字体-字体属性。其中识别、法律、自定义均可编辑(注意版权,务必在法律允许范围内进行编辑)
然后在 文件-导出字体为-到处字体为TrueType字体 中导出即可,弹出的窗口中保持默认选择,保存文件式推荐保存为.tff
格式
导出完成后,在系统中右键该文件,选择“为所有用户安装”,待安装完成后重启电脑,进入编辑器选择你的新字体即可。