本文员的操作系统都用的英文。在英文Windows系统默认的设置下,很多地方的汉字显示,总是奇奇怪怪的。经过很多搜索,发现可以通过FontLink配置进行优化。
奇怪的汉字
在Windows的世界中,如果系统默认语言是英文(包括日文、韩文等外文),诸如资源管理器等很多界面中,汉字显示都会有一种奇怪的现象。比如,下图所示的粗细不一、高低不一、比划异常等。

如果你没有强迫症,可以设置非Unicode文本语言为简体中文,在系统显示语言仍然是英文的前提下,将系统默认编码设置为简体中文,获得汉字的正常的显示效果。
但是,如果你有强迫症,就会面临两个问题。
- 如果系统显示语言设置为英文,又将编码设置简体中文,那设置系统显示语言为英文,感觉像皇帝的新衣。
- 并且,将系统编码设置为简体中文后,虽然汉字显示效果正常了,但是英文字符也不再是英文系统中的字体,将使用简体中文字体(默认是微软雅黑)进行显示,没有英文系统中的那么优雅了。
满足强迫症
我就是有这种强迫症,我偏要英文显示,还便不变更默认编码,又要获得正常的汉字显示效果。好在经过很多搜索之后,终于如愿以偿,在原汁原味的英文系统中,实现了完美的汉字显示效果。

如上图所示,系统显示语言是英文,编码也是英文系统默认的英文编码,但是汉字显示效果也跟简体中文系统效果一致了。要仔细看才知道,因为系统显示语言是英文,所以,所有英文文本,仍然使用的Segoe UI字体,汉字则使用了微软雅黑字体,坐到了「英汉」两者都原汁原味。
问题的根源
经过大量搜索和学习,我通过网上两篇文章,大致了解到了问题的根源:Windows系统在多国语显示时,默认字体的语言匹配顺序。
简单来说,Windows会按照:
- 英文
- 日文
- 繁体中文
- 简体中文
- 韩文
这个顺序,来匹配不同语言的默认字体。
部分汉字,在日文、繁体中文、简体中文、韩文中,都是存在的,比如「这里」的这个「这」字,在日文字体中也有。系统按照这个顺序,在日文字体中匹配到了以后,就不会继续往后匹配,直接使用了日文字体进行显示。
另外一些文字,只有简体中文才有,日文没有的,才会按照语言顺序,继续往后匹配,直到在简体中文字体中匹配到,才会用简体中文字体将他们显示出来。
这就是为什么同样一个文件标题或内容中,同样都是简体中文内容,但是在英文系统显示语言环境中,看到的字体是粗细不一、高低不一、笔画异常的根源:系统使用了多种不同的字体,来渲染同一种语言文字中的不同文字。
修改FontLink字体匹配顺序
上面说的不同语言默认字体的匹配顺序,在Windwos系统中,是通过注册表中的FontLink来制定的,而且这个顺序是可以修改的。所以,我们要做的事情,就是将简体中文字体,放在顺序的最前面。
注册表打开FontLink配置的完整路径如下:
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink
打开FontLink下面的SystemLink后,可以看到很多系统预设的字体匹配顺序。其中,最关键的就是Segoe UI。英文系统中,绝大部份默认的系统字体,就是这一个。按照系统预设的顺序,首先会从Segoe UI字体中匹配要显示的字符,然后依次从Tahoma、Meiryo、MS Gothic、微软正黑、微软雅黑、Malgun Gothic、明刘、宋体等字体中进行匹配。前面的几个字体,分别是不同语言的默认字体。
- Tahoma:英文
- Meiryo:日文
- 微软正黑:繁体中文
- 微软雅黑:简体中文
- Malgun Gothic:韩文

有了这些认知之后,我们要做的事情,就很简单啦。将微软雅黑的那两行,剪切粘贴到Tahoma的前面,就可以啦。
对于大多数系统控件,修改Segoe UI的FontLink后,就可以实现简体中文汉字的正常显示。但是,如你所见,SystemLink中,预设了很多字体的匹配顺序。他们是一些更具体的细节场景中,发生作用的。所以,如果有需要,还可以将预设配置中的Tahoma、Mircorosft San Serif、以及所有Segoe UI开头的字体,都做类似的配置优化。这样,就可以实现更加彻底的优化。
除此之外,还可以针对系统没有预设的字体,自己创建SystemLink配置,以实现更加个性化的优化。比如,SystemLink没有预设Consolas字体的匹配顺序,但是系统自带的Notepad默认的英文字体是Consolas。即便你了修改以上所有字体的顺序,但是Notepad中的简体中文文本,依然会以奇怪的方式显示,除非你手动变更显示字体。此时,在SystemLink中,新建一个配置项,名称就是Consolas,然后将雅黑字体放在配置值中。重启电脑后,打开Notepad你就会发现,英文默认使用Consolas字体,简体中文默认使用微软雅黑了。
发表回复