UIFont的点大小究竟是什么?

mat*_*way 49 fonts objective-c uikit uifont ios

我正在努力准确地理解点大小的UIFont含义.它不是像素,它似乎不是点的标准定义,它们与1/72英寸相关.

我使用-[NSString sizeWithFont:]各种大小的字体计算出像素大小,并得到以下结果:

| Point Size | Pixel Size |
| ---------- | ---------- |
| 10.0       | 13.0       |
| 20.0       | 24.0       |
| 30.0       | 36.0       |
| 40.0       | 47.0       |
| 50.0       | 59.0       |
| 72.0       | 84.0       |
| 99.0       | 115.0      |
| 100.0      | 116.0      |
Run Code Online (Sandbox Code Playgroud)

(我做了[@"A" sizeWithFont:[UIFont systemFontOfSize:theSize]])

并且72.0看点大小,这不是1英寸,因为这是在DPI为163的设备上,所以1英寸将是163.0像素,对吧?

任何人都可以用UIFont术语解释什么是"点" ?即我的方法是错误的,如果我使用别的东西,我会看到有关字体的东西是72点的163像素?或者纯粹是从其他东西定义一个点?

hoo*_*oop 12

字体具有内部坐标系,将其视为单位正方形,其中字形的矢量坐标以任意大小指定,适应字体中的所有字形+ - 字体设计者选择的任何边距.

在72.0点,字体的单位平方是一英寸.字形X字型的ý具有相对于这个平方英寸的任意大小.因此,字体设计者可以制作相对于其他字体显得大或小的字体.这是字体'字符'的一部分.

因此,在72点处绘制一个'A'会告诉您它将是同一字体中36点绘制的'A'的两倍 - 而且实际的位图大小绝对没有其他内容.

即对于给定的字体,确定点大小和像素之间关系的唯一方法是测量它.

  • 所有好的解释,但不是我所看到的.请注意,倍增点大小不会使像素大小加倍,这与您所说的相反.另外,测量的尺寸是我能看到的整个线高,我假设1英寸是指每1英寸72点?我测量的是在iPhone上72点字体大约0.5英寸. (3认同)

Sul*_*han 5

我不确定如何-[NSString sizeWithFont:]衡量身高.它是使用线高还是贝塞尔峰的差异?你用了什么文字?

我相信-[UIFont lineHeight]测量高度会更好.

编辑:另外,请注意,没有一种测量方法返回大小(以像素为单位).它返回大小points.你必须乘以结果[UIScreen mainScreen].scale.

请注意typographic points构造字体和pointsiOS 时使用的区别default logical coordinate space.不幸的是,文档中没有非常清楚地解释这种差异.