Windows 的字体渲染的一些鸟事
Yave_Yu
编辑于 2023年10月25日 22:49
收录于文集
共14篇

提到 Windows 的字体渲染,用过其它电脑桌面端系统的人都会觉得它很烂。确实,如果是 Win10 的 1703 之前的旧版,那它只有带 Hinting 及专门设计了点阵字形的字体能看,其余的都不能看,尤其是放大的效果,就是带着横向彩边的无柔化锯齿。可如果是 1703 起步的新版,就不那么烂了。 首先它渲染无 Hinting 的字体变化很大,可看图对比一波:

上 7 下 10

我就是在这方面见证 Windows 的字体渲染的进步,然而还是经常见到对着 Win10 (新电脑预装的系统都不会老于 1703) 吐槽字体渲染很烂的用户。原因有两点:一是简中系统的自带字体微软雅黑的历史包袱极重,二是 Windows 的高 DPI 缩放也有历史包袱。

——微软雅黑——

微软雅黑最初的目标是在低分屏上能看清字的轮廓,因此设计了大量 Hinting,这样 ClearType 就能清晰渲染笔画。可是随着 1703 对字体渲染的改进以及高分屏的普及,微软雅黑那极重的 Hinting 带来了束缚,使得新字体渲染难以对其平滑渲染。之所以认为是 Hinting 的束缚,那是因为同在 Windows 里的 Segoe UI 就不这样,只有小字号还在使用 Hinting,大字号则相当平滑。想改进字体平滑问题,只需换掉微软雅黑即可,推荐使用同为 Windows 适配的 Noble Scarlet,或者稍微不那么适配但能看的鸿蒙字体,这样高 DPI 看字体就比较平滑舒服。当然这俩字体不太适合给 100% DPI 使用,125% DPI 则要看你能否接受,150% DPI 起步的就适合。

微软雅黑在这上面意外地没那么糟糕,这效果看着相对平滑

那要如何替换系统字体?

如果你在用 Win11,直接右键安装这些 TTC 即可,安装完成后能立即看到变化。 如果你在用 Win10,那就需要用到疑难解答。 1. 先把其中一个字体的 TTC 文件们放到容易找到的位置,目录建议只有英文和数字。 2. 按住 Shift 键时重启系统,这时会进入启动菜单。点击疑难解答,再点击高级选项,最后点击命令提示符。点击账户及输入开机密码 (若有) 进入后做以下事情:   假如把 Noble Scarlet 放到 D:\ns\ 里的,那么就输入 xcopy D:\ns\ C:\Windows\Fonts   按一下回车,它会询问你是否替换,按 A 全部替换。   成功后输入 exit 退出命令提示符,随后点击进入 Win10 即可。 进入系统后你就会看到系统字体发生了变化。

更换系统字体后的效果图:

换上 Noble Scarlet 的效果

换上鸿蒙字体的效果

字体包见评论区。

——DWM 虚拟化——

在巨力 Hinting 的微软雅黑外还有 Windows 那翔一样的虚拟化。Vista 推出 DWM 的同时带来了这个,将 100% DPI 的画面插值上去显示以保证其排版不乱,但这样的结果是每个东西看着都很糊。在以前,DPI 要超过 125% 才会启用虚拟化,可到了 Win10 却变成达到 125% 就启用。更糟心的是 Win7~8.1 时期还提供使用 Windows XP 样式缩放比例选项,勾选后便无论如何都不启用虚拟化,另外 Vista、Win7 在使用 Basic 主题时是一定不会启用虚拟化的 (也没法启用)。然而到 Win10 这个选项没了,使得你被强行喂翔。有没有解决方案呢?

不知为何微软在后续砍掉了左下角那个选项?

若你的屏幕适合使用 125% DPI,直接设置自定义比例为 124% 即可,因为 124% 低于会启用虚拟化的界限。 若你的屏幕适合更高 DPI,那很遗憾,没有一劳永逸的办法。对于会自动启用虚拟化的程序,你要做的是右键那个程序后进属性,上方选项卡点兼容性,再在下面点进更改高 DPI 设置,勾选替代高 DPI 缩放行为后确定再确定即可。 若你是程序员,在编写 Windows 窗体程序,请启用 DPIAware 以不启用虚拟化。

还是想找个一劳永逸的办法,而我找到了那个注册表值,位于 HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\DWM,里面有个 UseDpiScaling,然而在调节其数值 (0、1 之间更换) 后注销系统并重新登录就会发现……毛用没有!那无解了。

——结论——

微软脑子有坑,鉴定完毕。本来以前可以无虚拟化地缩放,但脑子有坑的微软非要砍掉这个选项。本来 1803 就该登陆 Noble Scarlet,但跟方正谈崩版权 (中文字形) 而无下文,所以……若你没那些必须要在 Windows 中才能用的东西的需求,且有精力学习使用新系统,就去用 Linux 桌面端或者 macOS,这俩的系统字体没有 Hinting,窗体没有虚拟化,观感很好。