可能是字体显示效果优化的终章

安装了 Win11 LTSC,这个是英文的版本,中文显式效果很差。所以回顾以前多篇文章总结的字体显式效果优化的经验,再来实操一把。

首先,装上心爱的 HarmonyOS Sans SC(下载),装上仿照 SimSun Metric 魔改的雅黑(参考)以及增加了中文字间距以和 consolas 英文字符对齐的等宽雅黑(参考),再用 SystemFontsReplacer 把原本的 SimSun(没错,英文版也有这个字体)替换成了去掉点阵字的版本。

然后,修改 FontLink/SystemLink 下头的 Lucida Sans Unicode、Microsoft Sans Serif、Tahoma,最开头都加上了一句:a_font.ttf,a font参考。这里是假设魔改雅黑的字体文件是 a_font.ttf,字体名是 a font),以便让这些老牌系统字体都能回落到魔改雅黑上,而不是原本的 SimSun。把 Segoe UI 开头的一众字体里以 MSYH 开头的项目提前(这里是纯手动,后面有自动的方法)。因为英文版系统 GRE_Initialize 下头没有 GUIFont.Facename,这步跳过(参考)。

经验还是管用的,果然一切看起来还不错。

不过很快就发现问题了,不少程序(比如 edge、cudatext…)标题栏的字体很奇怪。对比确认出显示的是 Yu Gothic 字体,但在 FontLink/SystemLink 里反复盘查并没有发现能够优先于魔改雅黑和 MSYH 去调用 Yu Gothic 的可能性。在 Fonts 里头尝试删掉了以 Yu Gothic 开头的几个键的值过后,标题栏字体显示成 MSJH 了。又在 Fonts 里删掉了 MSJH 相关的几个键的值,标题栏正常了,但是 WPS 的电子表格的行标号和列标号又出问题了,不再是ABCD,而是一堆奇怪的字符。只能还原这两套字体的键值。

几经尝试,发现在 FontLink/SystemLink 下头修改 Lucida Sans Unicode、Microsoft Sans Serif、Tahoma 时,最开头加上 a_font.ttf,a font,128,96a_font.ttf,a font 两行的话就把问题解决了…(参考:Font linking and GDI),虽然这样好像并没有解释为什么会回退到 Yu Gothic 的原因,但反正起作用了…

剩下点小问题,改字体链时 a_font.ttf 是我魔改的雅黑的话,部分软件上的字看起来会偏大很多,需要改成 a_font.ttf,a font,128,128 看起来才正常。如果换用原始的 MSYH 或者 HarmonyOS Sans SC,则 128,96 也能正常(这对数值代表不缩放)。所以,最后因洁癖犯了,我把魔改雅黑全部都换成了 HarmonyOS Sans SC,把 Segoe UI 开头的一众字体开头也加上了 HarmonyOS Sans SC 中对应字体。魔改雅黑拜拜。

至此,终于基本上正常了,而且整体表现还很和谐。

上述过程中发现一点有意思的情况。如果是英文系统,在不做上面第三段的那些修改的情况下,中文都是高高低低的,这个现象很多人都碰到过,解决办法就是像第三段提到的那样把 MSYH 提前。另外还有一个修改区域设置办法,也有不少人提过。如果找不到控制面板了,可以从这里去修改。

如果这两个办法都解决同一个问题,那他们之间有啥关系呢?修改区域设置的时候发现,FontLink/SystemLink 下面若干字体的字体链顺序变了。比如换成英语的时候,Segoe UI 中日文字体 MEIRYO 排在前面,其次是 MSJH,然后才是 MSYH(这就是为什么中文高高低低的原因,因为一句话可能用到了这三个字体),而换成中文的时候,MSYH 排在了前面,然后是 MSJH,再是 MEIRYO。区域设置修改也一并会把 Lucida Sans Unicode、Microsoft Sans Serif、Tahoma 这几个还原成 SimSun 开头的状态,所以优化中文字体显示效果比较理想的步骤是:①修改上面的 Administrative language settings,②修改 Lucida Sans Unicode、Microsoft Sans Serif、Tahoma 几个字体的字体链。

另外顺带发现整治部分国外软件(比如 FreeFileSync)在个别地方执着显示 SimSun 的办法——一定要把上面那个“Use Unicode UTF-8 for worldwide language support”选上。这个选项的确会让某些软件界面出现乱码,所以只能取舍一下了。

ps. 以上写作 HarmonyOS Sans SC 的地方,都改成微软雅黑效果也蛮不错的。