Windows 的字体渲染相关发现

Description: 闲聊区、其他资源发布区
Moderators: Slash_18, 5438A38A, Yingchun Soul, Yave Yu, Semi-moderatos

Yave Yu M
Topic author, Count
Count
Avatar
Yave Yu M
Topic author, Count
Count
Age: 28
Reputation: 51
Posts: 251
Joined: 25 Jan 2016

Post #1by Yave Yu » 17 Oct 2023, 7:43

提到 Windows 的字体渲染,用过其它电脑桌面端系统的人都会觉得它很烂。确实,如果是 Win10 的 1703 之前的旧版,那它只有带 Hinting 及专门设计了点阵字形的字体能看,其余的都不能看,尤其是放大的效果,就是带着横向彩边的无柔化锯齿。可如果是 1703 起步的新版,就不那么烂了。
首先它渲染无 Hinting 的字体变化很大,可看图对比一波:
Image
我就是在这方面见证 Windows 的字体渲染的进步,然而还是经常见到对着 Win10 (新电脑预装的系统都不会老于 1703) 吐槽字体渲染很烂的用户。原因有两点:一是简中系统的自带字体微软雅黑的历史包袱极重,二是 Windows 的高 DPI 缩放也有历史包袱。


——微软雅黑——
微软雅黑最初的目标是在低分屏上能看清字的轮廓,因此设计了大量 Hinting,这样 ClearType 就能清晰渲染笔画。可是随着 1703 对字体渲染的改进以及高分屏的普及,微软雅黑那极重的 Hinting 带来了束缚,使得新字体渲染难以对其平滑渲染。之所以认为是 Hinting 的束缚,那是因为同在 Windows 里的 Segoe UI 就不这样,只有小字号还在使用 Hinting,大字号则完完全全地平滑。想改进字体平滑问题,只需换掉微软雅黑即可,推荐使用同为 Windows 适配的 Noble Scarlet,或者稍微不那么适配但能看的鸿蒙字体,这样高 DPI 看字体就比较平滑舒服。当然这俩字体不太适合给 100% DPI 使用,125% DPI 则要看你能否接受,150% DPI 起步的就适合,且后悔更换还可下载微软雅黑换回去。另外有些人貌似更接受不了宋体那点阵部分,这里提供用于替换宋体的黑体,为跟真正的黑体区分而选择 XP 版本。

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

——DWM 虚拟化——
Vista 推出 DWM 的同时带来了虚拟化,将 100% DPI 的画面插值上去显示以保证其排版不乱,但这样的结果是每个东西看着都很糊。在以前,DPI 要超过 125% 才会启用虚拟化,可到了 Win10 却变成达到 125% 就启用。更糟心的是 Win7~8.1 时期还提供使用 Windows XP 样式缩放比例,勾选后便无论如何都不启用虚拟化,另外 Vista、Win7 在使用 Basic 主题时是一定不会启用虚拟化的 (也没法启用)。然而到 Win10 这个选项没了,使得你被强行喂翔。有没有解决方案呢?
微软为何要在 Win10 砍掉左下角那个选项呢?百思不得其解。
Image
若你的屏幕适合使用 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,窗体没有虚拟化,观感很好。

Return to “杂物”

Who is online (over the past 5 minutes)

Users browsing this forum: 2 guests