1 pt 的圖形大小與其在屏幕上顯示出的大小之間有什麼關係?

註:此問答只解決 pt 與屏幕顯示實際尺寸之間的關係。涉及 Photoshop 製作文字圖片的部分已分拆至另一個問答:
為什麼 Photoshop 做出的圖片中 40 pt 的文字在電視屏幕上並非預期尺寸? http://www.zhihu.com/question/19851647


這個問題涉及到的背景知識比較多比較雜,但明白了這些背景知識後,這個問題本身非常容易回答。

首先,大家都知道,目前絕大部分顯示器都是基於點陣的,也就是說,通過一系列的小點排成一個大矩形,每個小點顯示不同的顏色來形成圖像,我們把每個小點稱為一個像素 (pixel)。對於一塊具體的顯示器,在一個具體的設置下,總像素的個數是固定的,可以具體數出來,我們把顯示器有多少行多少列像素叫做顯示器的「解析度 (geometry)」,表示方法是「寬度像素個數x高度像素個數」,例如 1440x900。

其次,我們也很容易理解,在同樣的解析度下,每個小點的尺寸仍然是可以大可以小的。同樣是 900 個點,如果每個點 1 毫米,那就是 90 厘米,如果每個點 1 厘米,那就是 9 米。對於一台具體的顯示器,那麼多個點排列起來之後,構成的一個整體的寬度和高度,我們稱之為顯示器的「物理尺寸 (physical size)」,單位是「寬度x高度」,例如 12"x7.5"。

明白了上面兩個概念之後,接下來「解析度 (density)」這個概念就很好解釋了。不同的顯示器解析度不一樣,物理尺寸也不一樣,因此,你用一張一英寸長的小紙條按在屏幕上,能被你蓋住的像素的個數也是不一樣的。我們把一英寸里能包含的像素的個數叫做屏幕的解析度,單位叫 DPI,就是 dots per inch 的縮寫。根據這個定義,我們很容易算出來我們上面提到的這台顯示器的解析度是 120dpi x 120dpi。

好了,明白這幾個概念之後,接下來我要提一個小問題:我想在這個屏幕上顯示一條 5cm 長的線段,該怎麼做?很簡單,5cm 是物理長度,要想在屏幕上顯示,我們需要先把物理長度換算成像素個數。5cm 換成英寸是 1.9685 英寸,然後根據屏幕的解析度,每英寸對應 120 個像素,因此 5cm 對應的就是 236 個像素。我們在這台顯示器上畫一條 236 個像素的線段,它就正好是 5cm 了。

回到提問者的問題,pt 是一個長度單位,它的含義是 1/72 英寸。因此,要得出 pt 在不同顯示器下對應的像素個數,只要採用和我們之前的例子相同的方法就行了。那麼,顯示器的 DPI 如何獲取呢?很簡單,顯示器的製造者顯然是知道顯示器的物理尺寸的,比較新的顯示器都會提供 EDID 技術 [1],可以讓製造者把顯示器的物理尺寸信息直接存在顯示器裡面。如果你的電腦願意的話,可以直接向顯示器提問:「你有多大?」然後顯示器就把自己的物理尺寸告訴電腦,之後電腦就可以根據屏幕解析度和顯示器的尺寸計算出一個合適的解析度,之後的顯示就可以按照這個解析度來了。

看到這裡,提問者的問題已經圓滿解決了么?理論上是解決了,可是我們都知道,理論上,理論和實際沒有差異;實際上,理論和實際差異很大。我們居住的世界是不完美的,因此,我們前面說過的所有屏幕顯示的計算方法,其實僅僅只存在於理想的世界中,真實的世界並不是這樣的。

EDID 技術是最近幾年才出現的,之前的顯示器並沒有這項技術。因此,在那個年代,電腦是無法向顯示器提問說「你有多大」的。為了獲取顯示器的真實尺寸,我們唯一的辦法是,讓用戶用尺子自己量出來,然後輸進電腦里。譬如,在 X11/Xorg 的配置文件中,用戶就可以通過 DisplaySize 參數來告訴電腦自己的顯示器真實尺寸 [2]。

