Linux中文字型的轉換與內嵌(轉)

ba發表於2007-08-11
Linux中文字型的轉換與內嵌(轉)[@more@]·不論是 Postscript 檔案或 PDF 檔案,都可以直接內嵌所需的字型,可以只提示所需的字型名稱與每個字在字型檔案中的編碼索引等。後者的檔案大小當然比前者來得小,但前提是檔案內所使用的字型名與字型規格要有一個通用的標準,如此該份檔案才能在各種環境下閱讀與列印。故一般只包含 ASCII 或 ISO8859-1 文字的 Postscript檔案是不內嵌字型的,但是一份中文檔案在目前常見的情況下是必須內嵌字型的,其原因正是目前還沒有通用的中文字型與規格。

·在早期 (也許 PDF 格式尚未問世的時候),用做內嵌的中文字型來源是一種名為 HBF的點陣字型,當時有許多程式可以將 HBF 字型轉換成 Postscript 可以使用的格式,然而這類的點陣字型解析度有限,故內嵌在 Postscript 檔案中往往不夠美觀,特別是當我們要做有限度的文字縮放時更是慘不忍睹。後來,由於 TrueType 字型逐漸普及,同時可以處理 TrueType 字型的引擎 -- freetype 函式庫的問世,許多基於該函式庫的 TrueType 字型轉換程式一一開發出來,使得它成為 Postscript 與 PDF 內嵌字型的最重要來源。內嵌了 TrueType 轉換字型的檔案不但比起過去要美觀許多,且由於 TrueType 本身就具有可縮放的特性,故我們可以輕易產生高解析度的轉換字型,使得檔案在有限度的縮放下仍不失真。同時由於文鼎公司對自由軟體世界的支援,捐贈了兩套 TrueType 中文字型供大家自由使用,讓我們在中文檔案輸出問題上得以徹底解決。

·最佳的解決方案仍然是希望以不需內嵌中文字型的方式,其優點除了可以讓輸出的檔案檔變小以外, 同時還可以保證在任何尺度上的縮放而不失真。由於內嵌在檔案中的字型在很多情況下是將 TrueType 字型轉成點陣字型之後,才進行內嵌 (例如在 CJK-LaTeX 所編譯的檔案中內嵌了由 TrueType 轉成 PK 的點陣字)。僅管由轉換過來的字型有相當高的解析度,但再高的解析度也是有限的,故在做大尺度的縮放時仍然會失真。要做到真正不內嵌中文字型於檔案中,有許多工作要做,其中包括:

1. 要有一套統一的字型名稱與規格: 這可能是最令人頭疼的部分,因為這裡卡到了授權問題。由於 Postscript 與 PDF 檔案格式是 Adobe 公司開發的,故其所用的字型名稱都會灌上 Adobe 之名,而這些名稱是否能在自由軟體世界中,以自由軟體的遊戲規則來執行,將會是個問題,其中尤以 PDF 最為嚴重。同時,在定這些名稱與規格時,我們不能關起門來自己定,必須同時與許多團體談,可能包括 Adobe 公司、TeX/LaTeX 開發團隊、Ghostscript 開發團隊、甚至其他與排版、字型相關的計劃與 商業公司等。

2. 要有一個字型的來源: 這一點在現階段已有初步成果,目前我們已有將 TrueType字型轉換成 Postscript 所需的 Type1 字型的工具程式,例如 ttf2pt1 或 chpfb,ttf2pfb 等。除此之外,另外還有一套稱為 t1lib 的函式庫,可以用來進一步處理 Type1 字型,例如將字縮放、旋轉,或將它轉換成點陣的格式以用於其它的用途 .... 等等。

3. 如果我們有了 Type1 的字型,我們還可以進一步地將它合成 Type0 的 CID-Keyed字型,可用於 Postscript 與 PDF 的檔案中。

4. 我們的檔案轉換引擎: Ghostscript 要能處理多位元組編碼、並利用這些字型:這一點目前也正積極開發中,例如下一代的 Ghostscript 就有處理多位元組編碼的能力,除了迎接未來的中文 Type1 字型以外,它還內含了一個可直接使用TrueType 字型的模組,可以做到不需要字型的內嵌,就可以使用 TrueType 字型來顯示檔案,其原 理是將 TrueType 字型模擬成 Type0 CID-Keyed 字型來用。但這可能會面臨可移植性 的問題,萬一將此檔案拿到其它沒有安裝此 TrueType字型的系統下就無法讀了。因此,它目前也同時在開發直接內嵌 TrueType 字型的技術,做為因應此問題的配套措施。

中文 Postscript 與 PDF 檔案的產生

·目前較通用的純文字檔案轉 Postscript 格式的程式為由 python 語言所寫成的 bg5ps程式,它所產生的 Postscript 檔案採內嵌中文字型的方式,而中文字型的來源即為TrueType 字型。

CJK-LaTeX

· 是一套功能相當強大的幕後排版系統,它使用類似程式語言的方式,來格式化並編排檔案,並配合 Postscript 的輸出,可以輕易達到高品質檔案的輸出要求。特別是它容易處理數學符號的特性,使得它特別適於學術檔案、書籍、出版的排版工作。要讓 LaTeX 能處理中文,必須在 LaTeX 系統上額外加裝一套 CJK-LaTeX 的宏。顧名思議,此宏可以付與 LaTeX 處理中文、日文、韓文等編碼系統的能力,而它也漸漸成為 LaTeX 的標準之一。而它最後在產生 Postscript 檔案時,是採用內嵌中文字型的方式,其字型來源也是 TrueType。它利用 freetype 函式庫的衍生工具 ttf2tfm、ttf2pk 將 TrueType 字型轉換成 TFM 與 PK 點陣字型,前者用於前段的排版工作,後者則用於最後的字型內嵌。

LaTeX 的外衣 -- LyX

LyX 是一個以 LaTeX 為基底的一個圖形化排版系統,讓我們不必須記一大堆 LaTeX的排版指令,可以直接視覺化地在視窗內編排我們的檔案,而最後的排版輸出才交由LaTeX 處理。它的中文支援目前正慢慢發展中,包括支援 XIM 協議,使得我們可以用 XIM server 輸入法程式直接在它的視窗內打中文。而它的 CJK-LaTeX 指令的部分在經過少許的修正後也能正確地搭配使用。

各應用程式與列印系統的整合

·如前所述,由於 Ghostscript 可以正確處理 Postscript 與 PDF 的檔案,並且可以將它們轉換成各種格式輸出,包括許多印表機的列印格式。故使用 Ghostscript 正是最標準且一致的列印解決方案。除了上述可以產生 Postscript/PDF 檔案的程式以外,事實上還有許多與文書工作相關的應用程式,如辦公室軟體 KOffice/AbiWord 等,或繪圖軟體 gimp、xfig、gnuplot .... 等,它們在做列印輸出時都可以產生 Postscript的格式 (未來也許會有 PDF 格式),故只要經過適當的整合,就能順利 解決列印的問題。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-947698/,如需轉載,請註明出處,否則將追究法律責任。

相關文章