浏览器如何处理小数像素或百分比的 font-size

在移动端通常使用rem / vw等适配,但对于字体可以看到很多教程都推荐使用px,甚至是需要偶数像素,最后根据设备的dpr来调整倍数。

所以为什么? 字体不是矢量吗,为什么?

字体当然是矢量,但是你的显示器可是由一个个像素点组成的。 例如字母A,再不做任何处理直接显示的话会显示成这样。 cleartype13-1.gif

虽然显示器是一个个像素点,但一个像素点实际上由三个竖直的“子像素”组成:一个红色,一个绿色和一个蓝色(RGB)。 所以我们可以将使用一定算法来基于子像素进行渲染,来让显示效果更佳平滑。 cleartype16.gif 如上图,亚像素渲染仅仅是增加水平方向分辨率。

现代浏览器能够支持精度为10^6的px数值。

css值处理

  • 收集声明值
  • 级联产生级联值
  • 指定值
  • 计算值(相对单位如rem,vw必须乘以相对大小,百分比换算,url换成绝对)
  • 使用值
  • 实际值(做了子像素渲染之后的实际宽度)

使用值和设备有关,通常情况显示设备只能显示一像素的 我们用调试工具只能看到使用值,浏览器没用暴露实际值的接口。

需要注意的一点是:浏览器对小数的取舍不同会影响使用float布局的元素

这种方式改变了一定的渲染尺寸,单真实占据的空间依旧是原始大小。

Licensed under CC BY-NC-SA 4.0