對於絕大部分普通用戶而言,買到顯示器之後要自己量出尺寸來輸進電腦,這簡直是匪夷所思的行為,絕對無法接受。既然絕大部分用戶都不願意接受這樣的操作,因此電腦也就無法獲得顯示器的真實尺寸了,只能根據市面上常見的顯示器的解析度來,硬性規定一個默認值。在 Windows 下,默認的解析度是 96dpi [3]。由於這個值是人為硬性規定的,並不是根據真實的顯示器尺寸算出來的,因此,當我們要求電腦「顯示一條 5cm 長的線段」的時候,我們也就不能指望屏幕上顯示出來的線段真的就是 5cm 長了。譬如前面我們提到的那台顯示器真實解析度是 120dpi,但系統強行認為它是 96dpi,因此顯示 5cm 的線段的時候只會使用 189 個像素,這明顯就會比真正的 5cm 需要的 236 像素要短不少。今天的大部分筆記本顯示器都高於 96dpi,因此在絕大部分筆記本電腦上,顯示出來的尺寸都是小於真實尺寸的。

提問者所關心的顯示器也是類似的情況,在 55 inch,1080P 的顯示器下,解析度是小於 96dpi 的,強行按照 96dpi 顯示之後,顯示尺寸就會比真實尺寸要大很多。當然,對於投影儀、電視機等遠距離觀看的顯示設備,如果我們讓它按照真實解析度來顯示的話,使用起來會非常不方便,因此我們往往也希望它不要按照真實解析度來顯示。

那麼,對於台式機和筆記本而言,現在 EDID 技術已經非常普及了,現在我們可以讓所有的顯示器都按照真實尺寸來顯示了么?的確,這是我們以後需要努力達到的一個目標,但是現在還不行。由於之前那麼多年裡,絕大部分顯示器都是固定在 96dpi 的,因此大部分軟體開發者都不知道如何讓自己的軟體能夠自動適應不同的解析度,只會為 96dpi 的系統開發軟體。當我們把系統解析度改成非 96 的值的時候,很多軟體的窗口就會比例失調,變得醜陋不堪,甚至文字殘缺,窗口變形 [4]。要想真正實現「屏幕上的 5cm 就是真的 5cm」,我們需要等大部分開發者都慢慢意識到讓程序自動適應不同解析度的重要性,並把目前還不規範的程序一個個慢慢修正過來。總之,我們還有相當長的一段路要走。

最後我想用網上流傳的一個小故事來結束我的這篇文章:

淘寶mm的新丈量法

前天在淘寶上淘東西,看中一款耳環。
問:55mm是多長啊?
賣家mm:你等等啊。
賣家mm:。。。。。。。。。。。
片刻,問:好了嗎?
賣家mm:噢,就是前後點號的距離那麼長。

很多人都把這個小故事當作笑話來看,其實,這難道不是我們未來需要去努力達到的目標么?

[1] http://en.wikipedia.org/wiki/Extended_display_identification_data
[2] http://www.x.org/archive/X11R6.8.1/doc/xorg.conf.5.html
[3] http://www.lawfirmsoftware.com/support/change_dpi_settings_xp.htm
[4] http://www.dauntless-soft.com/helpdesk/issue_view.asp?ID=15692CATE=8


我老覺得自己答過一個類似的問題,但因為記得畢竟不完全一樣,又一時沒有搜到,所以只能再寫一些了。

