Pages

2008年10月2日 星期四

TrueType 中的細明體、新細明體、與標楷體所造成文字破碎的情況

由於自己的論文,需要 pdf library 的輔助,來讀取該檔案格式,所以找來了 Xpdf 這個 open source 來使用,卻發現到當中文字使用微軟細明體、新細明體、或者是標楷體時,會發生文字破碎的清況...如下圖所示:( 我是在 Windows XP上面開發 )


會造成這種情況的原因是,這三種字型檔採取「筆劃組字」的方式產生,是為了因應 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」呢!

相關閱讀


[註一] 在 Windows 上面開發應用程式,顯示字型時,根本沒有字型破碎的困擾,那是因為您開發所用的 API,底層都是 Win32 API 幫你做好好的嘛... :)

[註二] 這是由 Apple 所申請的專利,可以參考 Freetype & Patent

[註三] 轉換成 PostScript 時需注意的事項,可以參考解決 PDF 檔中文字破碎的問題

沒有留言:

 
Blogger Templates