奇怪的 Windows 字体渲染问题(附视频演示)

奇怪的 Windows 字体渲染问题(附视频演示)

观看视频演示:vimeo.com/155636855

我已经在这个问题上挣扎了太久——现在我需要一些外部的帮助。

* 这与 VM 技术无关 - 请参阅文章末尾的附加说明 *

所附图片包含一个 WordPad 文件的并排图像,其中的文本代表字母表中所有字母,包括大写和小写字母。左侧图片取自在 Windows 10 主机(“主机”操作系统)上运行的 Windows 10 虚拟机(“客户”操作系统);右侧图片取自 Windows 主机:

在此处输入图片描述

放大图像并仔细观察每个字母边缘的差异:左边比右边平滑得多 - 并且如果您想快速得出结论,CLEARTYPE 不是问题(请参阅下面的几点),至少不是从“开”与“关”的角度来看(换句话说,可能涉及与 ClearType 相关的注册表设置,但 Windows UI 上与 ClearType 相关的任何内容不会导致这种情况,因为两台机器都针对 ClearType 进行了校准,并且主机和客户机上的 ClearType 都处于打开状态)。

事实:


两个操作系统都使用相同的 Myriad Font TrueType (TTF) 字体文件

两个操作系统都设置为相同的屏幕分辨率。

我以为这是 Windows 视频驱动程序的问题,但我拥有最新的 nVidia 驱动程序,并且在主机和客户机上都运行带有 DirectX 12 的相对高端的 GeForce GTX 560 卡。

两个写字板文件都使用相同的字体、字体大小、字体样式和缩放比例 (100%)。

两个 Windows 10 操作系统均使用 Windows Update 进行全面更新。

ClearType 在 Windows 主机和虚拟机上均处于活动状态(打开)。我尝试了 ClearType 的各种组合(在主机上关闭它并在客户机上关闭它,以及所有其他组合),与客户机相比,主机上显示的粗糙边缘工件没有任何变化。

我不知道客户机和主机之间有任何 DPI 差异。其他字体(例如 Windows 包含的 Arial 字体)仅在主机上显示类似的粗糙边缘问题 - 我只是选择了 Myriad Pro 来说明问题。

两种字体的颜色都是 100% 黑色 (#000)。

所有能够呈现 TrueType 字体的应用程序中都会出现此问题。我使用 WordPad 仅作为示例,但它也发生在 Microsoft PowerPoint 和 TechSmith 的 Camtasia 中。

该问题与 TrueType 字体无关;OTF 字体也会发生该问题。

而且,无论我是通过远程桌面会话 (RDP) 还是使用 TeamViewer 之类的工具从另一台计算机查看主机都没有关系;而且,当我使用 RDP 或 TeamViewer 时,访客的行为不会改变。


显然,主机上的字体渲染子系统出了问题。有趣的是,大约一周前(2016 年 2 月初),我通过安装 Windows 10 Enterprise 对其进行升级,而主机还是 Windows 7 Ultimate 机器。我曾希望从 Windows 7 升级到 Windows 10 可以解决字体渲染问题,特别是因为我已经看到在同一台主机上的虚拟机中运行的 Windows 10 没有字体渲染问题。不幸的是,对 Windows 10 的更新并没有修复字体渲染问题(我没有进行全新安装 Windows 10——我进行了保留以前操作系统文件和设置的更新)。

由于我上面写的所有内容,我怀疑与主机操作系统的字体渲染相关的注册表中存在一些损坏、丢失或不正确的值 - 但那可能是什么?

* 2016 年 2 月 12 日添加 * 我拿了一个全新的硬盘,并在上面提到的“主机”所在的同一硬件上安装了一个干净的 Windows 10 实例。新的 Windows 10 实例的字体很流畅,就像 Windows 10 的虚拟机 (VM) 实例一样。这告诉我,机器的硬件不会导致生成右侧图像的问题,并且 VM(或虚拟化技术)不是造成差异的原因。我现在在物理机器上有装有 Windows 10 的硬盘 A,我可以启动它并看到右侧的图像;在同一台机器上还有第二个装有 Windows 10 的硬盘 B,我可以启动它来显示左侧的图像。

然后,我擦除了新硬盘并从 Microsoft 源安装 DVD 安装了 Windows 7 Ultimate。它还会在左侧呈现图像(正确、流畅的字体)。因此,问题不在于 Windows 7 在我的硬件上存在问题,而 Windows 10 没有纠正它——现在我很清楚,如果我重新安装 Windows 7,Windows 7 不会在我的硬件上显示字体问题。

因此,除了虚拟化之外 - 我似乎看到我现有的主机和“正常”Windows 7/10 机器之间的字体渲染子系统存在某种损坏(请记住,我现有的主机已从 Windows 7 Ultimate 升级到 Windows 10 Enterprise,并且在升级之前 Windows 7 Ultimate 中确实存在问题;事实上,我希望升级可以解决这个问题 - 可惜没有)。

我将在空闲时间尝试查找/比较关键注册表项是否存在差异,但我仍然渴望听到任何专家的意见,帮助我找到根本原因。

答案1

我从来没有注意到 ClearType 字体渲染在大字体尺寸上的效果如此糟糕......但在我的 Win10 上它与在你的计算机上是一样的。

在我看来,您描述的行为不是一个错误......而是一个功能:-)

看一下下面的图片:

图片 1ClearType 渲染已打开(点击图片可更清晰查看)

开启 ClearType 渲染

当 ClearType 处于开启状态时,Windows 字体渲染引擎会尝试利用 LCD R/G/B 子像素来优化字体渲染。如果您查看左侧的放大图像,您会看到每个字体都有蓝色/红色的平滑效果,这是由于 LCD 子像素结构 (点击此处了解有关子像素渲染的更多信息)。
但是,正如您所说,这在大字体上效果不好。
但在小字体上效果仍然很好。

图片 2ClearType 渲染已关闭(点击图片可更清晰查看) 在此处输入图片描述

如果关闭 ClearType 渲染,Windows 字体渲染引擎将停止利用 LCD 子像素结构,现在字体将具有简单的灰色平滑(而不是蓝色/红色平滑)。
这在大字体上效果更好……但在小字体上效果很差,您可以通过查看文件名渲染、菜单渲染等来检查……

现在,您的客户 PC 上的字体渲染效果似乎更好,这可能是因为只有当 Windows 检测到物理 LCD 屏幕时,ClearType 子像素字体渲染才会启用。如果虚拟 PC 没有检测到物理 LCD,它可能会使用“标准”(灰度)字体平滑。

现在您可以尝试强制 Windows 使用“标准/灰度”字体平滑,而不是 Cleartype/子像素平滑,但在我的计算机上没有任何区别:强制灰度平滑给出与从控制面板禁用 Cleartype 相同的结果。(有关注册表黑客尝试调整 Cleartype 渲染的更多信息,请访问此处

相关内容