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

时间:2011-03-25 00:40:19

标签: wpf internet-explorer-9 antialiasing cleartype directwrite

有很好的文档记录(例如here)IE9忽略了字体平滑(又名抗锯齿)的OS范围设置。即使在Windows中禁用了字体平滑和ClearType,IE仍会显示抗锯齿字体,有些用户难以阅读,特别是在小字体时。

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

更多详情:

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

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

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

经过对该问题的一些研究后,这就是我所学到的:核心问题是IE依靠DirectWrite进行文本渲染,并且不支持任何较新的渲染选项,这些选项会在没有抗锯齿的情况下绘制文本并尊重用户的操作系统范围的默认选择。

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

3 个答案:

答案 0 :(得分:9)

经过几天的搜索,我找到了一个MSDN Forums thread,它指出了我的解决方案: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"

其次,现在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工具栏中的兼容性按钮即可以兼容模式查看网站。

答案 1 :(得分:5)

直接回答您的问题:

  

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

因此,请尝试切换您的doctype以使用Quirks mode

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

要考虑的另一件事是尝试避免point based font sizes

<小时/>

有关IE9

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

MSDN来源:

答案 2 :(得分:0)

此处的信息解决了两个问题: 1.删​​除IE9中的cleartype和字体平滑 2.安装IE10时自行删除cleartype和字体平滑或自动安装

我做了一个注册黑客来关闭IE9中的cleartype: [HKEY_CURRENT_USER \ Software \ Microsoft \ Internet Explorer \ Main] “UseClearType”= “否” 并使用一小块免费软件摆脱IE9中的字体平滑: https://softwareninjas.kilnhg.com/Repo/Open-Source/Group/DWrite-dll-Wrapper

然后IE10自动安装,模糊类型又回来了。我尝试卸载IE 10,这不是通过添加/删除程序界面,而是通过已安装的更新界面 - 删除IE10更新。表面上看起来让我回到IE9,但模糊的类型仍然存在,尽管“不”仍然是注册表中的cleartype的答案,两个.dll文件仍然在我的IE程序文件夹中。

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

我重新启动并且预计必须重新安装该程序,但我的IE图标仍然存在。当我点击它时,IE9以漂亮,锐利的类型打开。