6.11. ttfm - TrueType 字型管理工具

目前有許多程式都會要求使用 TTF 字型,所以最好還是幫 X 加 上中文的 TTF 字型支援。目前安裝字型所需的 fonts.dir 已經不需要 使用暴力的方法產生,使用 ttfm 就可以很順利的管理所有的中文字 型了。而現在在 ports collection 中的 TrueType 字型有數套, arphicttfmoettfwangttf

安裝 chinese/ttfm

安裝後包含了:

ttfinfo:一個可以用來讀取 ttf 字型格式資訊的小程式,範例如下:

# ttfinfo /usr/local/share/fonts/TrueType/bkai00mp.ttf
TTFINFO_FONT_FILE="/usr/local/share/fonts/TrueType/bkai00mp.ttf"
TTFINFO_FONT_NAME="AR PL KaitiM Big5"
TTFINFO_FONT_PSNAME="ZenKai-Medium"
TTFINFO_FOUNDRY_NAME="Arphic"
TTFINFO_WEIGHT_NAME="medium"
TTFINFO_WIDTH="normal"
TTFINFO_NUMCMAP="2"
TTFINFO_CMAP0="1,0"
TTFINFO_CMAPNAME0="Apple,Roman"
TTFINFO_CMAP1="3,1"
TTFINFO_CMAPNAME1="Windows,Unicode"
TTFINFO_MAPNUM="1"
TTFINFO_FONTMAP1="-Arphic-AR PL KaitiM Big5-medium-r-normal--0-0-0-0-c-0-big5-0"

ttfinst.tk:圖形介面的 tk script, 可以用來安裝字型,不建議使用。

ttfm.sh:shell script,預備作為 ttf 字型總管。

# ttfm.sh --help
True-Type Font Manager 0.9.3

Usage: /usr/local/bin/ttfm.sh [option]

       --add [module] <file>...    install ttf font
       --remove [module] <file>... remove ttf font from the system
       --list <module>... list all ttf fonts on the system
       --modules          list all ttf manager modules on the system
       --initm <module>.. initialize modules
       --help             show this info

這個程式會去利用位於 /usr/share/fonts/install/ 底下以 ".ttfm" 結尾的可執行檔來安裝、設定字型, 這些 .ttfm 檔案稱 為 ttfm module,由需要使用到 ttf 字型的程式提供,這些模組必 須符合以下要求:

ttfm 採用模組化的設計。 每一個需要使用到 ttf 字型的 程式都可以提供 ttfm 的模組, 然後便可透過 ttfm.sh 來做到 字型的安裝,移除,列表,設定預設字型等管理的動作。 目前已有的 ttfm 模組有:

gscjk      給 Aladdin Ghostscript 使用。可以管理 TrueType 字型
        和 CID 字型,Ghostscript 必須修補可以使用 TrueType 字型。
xfreetype   給 XFree86's freetype backend,在 3.x 是 Xfsft,
        在 4.x 是 freetype 模組。
xttfm       安裝給 X window 用的 font.dir, font.alias

一些使用範例:

1. 加入字型:

# ttfm.sh --add <path>/bsmi00lp.ttf

(xttfm 會令 xfs 重新載入字型名稱。如果您不是使用 xfs, 您要自己下 xset fp rehash 令新的字型名稱生效,或者重新啟動 X Window )

2. 列出字型:

# ttfm.sh --list xttfm

會列出 xttfm 模組所有安裝的字型。 您現在可以用 xlsfonts 看到這些字型名稱。 並可用 xfd -fn <字型名稱> 試試能否看到字型。

3. 移除字型:

# ttfm.sh --remove bsmi00lp.ttf

這不需多做解釋吧?

4. 設定預設字型:

# ttfm.sh --setdefault xttfm bkai00mp.ttf

將 xttfm 模組的預設字型更改為 bkai00mp.ttf 這或許是 ttfm 最 powerful 的功能之一了。 您可發現 X Window 預設的中文字型通通變成楷體的。

注意預設字型是跟 encoding 有關的。您可以對不同的 encoding 分別給定預設字型。ttfm 會自動根據所給定 ttf 自動判斷應設定那種 encoding 的預設字型。 例如 ttfm.sh --setdefault xttfm gkai00mp.ttf 會設定 GB 的預設字型為楷體。

5. 模組的初始化:

# ttfm.sh --initm <module name>...

這個功能是用來在安裝一模組時,將系統已有的 ttf 字型通通安裝到該模組中。 如果下:

# ttfm.sh --initm all

會令所有已安裝的模組都做初始化的動作。 (也就是將所有字型安裝到所有的模組中)

如果您撰寫了一個 ttfm 的模組,請記得在安裝時 執行 ttfm.sh --initm <您的模組名稱>

Note: 關於 TrueType 字型的設定,在啟動您的 X 之前, 記得檢查 /etc/XFree86 下面有沒有 FontPath "/usr/X11R6/lib/X11/fonts/TrueType" 或是在 ~/.xinitrc 中加上 xset +fp /usr/X11R6/lib/X11/fonts/TrueType/

# cvs -d :pserver:anonymous@cle.linux.org.tw:/var/lib/CVSROOT login
(Logging in to anonymous@cle.linux.org.tw)
CVS password: 
# cvs -d :pserver:anonymous@cle.linux.org.tw:/var/lib/CVSROOT checkout ttfm

WWW: ttfm project