WebKit与Mozilla:字形在盒子中的垂直对齐

15

Box中的纹理

这张测试图片展示了Safari和Firefox(Mac OS X 10.6.7的Safari 5.0.5和Firefox 5.0.1)在将文本放入方框内时有着截然不同的方式。请注意,在Firefox中,sans-serif的“S”紧靠方框顶部,而在Safari中却不是这样。差异似乎取决于所使用的字体,其中一些字体甚至始终呈现一致。

我读到过有人说这是由于font-sizeline-height之间的四舍五入问题造成的(通过设置比大小更小的高度来修复),但我认为我的示例已经证明这一点是错误的,因为Firefox中的sans-serif/helvetica始终将其顶部对齐。

对我来说,看起来Safari比Firefox更正确,也就是说,文本通常更接近于中线。

有没有一种好的方法可以使它们更加一致? 我的目标只是符合标准的浏览器。

  • NB1: 这与vertical-align无关。
  • NB2: 我曾经调查过类似的问题,但并没有完全令人满意的结果。

我的测试代码:http://jsbin.com/omaboc

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <style type="text/css">
            body {
              font-size: 50px;
              line-height: 1em;
            }
            div {
            background: #b5e260;
                margin-bottom: 5px;
              }
        </style>
    </head>
    <body>
        <div style="font-family: sans-serif">Some text @ this box</div>
        <div style="font-family: serif">Some text @ this box</div>
        <div style="font-family: arial">Some text @ this box</div>
        <div style="font-family: helvetica">Some text @ this box</div>
        <div style="font-family: courier">Some text @ this box</div>
        <div style="font-family: georgia">Some text @ this box</div>
    </body>
</html>

3
在Windows 7上不会出现相同的问题,参见:http://i.stack.imgur.com/xQmTe.gif - thirtydot
兴奋。情节变得扑朔迷离!+1 for GIF动画 ;) - Martin Algesten
1
请查看这个问题的被接受答案:https://dev59.com/T1rUa4cB1Zd3GeqPkoeX - skybondsor
这是完全的垃圾,无法设计解决。我感同身受。 - brittohalloran
我遇到了同样的问题 https://jsfiddle.net/y5ofqfn7/1/,火狐和Safari之间的位置差异为7px。 - jvilhena
2个回答

4
很遗憾,这个问题目前还没有解决方案。几乎每个浏览器都有不同的文本渲染方式,甚至在主要浏览器版本之间有时也会发生变化。在某些浏览器中,它是由特定字体呈现系统和操作系统设置决定的。在一种字体呈现方式与另一种之间总是存在权衡取舍,并且每种呈现方式都会因使用不同类型的硬件显示而发生变化。
抱歉,只要您的网站支持多个设备、浏览器、显示器等,您就必须接受在浏览器之间无法完美呈现像素的事实,直到有单一的浏览器垄断市场、单一的操作系统没有可用的显示设置选择、单一的监视器类型和尺寸以及单一的视频卡。换句话说,只要你的网站支持多种设备、浏览器、显示器等,它永远不会像素完美匹配。
(赞赏您先进行自己的调查和测试。您在提问前进行了良好的研究和思考,我们希望能够在您付出了那么多努力之后给您一个更好的答案。)

1

你尝试过使用样式表文件顶部的Reset吗?

重置样式表的目标是减少浏览器中诸如默认行高,标题的边距和字体大小等方面的不一致性。

你可以在这里找到解释和代码:http://meyerweb.com/eric/tools/css/reset/

我希望这会对你有所帮助!


1
是的,谢谢。我确实尝试了Meyer重置,但没有成功。 - Martin Algesten

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接