在IE9中禁用Cleartype(文本消除锯齿)

Jus*_*ant 16 wpf antialiasing cleartype directwrite internet-explorer-9

它是有据可查的(如这里),其IE9将忽略字体平滑(又名抗锯齿)的OS范围的设置.即使在Windows中禁用了字体平滑和ClearType,IE仍会显示抗锯齿字体,有些用户难以阅读,特别是在小字体时.

如何在IE9中禁用所有字体抗锯齿(ClearType或其他)?

更多细节:

我们公司构建了一个使用大量小字体的Web应用程序.随着IE9的发布,我们的一些用户抱怨IE9的默认抗锯齿使我们的小字体模糊或模糊.因此,我们需要帮助已安装IE9并希望关闭抗锯齿功能的用户.

另外,就个人而言,我无法阅读小型的抗锯齿字体,所以我想要一个自己使用的解决方案,即使对于我无法控制的网站也是如此.

在IE8中,我可以取消选中"始终使用ClearType for HTML",然后在操作系统中禁用ClearType,IE8将显示所有字体别名.但在IE9中,缺少此选项.

经过一些关于这个问题的研究,这就是我所学到的:核心问题是IE依靠DirectWrite进行文本渲染,并且不支持任何更新的渲染选项,这些选项可以在没有抗锯齿的情况下绘制文本并尊重用户的OS-广泛的默认选择.

更糟糕的是,如果你在操作系统中禁用ClearType,在某些情况下,IE将回退到DirectWrite的默认非cleartype抗锯齿,它甚至比ClearType更模糊.

Jus*_*ant 9

经过几天的搜索,我发现了一个MSDN论坛帖子,它在这里指出了一个解决方案:http: //www.softwareninjas.ca/dwrite-dll-wrapper

按照该页面上的说明进行操作,您将从IE9中删除消除锯齿功能(至少是IE的32位版本,这是默认的IE,即使在64位Windows 7上也是如此).到目前为止,我已经在Win7 x64笔记本电脑上进行了测试,它运行良好.

非常感谢Olivier Dagenais建立了这个.以下是他的解决方案如何运作的技术摘要.

这是一个两步的过程.首先,您需要通过注册表项在IE中禁用ClearType.这与以前版本的IE中提供的设置相同,但它已从IE UI中删除,因为它在IE9中停止工作.

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main]
"UseClearType"="no"
Run Code Online (Sandbox Code Playgroud)

其次,现在ClearType被禁用,Windows将回退到非cleartype抗锯齿解决方案.现在还需要禁用后退防止.引用上面的帖子:

剩下的是字体平滑(也称为子像素渲染),这是在关闭cleartype后仍然看到的"模糊效果".

如果你想知道,有一种方法可以关闭它.

我用来关闭子像素奇迹的方法是为dwrite.dll构建一个简单的包装器,它拦截并转发对真实dwrite.dll的调用,在此过程中禁用字体平滑.

您可以从以下网址下载:http://www.softwareninjas.ca/dwrite-dll-wrapper

您可以在https://softwareninjas.kilnhg.com/Repo/Open-Source/Group/DWrite-dll-Wrapper找到代码

这是一个非常酷的黑客.在Windows和DirectX版本中可能有点脆弱,但是现在要做到这一点,直到微软一起行动来修复IE本身的"无法禁用抗锯齿"问题.

它也适用于使用IE WebBrowser控件(又名MSHTML)的应用程序,因此您可以逐个应用程序控制消除锯齿.它也适用于HTML帮助查看器.

请注意,IE9标准模式下的文本质量并不理想.具体来说,小字体有时会有字母一起运行,而它们之间没有通常的单像素空间.如果在兼容模式下呈现相同的页面(或者您的站点使用非严格的DTD或其他非标准实施的DTD),那么它看起来很好.因此,如果某些网站需要最佳的别名文本呈现,那么还有一个额外的步骤:只需按IE工具栏中的兼容性按钮即可以兼容模式查看网站.


Dav*_*tas 5

直接回答你的问题:

ClearType字体渲染用于所有IE9文档模式; 子像素定位仅在IE9的默认标准模式下使用.IE9的兼容模式 - Quirks,7和8使用全像素文本指标.

因此,尝试切换您的doctype以使用Quirks模式:

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
Run Code Online (Sandbox Code Playgroud)

另一件需要考虑的事情是尝试避免基于点的字体大小.


有关IE9中字体,模糊和渲染的重要信息

MSDN来源: