1

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

4

1 回答 1

0

它在此处的 CSS2.1 规范中进行了描述:http: //www.w3.org/TR/CSS21/fonts.html#algorithm

案文如下:

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

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

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

于 2012-11-28T02:20:09.367 回答