首頁>Club>
8
回覆列表
  • 1 # 使用者5392141213760

    絕大多數的字型都包含一個或者多個Charmap(就是 @梁海 回答中的cmap),它的作用就是把一個字元從它的字元編碼對映到字形索引。一般一個字元的渲染步驟是這樣的:

    載入字型檔案確定要輸出的字型大小輸入這個字元的編碼值根據字型檔案裡面的Charmap,把編碼值轉換成字形索引(就是這個字元對應字型檔案中的第幾個形狀)根據索引從字型中載入這個字形將這個字形渲染成點陣圖,有可能進行加粗,傾斜等變換。注意這裡的傾斜和傾斜字型不同,它只是從演算法上對點陣圖進行變換,與專門製作的加粗字型是不一樣的。你所說的字元編碼,就是透過步驟3裡面的Charmap來查詢對應字形的。常用的Charmap就兩種,一種是Apple Roman編碼的,一種是Unicode編碼的。大部分時候我們用的都是Unicode,Apple Roman是老版本的Mac OS所用的一種只有8bit的字元編碼Mac OS Roman。一般渲染系統也都會優先選擇Unicode的Charmap。具體包含什麼樣的Charmap取決於你的字型。比如Windows內建的宋體就包含Apple Roman和Unicode兩種,雅黑帶了兩個Unicode,Adobe的SourceCode Pro則是帶了兩個Unicode和一個Apple Roman的Charmap。在選擇Charmap時,如果和你輸入的字元編碼不一樣的話,輸出的字形要麼是錯的,要麼就根本找不到對應的字形。參考:想要了解一個字元是如何被計算機渲染出來的,最好的辦法就是找一個字型渲染引擎親手拆開看看。推薦FreeType 2 Tutorial。這裡就算不自己編碼,也能瞭解到它是如何把字元從編碼渲染成字形輸出的。這裡只介紹了字型渲染的流程,詳細的Charmap結構請參考 @梁海的答案。

  • 中秋節和大豐收的關聯?
  • 12v140ah20hr充電時多大電流?