【问题标题】:Firefox Icon Font Overly Bold Anti-AliasingFirefox 图标字体过粗抗锯齿
【发布时间】:2012-12-14 11:24:46
【问题描述】:

我知道不同的浏览器以不同的方式呈现文本——在某种程度上,我对此很满意。然而,在尝试为一个项目使用图标字体时,Firefox 尤其让我恼火。

基本上我有一排社交媒体图标,通过@font-face 和一些伪类显示。除了 Firefox 在渲染它们方面有一点问题......

这是 Chrome 与 Firefox 的对比。

Chrome 23.0.1271.101 (Mac)

http://cl.ly/image/0M3t2S3N2A38/

(完美)

Firefox 17.0.1 (Mac)

http://cl.ly/image/053d2J0J312K

(不太完美)

您可能会看到我遇到的问题...

我还检查了其他几个浏览器,看看它是否不仅仅是 firefox。它只是火狐。甚至 IE 也做得更好。

代码:

CSS

@font-face {
    font-family: 'icomoon';
    src:url('fonts/icomoon.eot');
    src:url('fonts/icomoon.eot?#iefix') format('embedded-opentype'),
    url('fonts/icomoon.svg#icomoon') format('svg'),
    url('fonts/icomoon.woff') format('woff'),
    url('fonts/icomoon.ttf') format('truetype');
    font-weight: normal;
    font-style: normal;
}


[class^="icon-"]:before, 
[class*=" icon-"]:before {
    font-family: 'icomoon';
    font-style: normal;
    speak: none;
    font-weight: normal;
    line-height: 1;
    text-align: center;
}


.icon-flkr:before {
    content: "\2b";
}
.icon-fbk:before {
    content: "\2c";
}
.icon-twitter:before {
    content: "\3e";
}
.icon-lfm:before {
    content: "\24";
}
.icon-lkdin:before {
    content: "\25";
}
.icon-inst:before {
    content: "\26";
}

HTML

<ul id="footer_social_list" class="group">
    <li><a href="#" class="icon-twitter" title="Follow me on Twitter"></a></li>
    <li><a href="#" class="icon-fbk"></a></li>
    <li><a href="#" class="icon-lkdin"></a></li>
    <li><a href="#" class="icon-flkr"></a></li>
    <li><a href="#" class="icon-inst"></a></li>
    <li><a href="#" class="icon-lfm"></a></li>
</ul>

我已经尝试了很多方法来尝试解决这个问题。从用 CSS 改变不透明度;尝试文字阴影;更改@font-face、类和继承样式的权重;使用“数据图标”;甚至确保每个图标都与像素网格对齐。

在 Firefox 中还没有任何改进,我想说除了 IE9 中的 Instagram 图标之外,所有浏览器的一切看起来都不错。

那么为什么 Firefox 会这样做呢?我能做些什么来让它正常运行吗?

PS: 我没有添加 -webkit-font-smoothing: antialiased;反正它不会影响 Firefox。

【问题讨论】:

  • 你试过font-weight:400 吗?我对字体也有同样的问题,改变字体粗细使它起作用。
  • @onimojo 是的,我尝试在各种类和样式上添加font-weight:100-900。实际上只会让情况变得更糟,一旦你超过了大约 500... :(
  • @alexander 你有没有想过这个问题?我也有同样的问题
  • 不怕。对于图标,如果您需要矢量功能,那么 SVG 和 PNG 后备是您最好的选择。我认为 Mac OS X 的渲染问题比 Firefox 的问题更大。
  • 尝试设置字体大小,看看是否有任何改变。最好尝试从 16 像素开始的随机尺寸。

标签: html css firefox antialiasing


【解决方案1】:
font-weight:normal !important;

这似乎是显而易见的答案,但没有人提到它。很可能您的锚标记上沿线某处有一个!important,以防止它们再次被正常加权。

【讨论】:

  • 感谢大家的回答,但我认为这不是代码问题。恐怕这就是 Firefox 做事的方式。这些建议都没有奏效,因此我只能得出结论,在网络上使用矢量图标的情况下,SVG 在渲染方面是最可靠的。
【解决方案2】:

这是另一个没有人提及的明显答案:

你所说的在所有浏览器中都会发生:当你在深色背景上使用浅色文本时,文本看起来更“重”。图标字体也是如此……小细节会膨胀。 (有 CSS 字体平滑和文本渲染属性可以帮助纠正这个问题,但它们在所有浏览器中的工作方式不一定相同。See here.

如果您想在较浅的圆形上使用深色图标(不使用 SVG),您可以绕过它的一种方法是使用不带圆形的图标,然后使用 CSS 创建您自己的圆形背景。

您不会得到真正的淘汰(图标实际上不会是圆圈中的负空间,因此按钮后面的任何背景图案都不会通过图标显示),但您会避免使用浅色文本-暗背景出血。

当然,在旧版本的 IE 中,您也会失去边框半径...所以权衡(咳咳)更重要的是。

【讨论】:

    【解决方案3】:

    【讨论】:

    • 很有魅力!为什么在 18 个月和 1500 次以上的观看中没有人对此进行投票?谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-15
    • 2011-01-26
    • 2015-07-31
    • 2011-09-27
    • 2014-02-18
    • 2011-02-11
    相关资源
    最近更新 更多