字体字库合并

前言

很多优秀的英文字体的字库中一般都不包含中文汉字,这导致了在使用这些字体时键入汉字出现乱码或白方块的情况。

下图是在Matlab中使用JetBrains Mono字体时字符串中的”频率“两个汉字无法正常显示

汉字无法正常显示

JetBrains Mono是一款专用于阅读代码而开发的开源字体,可以使代码文本以一种更舒适的形态展现在屏幕上。)

VSCode以及大部分编辑器中均支持设置Font FamilyFont Family可以为编辑器设置一组具有优先级之分的字体,当编辑器需要显示文字时,会从最高优先级的字体中查找,若字体字库中有响应字符则正常显示,若没有则向下一优先级的字体中寻找。因此,Font Family的设置可以有效避免这种情况的发生。

但Matlab不支持Font Family,因此只能为编辑器设置一种字体。若设置为代码友好的JetBrains Mono字体,则汉字无法正常显示;若设置为宋体、黑体等常见汉字字体,则代码部分则一言难尽(大小写Oo和数字0难以区分、字间距行间距蹩脚等问题严重)

因此,就产生了将优秀英文字体和汉语字体字库合并的需求。合并之后导出的新字体,即保留了代码友好的英文字体,也向其中添加了中文字库。效果如下图:

完美显示

工具准备

  • FontCreator软件(本篇运行环境为Win11)
  • 一个代码友好的英文字体(推荐JetBrains Mono,字体十分优秀而且开源允许修改,官网戳这

JetBrains Mono官网

授权许可

  • 一个你看着舒服的中文字体(宋体、黑体均可,但务必注意字体版权,请勿触犯法律)

字体合并

首先在FontCreator中打开准备好的中文和英文字体(一般为ttf格式文件)

在英文字体中,Ctrl+A选中所有字形,随后Ctrl+C复制,并记住共有多少个字形

英文字体

然后打开中文字体,选择菜单栏的插入-字形,输入刚才记住的那个数字,选择“最前字形之前”,最后点确定。

插入

然后点菜单栏的编辑-特殊粘贴,按照下图选择各项,然后点确定。

特殊粘贴

此时,两字库已经按照我们的要求合并完成。若此时直接导出,应为没修改字体名字的原因,安装本字体时会使电脑识别成为合并前的字体并替换,所以在导出之前,最好编辑一下字体的属性。位置在菜单栏字体-字体属性。其中识别、法律、自定义均可编辑(注意版权,务必在法律允许范围内进行编辑)

字体属性

然后在 文件-导出字体为-到处字体为TrueType字体 中导出即可,弹出的窗口中保持默认选择,保存文件式推荐保存为.tff格式

导出完成后,在系统中右键该文件,选择“为所有用户安装”,待安装完成后重启电脑,进入编辑器选择你的新字体即可。

最后修改:2023 年 04 月 20 日
点赞有超好看的动画,不想看看吗😏