为啥 10pt 的字会变成 9.75pt

问题的提出:

为啥在用VisualBasic 画画面,或者用某些工具画报表的时候,会出现画上10磅字保存之后,之际上得到的是9.75磅的字?

理论基础:

1 inch = 72 PostScript points
而 Windows 的默认解析度是 96DPI

结论:

当我们要显示一个10pt的字的时候,需要几个像素呢:

10/72*96 = 13.33(13⅓)。当然我们是无法显示13又1/3个像素的,于是只能显示为13像素。再反推回来:

13/96*72 = 9.75  — 我们的到的实际上是9.75磅的字。

同样,11 磅的字会变成11.25pt, 而9磅的字、10.5磅的字和12磅的字则不会变。

另外,如果改变了Windows的解析度,则上述想象会有不同的表现。

字体大小对照表:

pt @96DPI @120DPI
理论像素数 实际像素数 实际的pt数 理论像素数 实际像素数 实际的pt数
8 10.67 11 8.25 13.33 13 7.8
9 12    12 9 15    15 9
10 13.33 13 9.75 16.67 17 10.2
11 14.67 15 11.25 18.33 18 10.8
12 16    16 12 20    20 12
13 17.33 17 12.75 21.67 22 13.2
14 18.67 19 14.25 23.33 23 13.8
15 20    20 15 25    25 15
16 21.33 21 15.75 26.67 27 16.2

更新:
参考文章:潘石屹与西塞罗,字号的故事