以下是我的猜测
三个长度单位都根源于人眼的最小可视角度,根据这个角度和目标距离确定最小可视颗粒度尺寸。人眼的最小可视角度是不变的,目标距离越远,则这个颗粒度尺寸就越大,否则人眼会分辨不了。比这个颗粒度尺寸小一个数量级的度量单位没必要定义,因为人眼看不见,用不到
pt
印刷品实物的颗粒度尺寸。这是一个实际的绝对尺寸,因为预定了印刷品离人眼的距离,也就是我们看书的距离
px
css定义的颗粒度尺寸
px并不是像素
dp
Android定义的颗粒度尺寸
px与dp的区别
可以认为css和Android定义的人眼的最小可视角度是一致的,比如0.04度(注意,这是我大致预估的数据,包括后面的0.2毫米等,用于类比举例,非真实数据)
由于Android屏幕大体固定位于眼球前面比如30厘米的位置,所以满足这个最小可视角度的颗粒度尺寸可能固定在0.2毫米左右,也即我们可以把1dp设定为0.2毫米左右
而css用于电脑类屏幕,和眼球的距离可能在40厘米至80厘米之间,那么这个0.04度的最小可视角度对应的颗粒度就在0.2毫米至1毫米之间,也即1px可以设定在0.2毫米至1毫米之间,根据屏幕距离调整
pt与px的关系
严格说来没有关系
假定电脑屏幕与人眼固定距离(这意味着px的尺寸真实物理固定),且屏幕力求全尺寸显示在该距离上的印刷品时,此刻可以近似转换
参考资料
https://www.w3.org/Style/Examples/007/units.en.html 详细解说了px是一个magic单位
https://www.w3.org/Style/Examples/007/units 中文版本
http://www.w3cschool.cn/cssref/css-units.html 说明了“px实际上是一个按角度度量的单位”