在 Windows 上基于 Chromium 的浏览器中改进了文本渲染

Kurt Catti-Schmidt
Kurt Catti-Schmidt
Patrick Brosset
Patrick Brosset

发布日期:2025 年 2 月 12 日

Web 渲染引擎的工作量巨大,其中大部分工作(例如样式、媒体或布局)都由标准驱动。这些标准可确保独立引擎能够互操作,这让 Web 得以蓬勃发展。但一些更精细的细节(例如文本在像素级别的呈现方式)通常由标准机构进行解释,最终通常取决于浏览器所运行的操作系统。

2020 年,Microsoft Edge 迎来了难得的机会,可以彻底替换其底层呈现引擎。Edge 已改用 Chromium,不再是直接使用 Windows API 的仅限 Windows 平台,而是成为了真正的跨平台 Web 呈现引擎。在改用 Chromium 之前,Edge 完全依赖于一个名为 DirectWrite 的 Windows API 来进行文本渲染。不过,Chromium 依赖于 Skia,这是一个功能强大且灵活的跨平台图形引擎,可从其 API 中提取许多特定于操作系统的代码。

在 Edge 向 Chromium 过渡的过程中,Edge 团队有机会从用户那里收集有关 Chromium 渲染引擎的反馈。其中有一项反馈非常重要:许多 Edge 用户表示,文字看起来“很淡”,与 Windows 其他部分的文字不一致。

在 132 之前的版本中,Windows 版 Chrome 中的文字看起来很淡。

该团队对此反馈非常重视,并进行了一些调查。虽然 Skia 在 Windows 上使用 DirectWrite 来实现某些功能(例如字体查找),但最终的文本光栅化实际上由 Skia 直接处理。用户反馈的“颜色过淡”问题的一个主要原因是文本渲染的内部对比度和伽玛设置。

我们发现 Edge 基于 Chromium 的引擎与其之前的引擎在文本对比度和伽玛值方面存在两个主要差异。首先,Skia 不会从 Windows ClearType Tuner 中提取文本对比度和伽玛值。其次,它使用的文本对比度和伽马值默认值与 Edge 基于 DirectWrite 的文本堆栈使用的值不同。

去年,Edge 团队添加了直接在 Chromium 中遵循 ClearType 调谐器值的支持。这样一来,基于 Chromium 的浏览器用户便可在 Windows 上控制文本对比度和伽玛设置。虽然这是朝着正确方向迈出的一大步,但大多数用户往往不会调整系统级文本对比度和伽玛设置。因此,我们在该过程中的下一阶段是认真考虑调整 Web 和浏览器界面文本内容的默认文本对比度和伽玛设置。

更改网页上文本的外观是一项艰巨的任务。网络一直以文字为主,因此需要高质量的文本引擎。很明显,文本对比度值需要提高,但需要数据来确定调整幅度。

Edge 团队早在 2021 年就开始尝试使用各种文本对比度值。经过大量的用户研究,Edge 和 Chromium 团队成员确定,对比度值为 1.0 与 Chromium 之前的 Edge 的文字渲染非常接近,并且与其他原生 Windows 应用相比,看起来也一致。

Edge 团队认为,我们的研究和实验对 Windows 上的整个 Chromium 社区都有益,因此我们与 Google 的 Chrome 团队分享了我们的研究成果,后者通过自己的实验证实了这些成果。然后,我们继续为 Windows build 默认启用新的对比度值,从 Chrome 132 开始。

如今,Windows 上所有基于 Chromium 的浏览器用户都可以受益于过去几年间分享的研究、实验和实现成果。

切换后,文本看起来清晰锐利。

特别感谢 Microsoft 的 Ian Prest、Daniel Libby 和 Alison Maher,以及 Google 的 Dominik Röttsches、David Yeung、Ben Wagner 和 Brian Osman 对此项目做出的贡献!