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


9

观看视频演示,网址为:vimeo.com/155636855

我已经为这个问题苦苦挣扎了很长时间-现在我希望得到一些外部帮助。

*与VM技术无关-请参阅文章结尾处的补充说明*

附带的图像包含写字板文件的并排图像,其中文本表示字母中的所有字母(大小写)。左侧的图像是从运行于Windows 10主机(“主机” OS)上的Windows 10虚拟机(“ guest”操作系统)拍摄的;右图是从Windows主机上拍摄的:

在此处输入图片说明

放大图像并仔细查看每个字母的边缘周围的差异:左侧要比右侧要平滑得多,并且万一您想快速得出结论,则“清除类型不是问题”(请参阅​​下面的要点) ),至少不是从“打开”与“关闭”的角度来看(换句话说,可能涉及与ClearType相关的注册表设置,但Windows UI上与ClearType相关的任何操作都不会引起这种情况,因为两台机器都针对ClearType和在主机和来宾计算机上,ClearType都为ON。

事实:


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

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

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

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

使用Windows Update完全更新了两个Windows 10操作系统。

Windows主机和虚拟机上的ClearType均处于活动状态。我尝试了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升级到Windows 10能够解决字体渲染问题,尤其是因为我已经看到在同一主机上的虚拟机中运行的Windows 10不会出现字体渲染问题。不幸的是,对Windows 10的更新未能修复字体渲染(我没有进行全新的Windows 10安装-我进行了保留以前的OS文件和设置的更新)。

由于我在上面写的所有内容,我怀疑注册表中与主机OS字体渲染有关的某个值已损坏,丢失或不正确,但是那可能是什么呢?

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

然后,我擦除了该新硬盘,并从Microsoft源代码安装DVD安装了Windows 7 Ultimate。它还以LEFT(正确,平滑的字体)呈现图像。因此问题不是Windows 7在我的硬件上有问题,也不是Windows 10无法纠正它-现在我很清楚,如果我重新安装Windows 7,Windows 7不会在我的硬件上显示字体问题。

因此,除了虚拟化之外,似乎我目睹了现有主机和“正常” Windows 7/10计算机之间的字体渲染子系统中的某种损坏(请记住,我现有的主机已从Windows 7 Ultimate升级升级到Windows 10 Enterprise,并且在升级之前Windows 7 Ultimate确实存在该问题;实际上,我希望升级能够解决此问题-哎呀,事实并非如此。

我会在空闲时间尝试查找/比较注册表的主要条目是否存在差异,但我仍然渴望听到任何专家的意见,他们可能会帮助我从根本上对我进行归零。


什么VM软件?
Yorik '16

1
来宾是VMWare 12 Workstation虚拟机,但我也已在HyperV下运行它。
Jazimov '16

我知道Word在内部以大约300dpi的速度渲染,然后降低采样率进行显示。图像中的主机版本看起来像是在较低的DPI设置下呈现的。不知道为什么。我对Windows 10中的字体渲染一无所知,但在我看来,他们似乎放弃了子像素渲染,转而使用灰度级AA,因为子像素渲染具有方向性,对于移动可旋转设备没有用。如果我不得不猜测,我会说问题出在Guest VM虚拟视频硬件向OS呈现的方式上。
Yorik

这不是VM问题(请参阅我的补充说明),但这是一个合理的猜测。当您谈到DPI时,您可能会遇到某些问题,但是很遗憾,您的想法/理论不适用于我的设置。同样,这也不是“ Windows 10的新工作方式”问题。请注意,这两台计算机都是Windows 10计算机-我的新评论证明,即使在同一台物理计算机上,Windows 10的行为也有所不同...当我说我一直在努力解决这个问题时,我的意思是!:)
Jazimov '16

您通过HDMI连接了吗?检查您的视频卡设置是否有透支调整并禁用?IIRC Radeon卡默认通过HDMI启用此功能,并且可以从本地扩展
Yorik

Answers:


2

我从没注意到ClearType字体渲染在大字体时效果很差...但是在Win10上,它与您的计算机上的字体相同。

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

看一下以下图像:

图像1ClearType渲染已启用(单击图像可更好地查看它)

启用ClearType渲染

当ClearType为ON时,Windows字体渲染引擎尝试通过利用LCD R / G / B子像素来优化字体渲染。如果检查左侧的放大图像,则可以看到每种字体都具有蓝色/红色平滑度,这是由于LCD子像素结构(有关子像素渲染的更多信息,请参见此处)。
但是,正如您所指出的,这在大字体时效果不好。
但是在较小的字体上它仍然非常有效。

图片2ClearType呈现为OFF(点击图片可更好地查看) 在此处输入图片说明

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

现在,在来宾PC上字体渲染看起来更好的事实可能是由于以下事实:仅当Windows检测到物理LCD屏幕时,才启用ClearType子像素字体渲染。如果虚拟PC未检测到物理LCD,则可能会使用“标准”(灰度)字体平滑。

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


很好的反馈-可能是正确的答案。在接受之前,我很困惑为什么主机上的Windows 10的新实例无法检测到LCD并随后使用亚像素抗锯齿(除非Microsoft为新的Windows 10实例选择的默认视频驱动程序做了与该驱动程序不同的操作)我安装了Windows 7实例,后来又升级到Windows 10。)...我将在VM上进行实验,以查看是否可以强制将亚像素渲染为灰度渲染,并且还将对主机进行实验,并发布再来一次。
Jazimov '16

@Jazimov监视器检测是由Windows通过视频卡进行的,因此视频卡驱动程序肯定会对Windows如何检测监视器产生影响。
最大

那么在使用LCD显示器时运行系统的“正确”方法是什么?如果清除ClearType,则会丢失小字体渲染方面的改进;如果启用,则会丢失大字体渲染的改进...该怎么办?
Jazimov '16

@Jazimov可能没有解决方案...我保持cleartype令人愉快,因为我通常使用小字体,但仅我一个人。在2小时前阅读您的文章之前,我从没注意到大字体的cleartype渲染问题(我是一名软件开发人员,我每天在PC上花费至少11/12小时...)
2016年

我仍然会进行一些调整,以了解我的想法。许多人认为您需要保持ClearType不变才能获得可接受的较小文本,但是即使您使用ClearType调谐器的首页取消选中它,您仍然可以通过调整过程来校准显示。那可能是最好的解决方案:ClearType OFF,显示已校准。
Jazimov '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.