@滇狐 講得很清楚,我再補充一些整體的邏輯:

  • 關於「pt」這個單位:全稱「point」,中譯「點」(Microsoft Office 里譯為「磅」)。這是一個物理單位,它描述的是一段實際的長度,常用於字體排印(typography)與平面設計,比如設定字型大小和行高。今天的通用標準是 1 pt = 1/72 inch(1 inch = 2.54 cm),這個標準又稱「PostScript point」。我們使用 point 時就是希望直接控制輸出圖形的實際大小(一般是通過印刷)。Point 和厘米、毫米什麼的單位沒有本質區別,只是長度不同。為避免混淆,下文提到「point」時我都直接寫英文,不寫中譯。
  • 關於「dot」:「DPI」這個單位中的「dot」一般也翻譯為「點」,但此點(dot)非彼點(point)。Dot 指的是採樣或輸出的最小單位,它很抽象,在不同的設備里會和不同的具體事物關聯起來。比如:掃描儀的 dot 就是它能掃描(採樣)出的最小一點色彩信息,這些採樣點集合起來然後轉換為對應的像素,一般不是一對一的;印表機的 dot 就是它能印出的最小墨點,需要許多個墨點組合起來才能表現出數字圖片中的一個(虛擬的)像素;而有時我們用 DPI 來描述顯示器時,dot 就是顯示器的物理像素(實際的像素)。
  • 關於「DPI」與「PPI」這一對常用單位:「DPI(dots per inch)」描述的是每英寸有多少個採樣點;而「PPI(pixels per inch)」描述的是每英寸有多少個像素。因為對於數字圖片來說,採樣點就是像素,於是在電腦里 DPI 和 PPI 經常混用,這造成了一些混淆,但它們的目的都是把虛擬的點/像素和實際的尺寸聯繫起來(比如我們常用 72 PPI、150 PPI 或 300 PPI)。
  • 當我們畫了 36 pt 長的線段,屏幕上會怎麼顯示呢?這是重點。可以這樣理解:
    1. 首先通過「1 pt = 1/72 inch」這個關係來把 36 pt 轉換為基本的物理單位 inch——於是得到 0.5 inch。
    2. 然後根據當前環境的 DPI/PPI 參數來決定這 0.5 inch 應該輸出到顯示器為多少像素(因為在顯示器中,一個 dot 也就是一個像素),這裡就有變數了:Windows 默認使用 96 PPI,而 Mac OS X 默認使用 72 PPI,@滇狐 說的 EDID 技術影響的也是這個參數。於是 Windows 會把 0.5 inch 顯示為 48 px,而 OS X 會把 0.5 inch 顯示為 36 px(原來是 36 pt,現在是 36 px,小心別暈;當年蘋果公司選擇用 72 PPI 主要就是因為這樣能讓屏幕像素和電腦里的 point 一一對應,這樣對設計師很有利)。
    3. 再往後一步就是顯示器自己的事情了,這 48 px 或 36 px 到底在顯示器上有多長,完全取決於顯示器的像素密度(當然,如果顯示器沒有點對點顯示,就肯定有縮放啦)。我們一般用 PPI 來描述顯示器的像素密度(當然這裡的像素是實際的、物理的像素),也可以用 DPI。計算方法請參考 @滇狐 的答案。
  • 我們查看一個圖像時,如果縮放到 100%,一般是讓圖像像素與屏幕像素一一對應來顯示;如果選擇縮放到所謂的「實際大小」,就會根據圖像的 DPI/PPI 元數據來決定圖像的實際尺寸,然後按照上面說的方法把實際尺寸映射到屏幕像素去。

簡單點吧。
1pt=1/72英寸。
那麼搞清楚1英寸在顯示器上由多少個像素組成很重要。這個值就是屏幕的ppi。
iPhone的ppi就是326。
那麼在iPhone上。1pt = 326/72 = 4.5個像素。

pt是個物理標量,不管在什麼顯示設備上其物理尺寸都是一樣的。


和屏幕沒有關係 只和文檔解析度顯示解析度有關
同一個文檔,屏幕解析度越高則顯示越精細,文檔實際大小還是原來的大小只是相當於拿了個放大鏡在看,看得更精細了,顯示更多的細節了。
pt和屏幕的關係就是沒關係,只和文檔解析度有關係,
1、用photoshop新建一個web文檔隨便輸入一些文字,字體選擇宋體大小設為14px(pt),字體消除鋸齒設為無,然後更改你顯示器解析度,800*600,1024*768,1280*720...看看效果,文檔尺寸還是沒變,只是解析度高的話看起來更舒服,所以pt大小和屏幕沒關係,只是你解析度高就可以看到更多細節,解析度稍低就看起來粗糙。
2、更改文檔解析度,PS快捷鍵:ctrl+alt+i 把72 改成1150或200再看效果,是不是發現文字超大了,但是字體還是14px/pt 所以文檔解析度才是決定文檔在屏幕的最終顯示尺寸要想做一個常用在電腦屏幕顯示的圖,就按72dpi來設置,要是做宣傳單或者戶外廣告的實物設計就按150dpi 以上或更高來設置
總結:屏幕就相當於一個顯微鏡解析度越高顯示的細節更多,看起來就更清晰舒服,pt和屏幕的關係是由文檔解析度(dpi)決定的文檔解析度高就相當於拿放大鏡看東西一樣的原理,所以按您的需求來選擇,在電腦上顯示的就設置72dpi,需要列印或者印刷出來的就選擇150以上dpi


