標籤:style blog http color 2014 re
查閱了好多資料都沒有發現有相關的詳細介紹,包括蘋果官方文檔,也是草草帶過。後來是在一個介紹Macbook列印字型的部落格中看到的,受到啟發。
首先說明蘋果裝置繪圖的長度單位可以認為是point,不是磅(pt)的意思。該point是一個邏輯概念,是獨立於裝置的。
圖1.不同解析度螢幕顯示1point
對於傳統常規螢幕,1 point 映射物理螢幕1 pixel。對於Retina的高分屏,1point映射物理螢幕2 pixel。這樣可以統一圖形在同一種類不同型號裝置形的大小。
所以在開發的時候,不區分常規螢幕還是Retina螢幕,在iPhone(3.5 inch)上都是(480 ,360)在Macbook(13 inch)上都是(1280 ,800)。
在實際渲染到螢幕上時候,會有個scale 係數將 point 映射到物理 pixel,在傳統螢幕上factor是等於1,Retina螢幕上是等於2,也就是中為什麼線寬為1 point在Retina螢幕上映射線寬為2 pixel。
對於字型上的磅(pt)轉換到蘋果裝置上的方法。目前還沒有發現直接支援單位為磅的函數。但是可以進行轉換。首先,將pt 和 px單位都統一到英尺
pt/72 = inchpixel/dpi = inch
這樣就可以簡單的進行轉換了
pt * dpi / 72 = pixel
對於傳統螢幕,Macbook螢幕的dpi 是96,iPhone螢幕的dpi 是163。對於Retina螢幕,Macbook螢幕的dpi 是192,iPhone螢幕的dpi 是326。但是對於開發來說,繪製的圖形依然是在以point 為單位
pt * dpi / 72 * scale = point
最後發現,這也是不區分傳統螢幕還是Retina螢幕的。
如果要保證Macbook和iPhone上的實際長度相同,肯定不能用相同的point ,需要通過上述的公式進行換算。還有一點注意的是iPhone模擬器是按照Macbook的dpi來的,而macbook的dpi時低於iPhone的,也就是說Macbook的像素點比iPhone的要大,所以iPhone模擬器要比真機要大。在模擬器上的長度會比實際來的短。