强制使用CSS的反锯齿:这是一个神话?

最近有一个客户抱怨IE6中出现了一个系统字体。 基本上问题是,IE6不支持字体平滑/消除锯齿(我知道你可以打开它在操作系统设置或什么的)。 但有人抛出这个gem:

“您可以通过使用pt而不是px强制在css中使用字体反锯齿。”

我在各种浏览器中做了一个快速的POC,没有看到任何区别。 我在网上find了它的一个参考,最后在这个论坛发帖:

http://www.webmasterworld.com/css/3280638.htm

这听起来像是一个networking开发人员城市神话的等价物,我的感觉是BS。 有没有人遇到过它?

不,没有什么办法可以控制这个网页开发者。

less数例外情况是,您可以通过sIFR使用Flash进行一些伪造的抗锯齿强制操作,并且某些浏览器不会使用抗锯齿位图/像素字体(因为它们不应该,更多信息: Anti-Aliasing / Anti-Anti -Aliasing )。

另外,正如丹尼尔所说,所有字体都使用em单位是理想的,关于这个的更多信息,请参阅使用CSS的Incredible Em&Elastic Layouts 。

哦,你可以:

 -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-smoothing: antialiased; 

Firefox的来源 ,感谢贾斯汀的领导。

CSS3中有这些令人兴奋的新属性:

 font-smooth:always; -webkit-font-smoothing: antialiased; 

尽pipe他们自己还没有做过太多的testing,而且他们几乎肯定不会对IE有任何好处。 可以用于Windows上的Chrome或者Firefox。 上次我查了一下,他们没有像OSX那样自动化小东西。

UPDATE

这些在IE或Firefox中不受支持。 据我所知,font-smooth属性仅在iOS Safari中可用

我发现一个非常尴尬的解决scheme,使用缩放和过滤ms-only属性示例(尝试没有aa,标准和cleartype): http ://nadycoon.hu/special/archive/internet-explorer-force-antialias.html

怎么运行的:

放大缩小文本:x,x> 1

– 应用一些模糊(或任何其他filter)

放大缩小:1 / x

这有点慢,而且非常! 饥饿的方法,在非白色的背景上,它有一些轻微的黑暗的光环。

CSS:

 .insane-aa-4b { zoom:0.25; } .insane-aa-4b .insane-aa-inner { zoom:4; } .insane-aa-4b .insane-aa-blur { zoom:1; filter:progid:DXImageTransform.Microsoft.Blur(pixelRadius=2); } 

HTML:

 <div class="insane-aa-4b"> <div class="insane-aa-blur"> <div class="insane-aa-inner"> <div style="font-size:12px;">Lorem Ipsum</div> </div></div></div> 

您可以使用这个简短的jQuery来强制消除锯齿,只需将ieaa类添加到任何东西:

 $(function(){ $('.ieaa').wrap( '<div style="zoom:0.25;"><div style="zoom:1;filter:progid:DXImageTransform.Microsoft.Blur(pixelRadius=2);"><div style="zoom:4;"><'+'/div><'+'/div><'+'/div>' ); }); 

添加以下CSS代码行可用于Chrome,但不适用于Internet Explorer或Firefox。

text-shadow: #fff 0px 1px 1px;

我不同意乍得桦木。 我们可以强制使用反锯齿,至less在Chrome中使用简单的CSS技巧与-webkit-text-stroke属性: –

 -webkit-text-stroke: 1px transparent; 

我想你有点不对 你粘贴的线程中的某个人说,你可以通过使用px而不是pt阻止反走样,而不是通过使用px强制它。 尽pipe我对这两种说法都持怀疑态度。

我说它是一个神话。

我发现在pt,px和基于百分比的字体之间唯一的区别在于,当菜单>视图>文本大小>?设置时,IE将按比例缩放。 被改变。

IIRC:

  • 基于pxpt的字体不会缩放
  • 在IE中基于percent的字体缩放就好了

据我所知:

  • 字体抗锯齿主要由"ClearType"的窗口设置控制,或者IE7 / IE8是ClearType的IE特定设置。

pt to pt fix在我使用Google Web Fonts字体的网站上工作。 在Win7 – IE8上它正确地解决了缺乏反别名渲染。

使用99%的不透明度设置(通过DXTransformfilter)实际上强制Internet ExplorerclosuresClearType,至less在版本7中。Source

我怀疑无论如何强迫浏览器做任何事情。 这取决于系统configuration,使用的字体,浏览器设置等。这听起来也像BS一样。

请注意,总是使用相对大小而不是PX。

看起来像最详尽的解决scheme可以在http://www.elfboy.com/blog/text-shadow_anti-aliasing/find。; 适用于Firefox和Chrome,尽pipeFirefox并不像Chrome那么有效。

作为一个侧面说明,Gecko和WebKit支持

 text-rendering 

财产也是如此。

不是一个纯粹的CSS,而是没有任何字体replace的原生支持的方法:只需将字体转换为SVG,然后将其放在更高(在WOFF或TTF之前)的@ font-face顺序。 瞧! 字体现在是光滑的,因为它们不再被当成字体,而是被很好地平滑的SVG形状。

注意:我注意到SVG可以比WOFF或TTF更重。

这是一个很好的方法来实现消除锯齿:

 text-shadow: 0 0 1px rgba(0,0,0,0.3); 

我发现了一个修复…

 .text { font-size: 15px; /* for firefox */ *font-size: 90%; /* % restart the antialiasing for ie, note the * hack */ font-weight: bold; /* needed, don't know why! */ } 

不知道为什么马特的文字阴影反应被拒绝了。 我已经将这种风格应用于我正在使用Typekit的标题,并且它肯定改善了外观。 它不仅在Chrome中像他提到的那样工作,而且在Firefox 3.6.8中也是如此。