Xf2、Freetype2、Fontconfig 的區別
細明體和 Freetype2 有什麼關係呀?
(新)細明體、標楷體使用 bytecode 組字法,與一般的 TrueType 格式不一樣,一般的 TrueType 是存放「筆劃」,所以字型引擎只要依照筆劃指引,就可以繪出字形,而 bytecode 則是一些虛擬指令(類似 java 的虛擬指令),這時候,字型引擎就必須化身為一個解譯器,來解釋並執行這些虛擬指令,就像 JVM 一樣,bytecode 的好處是減少字型檔案的大小。
bytecode 有三個部份為 Apple 專利,正是因為這個緣故,freetype2 預設並未打開這個 bytecode 解譯功能,所以當遇到了 bytecode 組字的字型時,就會不正常(破碎),幸好此類字型不常見,有個好消息是:freetype unstable 版已經避開了 Apple 專利部份,而且預設也是開啟 bytecode 解譯功能,可見專利問題已解決了(猜測),所以才會預設開啟。
Fontconfig 部份
1、除了中文字型名稱(嚴格來說,應是非英文字型名稱)的修改外,還有容許 CJK 漏字 1%,以及增加 CJK CharMaps,以支援較早期沒有 Unicode 的字型。
2、對系統的 fonts.conf 做了少需修改。
如果您對中文字型名稱沒有需求,小弟還是建議還是更新了吧,避免一些麻煩。
Xft2 部份
1、增加控制內嵌 bitmap 選項。
2、模擬粗體。
3、等寬字英文變寬問題。
4、AA 與非 AA 混雜造成字形糊掉問題,就是您所謂的"沙沙文字"。
Freetype 部份
1、autohint 採用日本 Akito 的 Patch。
2、啟用 gamma table,並修改了 gamma 值,讓 AA 狀態的字型更清楚,但 hinting 必須開啟,若要讓字型更細,則必須開啟 autohint,這都在 fonts.conf 中加以描述,所以小弟才建議 Fontconfig 也要更新,不單只是字型名稱需求而已。
3、啟用 bytecode 解譯功能。
Xf2 和 Freetype2 到底有什麼關係呢?
Freetype2 是字型引擎,被動地等待應用程式呼叫,而 Xft2 只是應用程式的一種,也就是說,只要您了解 Freetype2 提供的 API 函數、資料結構、模組,您事實上也可以得到 Freetype 回覆的字型資料,進而繪製在螢幕甚至是報表,Xft2 就是做類似的事情,只不過 Xft2 不是獨立的應用程式,它是一種介於應用程式與 Freetype2 之間的橋樑,它提供更高階 API 介面給應用程式開發者,讓程式開發人員不必了解複雜的 Freetype2,Xft2 可以節省程式設計很多時間。

0 Comments:
Post a Comment
<< Home