會造成這種情況的原因是,這三種字型檔採取「筆劃組字」的方式產生,是為了因應 Windows 3.x 那的年代,記憶體與硬碟昂貴所造就的技術,其目的就是減少字型檔的大小,該技術是由華康所發展出來,不過這種老舊的東西,微軟至今仍然在使用,搞不懂為何不捨棄它。所以說,在 Mac OS X 以及 Linux 上,瀏覽這些文字,就會像上圖那樣。[註一]
在新細明體更新套件 1.0 版 - 字型檔案 WinXP 與 Mac OS X 都適用喔!這一篇文章有提到微軟所提供的「PMingLiU Update Pack.msi」更新套件,用來取代原先的字型(此字型檔大小為 2X MB,比原先系統預設的 8MB 大的多,且採用 Unicode 3.x 的標準),但不知為什麼使用一陣子後就捨棄了,所以又繼續沿襲這樣舊字型了。
像一些 open source,如:Xpdf,在文字的處理上,並不是直接呼叫系統提供的 API 來完成,而是自己讀取字型檔→讀取文件中某個文字的編碼→進而從編碼的計算來得到該文字的 glyph data→交由顯示卡描繪。因此,當面對到需使用該字型檔的時候,就會造成文字殘破不堪,但不是因為他們處理不來,而是要面對 patent issue [註二],所以這些 open source 預設是不會開啟 hinting,當然,如果你想開啟它,只要在 Freetype2 中找到 /include/freetype/config/ftoption.h,將 #define TT_CONFIG_OPTION_BYTECODE_INTERPRETER 註解拿掉,並重編 Freetype 與 Xpdf 即可。
對於一般使用者,如果遇到內嵌這種字型的 PDF 文件該怎麼辦,第一種方式就是用 Adobe Acrobat Reader 來開啟,但隨著該軟體日愈強大,啟動瀏覽的速度讓人不敢恭維,所以第二種方式就是,先將該 PDF 文件利用列印的方式轉換成 PostScript 的格式,然後再透過,Adobe Distriller 將 PostScript 轉換成 PDF,如此一來,這些內嵌的字型檔,就會全部更換成 Adobe 的 Type1 字型了。[註三]
如果你是一位 Windows 死忠的開發者(使用者),那你也毋須擔心,反正微軟都幫你做得好好的。否則,你就該捨棄這種「筆劃組字」的字型,因為其他平台也不會有這種字型,反而用系統預設字型來呈現,導致失真;就算有安裝,顯示的結果也會如上圖所示。其實還不少人強調「捨棄 TrueType、擁抱 OpenType」呢!
相關閱讀
- 破碎的細明體研究院
- TTF bytecode interpreter
- TrueType from Wiki
- FontConfig
- 6.12 mingliu - 微軟細明體 TrueType 字型
- IT中文環境的血淚史(個人覺得這篇文章寫的很棒)
[註一] 在 Windows 上面開發應用程式,顯示字型時,根本沒有字型破碎的困擾,那是因為您開發所用的 API,底層都是 Win32 API 幫你做好好的嘛... :)
[註二] 這是由 Apple 所申請的專利,可以參考 Freetype & Patent
[註三] 轉換成 PostScript 時需注意的事項,可以參考解決 PDF 檔中文字破碎的問題
沒有留言:
張貼留言