查閱了好多資料都沒有發現有相關的詳細介紹,包括蘋果官方文檔,也是草草帶過。後來是在一個介紹Macbook打印字體的博客中看到的,受到啓發。 函數
首先說明蘋果設備繪圖的長度單位能夠認爲是point,不是磅(pt)的意思。該point是一個邏輯概念,是獨立於設備的。字體
圖1.不一樣分辨率屏幕顯示1pointspa
對於傳統常規屏幕,1 point 映射物理屏幕1 pixel。對於Retina的高分屏,1point映射物理屏幕2 pixel。這樣能夠統一圖形在同一種類不一樣型號設備上圖形的大小。3d
因此在開發的時候,不區分常規屏幕仍是Retina屏幕,在iPhone(3.5 inch)上都是(480 ,360)在Macbook(13 inch)上都是(1280 ,800)。code
在實際渲染到屏幕上時候,會有個scale 係數將 point 映射到物理 pixel,在傳統屏幕上factor是等於1,Retina屏幕上是等於2,也就是上圖中爲何線寬爲1 point在Retina屏幕上映射線寬爲2 pixel。blog
對於字體上的磅(pt)轉換到蘋果設備上的方法。目前尚未發現直接支持單位爲磅的函數。可是能夠進行轉換。首先,將pt 和 px單位都統一到英尺開發
pt/72 = inch
pixel/dpi = inch
這樣就能夠簡單的進行轉換了文檔
pt * dpi / 72 = pixel
對於傳統屏幕,Macbook屏幕的dpi 是96,iPhone屏幕的dpi 是163。對於Retina屏幕,Macbook屏幕的dpi 是192,iPhone屏幕的dpi 是326。可是對於開發來講,繪製的圖形依然是在以point 爲單位macbook
pt * dpi / 72 * scale = point
最後發現,這也是不區分傳統屏幕仍是Retina屏幕的。博客
若是要保證Macbook和iPhone上的實際長度相同,確定不能用相同的point ,須要經過上述的公式進行換算。還有一點注意的是iPhone模擬器是按照Macbook的dpi來的,而macbook的dpi時低於iPhone的,也就是說Macbook的像素點比iPhone的要大,因此iPhone模擬器要比真機要大。在模擬器上的長度會比實際來的短。