16

IE9 忽略了操作系统范围的字体平滑设置(也称为抗锯齿),这是有据可查的(例如这里)。即使在 Windows 中禁用了字体平滑和 ClearType,IE 仍然显示抗锯齿字体,一些用户难以阅读,尤其是在小字体时。

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

更多细节:

我们公司构建了一个使用大量小字体的 Web 应用程序。随着 IE9 的发布,我们的一些用户抱怨 IE9 的默认抗锯齿功能使我们的小字体变得模糊或模糊。所以我们需要帮助那些已经安装了 IE9 并且想要关闭抗锯齿功能的用户。

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

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

在对这个问题进行一些研究之后,我了解到:核心问题是 IE 依赖 DirectWrite 进行文本渲染,并且不支持任何更新的渲染选项,这些选项将在没有抗锯齿的情况下绘制文本并尊重用户的操作系统-广泛的默认选择。

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

4

3 回答 3

9

经过几天的搜索,我找到了一个MSDN 论坛线程,它为我提供了一个解决方案:http: //www.softwareninjas.ca/dwrite-dll-wrapper

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

非常感谢建造这个的 Olivier Dagenais。这是他的解决方案如何工作的技术摘要。

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

[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找到代码

这是一个非常酷的 hack。可能在 Windows 和 DirectX 版本中有些脆弱,但现在可以解决问题,直到微软齐心协力解决 IE 本身的“无法禁用抗锯齿”问题。

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

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

于 2011-03-25T00:40:42.117 回答
5

直接回答你的问题:

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

因此,请尝试切换您的文档类型以使用Quirks 模式

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

要考虑的另一件事是尽量避免基于点的字体大小


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

MSDN 来源:

于 2011-04-13T08:48:30.177 回答
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自动安装了自己,模糊类型又回来了。我尝试卸载 IE 10,不是通过添加/删除程序界面,而是通过已安装的更新界面——删除 IE10 更新。这表面上把我带回了 IE9,但模糊类型仍然存在,尽管“否”仍然是注册表中 cleartype 的答案,并且两个 .dll 文件仍然在我的 IE 程序文件夹中。

所以,我决定卸载 IE9 并重新安装它。这还涉及通过已安装的更新界面并删除 IE9 更新。

我重新启动并预计必须重新安装程序,但我的 IE 图标仍然存在。当我点击它时,IE9 以漂亮、清晰的字体打开。

于 2013-04-05T22:54:50.147 回答