jjgod / blog Random notes by Jjgod Jiang.

pt, px, DPI: 关于长度单位的误解

在印刷排版中,“point”是一个绝对的单位,它等于 1/72 英寸,可以用尺子丈量的,物理的英寸。但在 CSS 中 pt 的含义却非如此,例如我们指定一个字体是 9pt,我们会以为按照 CSS 规范,它等于:

9 * 1/72 = 1/8 inch

这是一个误解,因为我们的显示器被分割为了一个个的像素,单个像素只能有一种颜色 (为了简化,这里暂不讨论次像素反锯齿技术),要在屏幕上显示,必须先把以 pt 为单位的长度转换为以像素为单位的长度,这个转换的媒介,就是 DPI (事实上,这里的所谓的 DPI,是操作系统和浏览器中使用的术语,即为 PPI, pixels per inch,和扫描仪、打印机、数码相机中的 DPI 是不同的概念)。

例如,无论在哪个操作系统中,Firefox 浏览器默认的 DPI 都是 96,那么实际上 9pt = 9 * 1/72 * 96 = 12px。

所以,虽然“DPI”中的“I”和“1pt 等于 1/72 inch”中的“inch”,都不代表物理上的英寸,但这两个单位互相之间是相等的,也就在相乘中约掉了。

那么,真实的物理长度怎么计算呢?请拿出一把尺子,丈量你的显示器的可见宽度 (我这里是 11.2992 英寸),除以横向分辨率 (我这里是 1024 像素),得到的就是每个像素的物理长度。

现在我们可以回答这样一个问题,网页上 9pt 的字体究竟占用了多宽的空间?答案是:

9 * 1/72 * 96 * 11.2992 / 1024 = 0.1324 英寸 = 0.3363 厘米。

有兴趣的朋友可以自己查证一下。


6 Comments

长知识了~

Posted by xxd on 25 February 2006 @ 2pm

[American] printer point 應該是 1/72.27 inch。PostScript point 就是在 TeX 系統上的所謂 big point。也就是說:

PostScript(MetaPost) point = 1/72 inch printer point = 1/72.27 inch

而 TeX 系統的 pt 是指 printer point。這點也是常常會搞錯。

Ref: http://www.oberonplace.com/dtp/fonts/point.htm

Posted by LGJ on 26 February 2006 @ 3pm

字体的宽度是可变的,通常说的9pt、12pt指的是字体的高度。所以楼主算出来的是占用了多“高”的空间。

Posted by Wu Yongwei on 16 March 2006 @ 11am

pt, px, DPI: 关于长度单位的误解…

pt, px, DPI: 关于长度单位的误解…

Posted by weican on 7 May 2006 @ 2pm

没错,确实是说高度.. 准确地说,不是“字”的高度,而是包裹那个字的“box”的高度。

Posted by jjgod on 24 May 2006 @ 5am

[...] pt, px, DPI: 鍏充簬闀垮害鍗曚綅鐨勮瑙 [...]

Posted by wkz0712 » CSS闀垮害鍗曚綅鍜屽瓧浣撳ぇ灏 on 15 May 2007 @ 9pm

Leave a Comment

新增一个页面 Markdown 的一点翻译