em使用ceil或floor转换为px,css规范在哪里?

时间:2012-11-28 02:13:48

标签: css

我知道em是字体大小的相对大小, 问题是,当font-size * em不是整数时, 像font-size:12px * 1.4em = 16.8px,结果是16px还是17px? 我在哪里可以找到关于此的规格?

1 个答案:

答案 0 :(得分:0)

这里的CSS2.1规范对此进行了描述:http://www.w3.org/TR/CSS21/fonts.html#algorithm

案文内容如下:

  

4.'font-size'必须在UA相关的容差范围内匹配。 (通常,可缩放字体的大小四舍五入到最接近的整个像素,而位图字体的容差可能高达20%。)进一步计算(例如,其他属性中的'em'值)基于计算值'font-size'。

所以回答你的问题:16.8px 可以映射到17px,但最终由客户端UA来决定如何呈现文本。如果显示器具有逻辑子像素(如Apple的Retina显示器,其中1个CSS像素实际上是2x2个真实像素),那么您可以使用非整数像素字体大小。

编辑:我认为我误解了规范,因为现代用户代理能够将文本渲染为任意大小,甚至是非整数像素大小。 CSS2规范可以追溯到1998年,当时计算机上的排版与今天的排版不同(我不相信你可以强迫IE5在12pt和14pt之间渲染文本)。所以我想这不再重要,好像你告诉一个现代浏览器渲染0.5px文本它实际上会给你一个漂亮的模糊blob。