可攜式檔的計量
下錶針對需要可攜式檔和允許應用程式擷取它們的函式,指定最重要的字型計量。
函式 | 計量 | 用途 |
---|---|---|
EnumFontFamilies | ntmSizeEM | 擷取設計計量;轉換成裝置計量。 |
GetCharABCWidths | ABCWidths | 字元在邊界的開頭和結尾、圖片邊界和其他中斷點的精確位置。 |
GetCharWidth32 | AdvanceWidths | 字元在一行上的位置。 |
GetOutlineTextMetrics | otmfsType | 字型內嵌位。 |
otmsCharSlopeRise | 斜體字型游標斜率的 Y 元件。 | |
otmsCharSlopeRun | 斜體字型游標斜率的 X 元件。 | |
otmAscent | 行距。 | |
otmDescent | 行距。 | |
otmLineGap | 行距。 | |
otmpFamilyName | 字型識別。 | |
otmpStyleName | 字型識別。 | |
otmpFullName | 字型識別 (通常是系列和樣式名稱) 。 |
otmsCharSlopeRise、otmsCharSlopeRun、otmAscent、otmDescent和OUTLINETEXTMETRIC結構的otmLineGap成員會縮放或轉換,以對應到目前的裝置模式和實體高度 (,如NEWTEXTMETRIC結構的tmHeight成員所指定) 。
當應用程式必須選取相同的字型時,字型識別在這些實例中很重要,例如,當檔重新開啟或移至不同的作業系統時。 當應用程式要求完整名稱的字型時,字型對應程式一律會選取正確的字型。 系列和樣式名稱會提供標準字型對話方塊的輸入,以確保選取列已正確放置。
otmsCharSlopeRise和otmsCharSlopeRun值是用來產生字型主要斜體角度的近似值。 針對典型的羅馬字型, otmsCharSlopeRise 為 1, 而 otmsCharSlopeRun 為 0。 若為斜體字型,這些值會嘗試以逆時針方向 (垂直) ,來近似字型主要斜體角度的正弦和余弦值;請注意,直立字型的斜體角度為 0。 因為這些值不會以設計單位表示,所以不應該轉換成裝置單位。
字元放置和行距計量可讓應用程式計算可跨螢幕、印表機、型別器,甚至是平臺移植的裝置獨立分行符號。
執行與裝置無關的頁面配置
- 將所有設計計量標準化為通用超高解析度 (UHR) 值 (例如 65,536 DPI) ;這可防止舍入錯誤。
- 根據 UHR 計量和實體頁面寬度計算分行符號;這會產生文字資料流程內行的起點和結束點。
- 以裝置單位計算裝置頁面寬度 (,例如圖元) 。
- 使用步驟 2 中計算的分行符號,將每行文字放入裝置頁面寬度。
- 使用 UHR 計量和實體頁面長度來計算分頁符號;這會產生每頁的行數。
- 以裝置單位計算線條高度。
- 使用步驟 5 中的每一頁行和步驟 6 的行高度,將文字行放入頁面。
如果所有應用程式都採用這些技術,開發人員幾乎可以保證檔從一個應用程式移至另一個應用程式會保留其原始外觀和格式。