强制使用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:
- 基于
px
和pt
的字体不会缩放 - 在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中也是如此。