iCore.Space

在人间打工的下凡文员

FontLink配置优化英文Windows汉字显示

本文员的操作系统都用的英文。在英文Windows系统默认的设置下,很多地方的汉字显示,总是奇奇怪怪的。经过很多搜索,发现可以通过FontLink配置进行优化。

奇怪的汉字

在Windows的世界中,如果系统默认语言是英文(包括日文、韩文等外文),诸如资源管理器等很多界面中,汉字显示都会有一种奇怪的现象。比如,下图所示的粗细不一、高低不一、比划异常等。

如果你没有强迫症,可以设置非Unicode文本语言为简体中文,在系统显示语言仍然是英文的前提下,将系统默认编码设置为简体中文,获得汉字的正常的显示效果。

但是,如果你有强迫症,就会面临两个问题。

  • 如果系统显示语言设置为英文,又将编码设置简体中文,那设置系统显示语言为英文,感觉像皇帝的新衣。
  • 并且,将系统编码设置为简体中文后,虽然汉字显示效果正常了,但是英文字符也不再是英文系统中的字体,将使用简体中文字体(默认是微软雅黑)进行显示,没有英文系统中的那么优雅了。

满足强迫症

我就是有这种强迫症,我偏要英文显示,还便不变更默认编码,又要获得正常的汉字显示效果。好在经过很多搜索之后,终于如愿以偿,在原汁原味的英文系统中,实现了完美的汉字显示效果。

如上图所示,系统显示语言是英文,编码也是英文系统默认的英文编码,但是汉字显示效果也跟简体中文系统效果一致了。要仔细看才知道,因为系统显示语言是英文,所以,所有英文文本,仍然使用的Segoe UI字体,汉字则使用了微软雅黑字体,坐到了「英汉」两者都原汁原味。

问题的根源

经过大量搜索和学习,我通过网上两篇文章,大致了解到了问题的根源:Windows系统在多国语显示时,默认字体的语言匹配顺序。

简单来说,Windows会按照:

  1. 英文
  2. 日文
  3. 繁体中文
  4. 简体中文
  5. 韩文

这个顺序,来匹配不同语言的默认字体。

部分汉字,在日文、繁体中文、简体中文、韩文中,都是存在的,比如「这里」的这个「这」字,在日文字体中也有。系统按照这个顺序,在日文字体中匹配到了以后,就不会继续往后匹配,直接使用了日文字体进行显示。

另外一些文字,只有简体中文才有,日文没有的,才会按照语言顺序,继续往后匹配,直到在简体中文字体中匹配到,才会用简体中文字体将他们显示出来。

这就是为什么同样一个文件标题或内容中,同样都是简体中文内容,但是在英文系统显示语言环境中,看到的字体是粗细不一、高低不一、笔画异常的根源:系统使用了多种不同的字体,来渲染同一种语言文字中的不同文字。

修改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、明刘、宋体等字体中进行匹配。前面的几个字体,分别是不同语言的默认字体。

  1. Tahoma:英文
  2. Meiryo:日文
  3. 微软正黑:繁体中文
  4. 微软雅黑:简体中文
  5. Malgun Gothic:韩文

有了这些认知之后,我们要做的事情,就很简单啦。将微软雅黑的那两行,剪切粘贴到Tahoma的前面,就可以啦。

对于大多数系统控件,修改Segoe UI的FontLink后,就可以实现简体中文汉字的正常显示。但是,如你所见,SystemLink中,预设了很多字体的匹配顺序。他们是一些更具体的细节场景中,发生作用的。所以,如果有需要,还可以将预设配置中的Tahoma、Mircorosft San Serif、以及所有Segoe UI开头的字体,都做类似的配置优化。这样,就可以实现更加彻底的优化。

除此之外,还可以针对系统没有预设的字体,自己创建SystemLink配置,以实现更加个性化的优化。比如,SystemLink没有预设Consolas字体的匹配顺序,但是系统自带的Notepad默认的英文字体是Consolas。即便你了修改以上所有字体的顺序,但是Notepad中的简体中文文本,依然会以奇怪的方式显示,除非你手动变更显示字体。此时,在SystemLink中,新建一个配置项,名称就是Consolas,然后将雅黑字体放在配置值中。重启电脑后,打开Notepad你就会发现,英文默认使用Consolas字体,简体中文默认使用微软雅黑了。

参考文章

完美解决中文在英文windows上显示高矮不一的问题

Win11英文版 中文字体显示效果奇怪

Comments

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注