9.3. bg5ps - 使用 TTF 字型轉換中文 Big5/GB 編碼文件成為 Portscript

bg5ps 是一個使用巨蟒描述語言 (Python Scrpting Language)寫的一個小程式,能夠利用幾套免費的 Truetype 中文字型將一般用 BIG5 編碼的文字檔轉換成能夠在 沒有中文字型的 postscript 印表機或是只有 ghostscript 的系統上印列的 postscript 檔案。 bg5ps 也可以拿來當做過濾器(filter),用來過濾在 FreeBSD 上的 Netscape 或是 mpage 產生的 postscript 檔案來印列其中所包含的 BIG5 中文字元。因為 bg5ps 使用的是 Truetype 字型而非矩陣字型,當在雷射印表機上或是字型較大時, 可以獲得比較好的印列品質。

安裝 bg5ps

目前 bg5ps 是採用 moettf 為列印的字型。您必須設定 TTF 字型路徑,在安裝完之後,您必須參考 /usr/local/etc/bg5ps/bg5ps.conf.sample ,並將您的設定檔置於 ~/.bg5ps.conf/usr/local/etc/bg5ps/bg5ps.conf

用它所附的範例來測試,並用 ghostviewgv 觀看結果:

% cd /usr/local/share/doc/bg5ps
% bg5ps -if bg5ps.txt -of bg5ps.ps
% ghostview bg5ps.ps

bg5ps -h 來看有那些參數可以使用。

使用方法

bg5ps 可以以獨立(stand along)或是當成過濾器(filter)來使用。

以獨立方式執行。

如果您的設定檔沒有問題,在大多數的時候您只須下達

% bg5ps -if yourfile.big5 -of yourfile.ps

就可以將 big5 編碼的檔案轉成可以印列的 postscript 檔案。 在大部份的 類 UNIX 的系統裡,使用

% lpr yourfile.ps

就可將 postscript 檔案印出。需要注意的是您必須要有 postscript 印表 機或是用 ghostscript 模擬 postscript 的印表 機及印表過濾器。此外您 還需要確定您是否正確的指定印表機。 如果您想要將 mpage 及 netscape 所產生的 postscript中的 big5 碼做處 理,使其成為可以印列 big5 中文的 postscript檔。 那您需要加上 "-nps y" 這個選項如下

% bg5ps -nps y -if netscape.ps -of cnetscape.ps

因為在 netscape 產生的 postscript 檔中的英文是可變寬度的字型, 所以 有時會有和中文對不齊的狀況發生。如用 mpage 則沒有這方面 的問題。用 mpage+bg5ps 是用來預覽大的中文檔案節省紙張的好方案。

當成過濾器使用。

bg5ps 也可以利用 UNIX 中的管道(pipe)當成過濾器使用。方法如下

% cat yourfile.big5 | bg5ps > yourfile.ps
% cat yourfile.big5 | bg5ps | lpr

% cat netscape.ps | bg5ps -nps y > yourfile.ps
% cat netscape.ps | bg5ps | lpr

選項

   bg5ps 有下列的選項可以使用
     * -fp ChineseFontPath: 指定中文字型的路徑(預設值: 與 bg5ps 同)
     * -fn ChineseFontName: 指定中文字型的檔案名稱(預設值: ntu_kai)
     * -o [0|1]: 0 不輸出奇數頁,1 輸出奇數頁(預設值: 1)
     * -e [0|1]: 0 不輸出偶數頁,1 輸出偶數頁(預設值: 1)
     * -s num: 指定輸出字型的大小(預設值: 12)
     * -ls num: 指定行距(預設值: 6.0)
     * -cs num: 指定字距(預設值: 2.0)
     * -lm num: 指定左邊界(預設值: 72.0)
     * -rm num: 指定右邊界(預設值: 72.0)
     * -tm num: 指定上邊界(預設值: 72.0)
     * -bm num: 指定下邊界(預設值: 72.0)
     * -if filename: 指定輸入檔檔名
     * -of filename: 指定輸出檔檔名
     * -cf filename: 指定設定檔(預設值:  /.bg5ps.conf)
     * -nps [y|n]: y 使用 nps 模式,n 不使用 nps 模式(預設值: n)
     

範例

% bg5ps -fn ntu_kai -e 0 -o 1 -s 18 -cs 3 -if mybig5.txt -of myps.ps

設定檔(Configuration file)

bg5ps 的設定檔其實每一行都是 python script 語言的一 行指令,由 bg5ps 主程式去呼叫執行,所以可能有安全性上的 問題。請記得要將設定檔改成唯讀。 因為設定檔也是 python script,所以每一行的開始是不能有空格的。

   bg5ps 設定檔有下列參數可以改變
     * chineseFontPath: 指定中文字型的路徑(預設值: 與 bg5ps 同)
     * fontName: 指定中文字型的檔案名稱(預設值: ntu_kai)
     * oddPages: 0 不輸出奇數頁,1 輸出奇數頁(預設值: 1)
     * evenPages: 0 不輸出偶數頁,1 輸出偶數頁(預設值: 1)
     * size: 指定輸出字型的大小(預設值: 12)
     * lineSpace: 指定行距(預設值: 6.0)
     * chrSpace: 指定字距(預設值: 2.0)
     * leftMargin: 指定左邊界(預設值: 72.0)
     * rightMargin: 指定右邊界(預設值: 72.0)
     * topMargin: 指定上邊界(預設值: 72.0)
     * bottomMargin: 指定下邊界(預設值: 72.0)

範例:

chineseFontPath="/home/cschin/lib/cfonts"
fontName="ntu_kai"
oddPages=1
evenPages=1

Note: 如果在 netscape 的列印指令裡面把 "lpr" 換成 "bg5ps -nps y | lpr",就可以列印中文網頁了。

Figure 9-5. bg5ps snapshot

WWW: http://students.washington.edu/cschin/

Author: Chen-Shan Chin