在IE9中禁用ClearType(文本反锯齿)

16

众所周知(例如此处),IE9忽略了操作系统的字体平滑设置(也称为抗锯齿)。即使在Windows中禁用了字体平滑和ClearType,IE仍然显示反锯齿字体,这些字体对一些用户来说阅读起来很困难,尤其是在小字号下。

如何在IE9中禁用所有字体反锯齿(包括ClearType或其他方式)?

更多细节:

我们公司构建了一个使用大量小字体的Web应用程序。随着IE9发布,我们的一些用户抱怨IE9的默认反锯齿使我们的小字体模糊不清。因此,我们需要帮助那些安装了IE9并想关闭反锯齿的用户。

另外,就个人而言,我很难阅读小字体的反锯齿字体,所以我想要一个解决方案,即使对于我无法控制的网站也同样适用。

在IE8中,我可以取消选中“始终对HTML使用ClearType”,然后在操作系统和IE8中禁用ClearType,那么IE8将显示所有字体的锯齿。但是在IE9中,此选项已经消失。

经过一些关于问题的研究,我了解到以下内容:核心问题是IE依赖DirectWrite进行文本呈现,并且不支持任何新的呈现选项,这些选项可以绘制没有反锯齿效果的文本,并尊重用户操作系统默认选择。

更糟糕的是,如果在操作系统中禁用ClearType,在某些情况下,IE会回退到DirectWrite的默认非ClearType反锯齿,这比ClearType模糊得多。


@BoltClock,你可能想要检查一下,你会感到惊讶的。我认为ManagedSpy可以展示它。 - SilverbackNet
@SilverbackNet:我所看到的都只是谣言... - BoltClock
2
微软已发布了一个补丁,用于修复Windows上IE9中的字体问题... http://support.microsoft.com/kb/2545698 - David d C e Freitas
@David:补丁不起作用,这里有人证实了:http://social.technet.microsoft.com/Forums/en/ieitprocurrentver/thread/01c447b1-5c78-4d2f-9968-6eeabc04a68b - pbz
3个回答

10

在搜索了几天后,我找到了一个MSDN论坛帖子,其中指向了这里的解决方案:http://www.softwareninjas.ca/dwrite-dll-wrapper

按照该页面上的说明,您将从IE9(至少是32位版本的IE,默认情况下即64位Windows 7上的IE)中删除反锯齿。 我已经在Win7 x64笔记本电脑上测试过,它完美无缺。

非常感谢Olivier Dagenais制作了这个东西。以下是他的解决方案的技术摘要。

这是一个两步过程。首先,您需要通过注册表键禁用IE中的ClearType。 这是以前版本的IE中可用的相同设置,但由于在IE9中停止工作而从IE UI中删除了该设置。

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main]
"UseClearType"="no"
其次,现在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 版本发布之间比较脆弱,但是暂时可以解决底层的“无法禁用抗锯齿”的问题,直到 Microsoft 对 IE 本身的问题进行修复。

它还适用于使用 IE WebBrowser 控件(又称 MSHTML)的应用程序,因此您可以逐个应用程序控制抗锯齿。它还适用于 HTML 帮助查看器。

请注意,在 IE9 标准模式下,文本质量并不理想。具体而言,小字体有时会出现字母之间没有通常的一个像素间距而相互连接的情况。如果在兼容模式下呈现同一页面(或者您的站点使用非严格 DTD 或其他未执行标准的 DTD),则看起来很好。因此,对于某些站点,如果要获得最佳的反锯齿文本渲染,则需要进行附加步骤:通过按IE工具栏中的兼容性按钮在兼容性模式下查看网站。


微软已发布了一个补丁,用于修复Windows下IE9中的字体问题...http://support.microsoft.com/kb/2545698 - David d C e Freitas
@David:就这个 bug 而言,那个补丁没有任何影响。 - pbz

5

直接回答你的问题:

ClearType字体渲染在所有IE9文档模式中都被使用;亚像素定位仅在IE9的默认标准模式中使用。IE9的兼容模式——Quirks、7和8——使用整像素文本度量。

所以尝试切换你的doctype以使用Quirks模式

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

另外需要考虑的一点是尽量避免使用基于点的字体大小

关于字体、模糊和IE9渲染的重要信息

MSDN来源:


0
这里的信息解决了两个问题: 1. 在IE9中消除ClearType和字体平滑 2. 当安装或自动安装IE10时,消除ClearType和字体平滑
我曾经通过注册表修改来关闭IE9中的ClearType: [HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main] "UseClearType"="no" 并使用了一个小型免费软件来消除IE9中的字体平滑: https://softwareninjas.kilnhg.com/Repo/Open-Source/Group/DWrite-dll-Wrapper 然后IE10自动安装,模糊的字体又回来了。我尝试卸载IE10,但不是通过添加/删除程序界面,而是通过已安装更新界面--删除IE10更新。那理论上应该把我带回到IE9,但是即使在注册表中仍然选择“no”,两个.dll文件仍在我的IE程序文件夹中,但是模糊的字体仍然存在。
所以,我决定卸载IE9并重新安装它。这也涉及到通过已安装更新界面并删除IE9更新。
我重新启动了电脑,本以为需要重新安装程序,但我的IE图标仍在那里。当我点击它时,IE9以清晰、锐利的字体打开了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接