关于分辨率和字体,若要深入研究的话,恐怕得花上不少时间。在此仅对于iOS中的字体情况做个小概括。
首先看:
(1)同样磅数的字体,在不同大小的屏幕上,他们的物理大小一样吗?例如都是16磅的系统字体,在一英寸上,iPhone5,iPhone7,iPhone7 plus显示的文字个数一样吗?
UIFont *font = [UIFont systemFontOfSize:16];
(2)为什么PS中设置为72ppi时,在开发时,在@2x屏幕上需要将字体的磅数除以2,在@3x屏幕时需要除以3。
要解答上述两个问题,需要弄清iOS中的字体磅数Size到底是什么东西。
在iOS中,font的size其实不同于印刷行业中的磅数。
印刷业中,
1 inch = 2.54cm = 25.4 mm = 72pt
1pt(磅) = 1 / 72 英寸 ≈ 0.35mm
但是对于iOS来说,字体的1个单位大小对应于1个逻辑像素,也就是一个设计点。下文中暂且沿用“磅数”来称呼iOS中的字体单位大小。
回到最初的两个问题
(1)同样磅数的字体,在不同大小的屏幕上,他们的物理大小是不同的。plus机型大于其他机型,但是这个差值不是太大。
例如一个16磅字体的文本,原来 iPhone6 一英寸长度的屏幕里可以显示的文字个数是:163/16 约等于10个,这里假设每个文字之间没有间隔。
而6 plus 则是 154/16 约等于9个,也就是每个字所占的物理长度变大了。
iPhone6,1英寸有163个逻辑像素
iPhone6 plus,1英寸有154个逻辑像素
(2)PS中的ppi表示的是1英寸长度的图像包含有多少像素,它实际上跟打印的关系较大。
72ppi则表示一张72像素的图像,当它打印到真实的纸张中,打印出来的就是一副2.54cm的照片。
在ps当中,如果设置ppi为72(默认),则对于文本的字体,1pt = 1px(因为72ppi的意思就是1英寸72像素,而1pt文本 = 1/72 英寸,所以相等),要是在代码中直接使用这个pt大小作为文本的size,最终的文本内容就会偏大。所以这时候需要由美术给出字体的pt大小(也是像素大小),然后交由程序自己处理。
如果设计图是4.7寸的,也就是750*1334像素的,则程序把pt大小除以2,就是font的大小。
如果设计图是5.5寸的,也就是1242*2208像素的,则程序把pt大小除以3,就是font的大小。