使用css强制抗锯齿:这是一个神话吗?

Fri*_*ure 61 css fonts

最近一位客户抱怨IE6中出现了系统字体.基本上问题是IE6不支持字体平滑/抗锯齿(我知道你可以在OS设置或其他东西中打开它).但有人抛弃了这个宝石:

"你可以使用pt而不是px强制css中的字体反别名."

我在各种浏览器中做了一个快速的POC,并没有看到任何区别.我在网上发现了一个对它的引用,这篇论坛的最后一篇文章:

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

这听起来像是一个网络开发者城市神话,我的感觉是它的BS.有没有人遇到过它?

Rya*_*die 47

哦,是的,你可以:

-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
font-smoothing: antialiased;
Run Code Online (Sandbox Code Playgroud)

Firefox的来源,感谢贾斯汀的提升.

  • 这才是真正的答案 (9认同)
  • Firefox 25+现在在OSX中有字体平滑:`-moz-osx-font-smoothing:灰度;`请参阅:http://stackoverflow.com/a/17927764/922522 (2认同)

Bar*_*fen 39

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

font-smooth:always;
-webkit-font-smoothing: antialiased;
Run Code Online (Sandbox Code Playgroud)

尽管如此,他们仍然没有对他们进行太多测试,他们几乎肯定不会对IE有任何好处.可能对Windows上的Chrome或Firefox有用.上次我检查时,他们并没有像在OSX中那样自动地对抗小东西.

UPDATE

IE或Firefox不支持这些.只要我记得,font-smooth属性仅在iOS safari中可用


Cha*_*rch 29

不,作为Web开发人员,没有任何方法可以控制它.

小的例外是你可以通过sIFR使用Flash来做一些伪造的抗锯齿,而且有些浏览器不会对位图/像素字体进行反别名(因为它们不应该,更多信息:Anti-Aliasing/Anti-Anti -Aliasing).

此外,正如丹尼尔所提到的,使用em所有字体的单位是理想的,有关此内容的更多信息,请参阅使用CSS的The Incredible Em&Elastic Layouts.

  • 这有些偏离主题,但我不是弹性/防弹CSS布局的支持者.如果您在复杂布局上尝试真正的"缩放"效果,它们会以指数方式增加工作量,并且除了IE6之外的所有A级浏览器都支持实际页面缩放. (19认同)
  • @Sasha,没有足够强大的词来表达我对你(以及那六个赞成你的人)的不同意见.是的,工作在各种字体大小的布局更多的工作,毫无疑问.但是现在屏幕分辨率比以往任何时候都要多,并且只考虑显示器上的默认字体大小,你就会放弃其他所有人,包括手机用户,上网本和平板电脑,以及他们的命运. (19认同)
  • 注意 - 还有一个名为"cufon"的选项,它是支持AA的html5字体替换,比sIRF更容易(根据我的经验)http://cufon.shoqolate.com (4认同)
  • @RyanBrodie哇...当我写这篇文章的时候,我感觉很有冲劲,老实说,没想到会有回复,肯定不会像你那样体贴.Ryan,你真是太酷了. (4认同)

biz*_*lop 15

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

这个怎么运作:

-zoom up zoom with zoom:x,x> 1

- 应用一些模糊(或任何其他过滤器)

-zoom向下缩放: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);
}
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

您可以使用这个简短的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>'
); });
Run Code Online (Sandbox Code Playgroud)

  • 对不起,这个技巧只适用于IE(过滤,缩放) (3认同)

Mat*_*hew 8

添加以下CSS行适用于Chrome,但不适用于Internet Explorer或Firefox.

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

  • 这与MS ClearType有什么关系? (2认同)
  • 优秀!这适合我.PS我确实将第二个像素值更改为0,以便在所有方面平滑文本:`text-shadow:#fff 0 0 1px;` (2认同)

Sal*_*bas 7

我不同意Chad Birch.我们可以强制消除锯齿,至少在Chrome中使用简单的css技巧与-webkit-text-stroke属性: -

-webkit-text-stroke: 1px transparent;
Run Code Online (Sandbox Code Playgroud)