|
效果图

介绍
项目地址:
和其他编程字体的主要区别(亮点)在于指出了一种更轻松“自定义中文部分”而无需改动字体文件的办法。在文章末尾配有该字体配不同中文字体的预览。
这个字体项目在Google Noto Sans Mono基础上,将小写字母r、数字0替换为早期版本(Noto Mono)的风格。这是因为新版r带有衬线,新版0中间有划线和大写字母O做区分。即使我更喜欢早期版本,但编程时确实有必要保留0的划线,因此有五种版本可选:
- Noto Sans Mono R 仅替换小写字母r
- Noto Sans Mono R0 替换小写字母r、数字0
- Noto Sans Fake Mono 不替换,Fake系列指“技术上不是等宽字体”的等宽字体
- Noto Sans Fake Mono R 仅替换小写字母r
- Noto Sans Fake Mono R0 替换小写字母r、数字0
在R0项目的Product文件夹中,分别有普通等宽版本(Mono),和非等宽(FakeMono)。如果IDE的字体支持比较好,选用Mono即可,例如这是Visual Studio Code,直接就能指定用什么中文部分:

Noto Serif CJK SC Medium
非等宽版本用于“自定义中文部分”,即IDE不具有良好的字体支持时使用。这个字体不是通过“合并两种字体”来实现中文部分,而是利用了Windows系统的“字体回退”功能:当一个字符在指定的字体中不存在,Windows将从一个指定的列表中查找具有该字符的字体。然而,一个等宽字体无法指定非等宽字体作为回退字体。通过把一个非常少用的字符U+0309设置成其他字符的宽度减1,可以得到“技术上不是等宽,用起来是等宽”的效果,进而与任何其他中文字体搭配。
这也是为什么英文系统上中文字符错误的显示为日语字体,在这个指定列表中日语字体的优先级更靠前。例如,在英文系统上改为更优先使用中文字体:
基于同样的原理,导入R0项目的Product\FakeMono\FontLink中的reg文件到注册表,退出登陆当前用户再重新登陆,就可以自定义Noto Sans Fake Mono的中文部分。
由于可用中文字体非常多,R0项目仅提供少数几个字体作为参考,导入reg之后需要用注册表编辑器regedit到
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink找到Noto Sans Fake Mono,双击修改它的值,例如:
MSYH.TTC,Microsoft YaHei UI,124,96
MSYH.TTC,Microsoft YaHei UI“MSYH.TTC”是Windows\Fonts文件夹中字体的实际文件名。仅支持TTF格式或微软内置的TTC,Google Noto的TTC和OTF是不支持的。R0项目的Matrial文件夹中提供了Noto Sans CJK SC和Noto Serif CJK SC的TTF版本,也可以用工具自己转换。https://github.com/awesometoolbox/otf2ttf
“Microsoft YaHei UI”是字体的英文名。
“124,96”用于控制这个字体和Noto Sans Fake Mono之间的大小关系。默认值是“128,96”,把128想象成是字体的字号,将128改为124,则微软雅黑会稍微小一些。不同字体的大小不同,该数值也需要手动调节才能协调。例如楷体和宋体需要设置“108,96”。
“重复了一遍第一行,但是没有数字”的这一行我也不知道作用是什么,但系统内置的配置都是按照这个规则写的。因此建议也保持原样避免无意间弄坏什么。
更多预览图

楷体,108,96

楷体,128,96

Noto Sans CJK SC Regular,128,96

Noto Sans CJK SC Regular,136,96

Noto Serif CJK SC Medium,128,96

Noto Serif CJK SC Medium,136,96

宋体,108,96

宋体,128,96

微软雅黑UI,124,96

微软雅黑UI,128,96 |
|