如何檢測大字型?

當人們問這個問題,”我應該怎樣判斷當前處於大字型模式?”,他們實際上問的是,如何判斷系統是否處於一個”特殊的DPI模式”,而不是問”大字型”。

Windows預設使用標準的96 DPI,也即:一英寸包含96個點。換句話說,如果Windows想在螢幕上繪製一根一英寸長的線條,則它會繪製96個畫素點。這就是DPI的含義。

當然了,這條線的物理長度取決於你的螢幕解析度和顯示器的大小。也就是說,這個96 DPI值只是一個名義上的值。

你可以到系統的控制面板中去修改DPI值,可以透過選擇大字型,也可以選擇一個自定義的字型大小。標準的字型是96 DPI,大字型為120 DPI。而自定義字型就是一個自定義DPI的字型。

隨著螢幕顯示技術的進步,高於96 DPI的情況將變得越來越普遍。

應用程式可以透過呼叫GetDeviceCaps來查詢當前系統的DPI設定,如下圖所示:

如何檢測大字型?

上面的程式碼假定了畫素是正方形的,這符合大多數現代顯示器的設計。(你也可以選擇奇數螢幕解析度並獲得非方形畫素,但大多數人會避免使用此類解析度。)在過去,有許多裝置具有非方形畫素。 例如,EGA影片介面卡的畫素高度是寬度的1。33倍。

對於非方形畫素裝置,LOGPIXELSX和LOGPIXELSY度量的值將不同。 在EGA上,如果LOGPIXELSX 度量的值為96,則LOGPIXELSY度量將為72,因為每英寸只有72個垂直畫素。 同樣,非方形畫素裝置的 ASPECTX、ASPECTY 和 ASPECTXY 值也會有些有趣。

我們看這三個值:36 27 45

解釋如下:

ASPECTX為27,ASPECTY為36,則代表4:3的縱橫比,ASPECTXY為45,代表斜邊。

總結

時代變了,到處都是高分屏了,螢幕的解析度也都不是正方形的了。

但是,老大哥的DPI設計,還是可以玩得轉。

最後

Raymond Chen的《The Old New Thing》是我非常喜歡的部落格之一,裡面有很多關於Windows的小知識,對於廣大Windows平臺開發者來說,確實十分有幫助。

本文來自:《How do you detect “Large Fonts”?》

最近我寫了個東西

正如你們所知道的,拓撲梅爾智慧辦公平臺(Topomel Box)是一款綠色軟體,主要面向經常使用電腦的朋友。它提供了各種提升辦公效率的小功能,同時操作上儘可能地簡單方便。

我想:你值得擁有。

如何檢測大字型?