pt是絕對長度單位。1/72寸。但是這個量更多用在列印上。你選擇不同的印表機,但是只要字體的pt設置對了就不會有問題。

在顯示的時候,是要根據操作系統在當前環境下的設置而定的。


我覺得上面的說法都是有問題的,不嚴謹的!
首先,所有的顯示器都有點距、排列等物理因素,所以成像效果有區別,然後,所有顯示器出廠都有默認的解析度,然後通過EDID傳給計算機,然後計算機默認自動給你分配這個DisplaySize最適合的原始解析度。這就是 @滇狐 回答的部分
然後, @梁海說的「Windows Mac分別分配默認PPI」是有問題的,Windows真正分配的是默認DPI,而不是PPI,不同的DPI可以讓文字顯示的大小不一樣。

--------------------------

--------------------------
DPI、PPI到底是用來幹嘛的?其實DPI是在PPI之上做的一層抽象,就是像素之上的顯示矩陣抽象,我們可以在物理解析度750(橫) x 1334(縱)而且是4.7英寸的顯示屏,此時PPI(每個英寸能顯示的像素為326,因此PPI就是326。
然後這個設備系統運行後,上面模擬顯示一個圖形,這個圖像假設由375(橫)x 667(縱)個點組成,讓這個圖像放大鋪滿整個4.7寸的屏幕,這樣,這個圖像呈現在顯示屏上的效果DPI(沒個英寸顯示的點的個數為)163,此時它的DPI就是163。
這段話我說的例子,就是iPhone6/6s的用例!

要想更詳細,請在Xcode寫一段調用UIScreen獲取的DPI上面獲得數據以得知你的設備的實際屏幕橫縱點的數量,然後再按公式除大小尺寸以測量。

要想更詳細,請在Xcode寫一段調用UIScreen獲取的DPI上面獲得數據以得知你的設備的實際屏幕橫縱點的數量,然後再按公式除大小尺寸以測量。
我是從開發者、系統實際參數與硬體設備參數進行證明,有疑問者歡迎板磚。


首先,捋一捋問題;

  • 屏幕多大 ? 屏幕解析度是多少 ?
  • 文檔製作和顯示的軟體和硬體是否相同 ?
  • 顯示過程有沒有軟縮放或硬縮放 ?
  • 是否為遠距離觀看設備 ? 如投影機,戶外 LED 廣告看板。
  • 在屏幕上顯示時文擋中的 1 pt 物件是點陣圖還是矢量圖或文字 ?
  • 軟體是否對屏幕尺寸做過 1:1 校準 ? (如下圖,以CorelDRAW為例)

以上這些都跟輸出尺寸有關,所以答案應該是未知。隨便舉個例吧,將文件用投影機打出來,前後挪動投影機打出不同尺寸的畫面,尺寸是多少 ? 沒錯,是未知 !


看了一堆回答 都很複雜。
一句話,pt並非是屏幕上的單位,屏幕上只有像素。


大家都答得太複雜,1pt的字型大小,在設置正確的情況下,任何一個屏幕上的顯示效果都應該是一樣大的(用尺子去量)。
pt就是物理尺寸單位,1PT=1/72英寸,1英寸=25.4毫米
1PT=1/72英寸=0.35277777毫米


PS:設置正確的意思是,Device pixel ratio必須設置正確
再PS:android設備建議字體使用sp作為單位以保證字體的絕對尺寸在所有設備上一致,ios直接設置字型大小單位為pt就能夠保證效果。


推薦閱讀:

TAG:解析度 | 顯示器 |