目前有許多程式都會要求使用 TTF 字型,所以我們最好還是幫 X 加 上中文的 TTF 字型支援。目前安裝字型所需的 fonts.dir 已經不需要 使用暴力的方法產生,使用 ttfm 就可以很順利的管理所有的中文字 型了。而現在在 ports 中的 TrueType 字型有三套, arphicttf、 moettf、 wangttf。
ttfm 的安裝:
# cd /usr/ports/chinese/ttfm
# make install
安裝後包含了:
ttfinfo:一個可以用來讀取 ttf 字型格式資訊的小程式,範例如下:
# ttfinfo /usr/share/fonts/ttf/bkai00mu.ttf
TTFINFO_FONT_FILE="/usr/share/fonts/ttf/bkai00mu.ttf"
TTFINFO_FONT_NAME="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-ZenKai_Medium-medium-r-normal--0-0-0-0-c-0-big5-0"
# ttfinfo /usr/share/fonts/ttf/mingliu.ttc
TTFINFO_FONT_FILE="/mnt/windows/fonts/mingliu.ttc"
TTFINFO_FONT_NAME="MingLiU"
TTFINFO_FOUNDRY_NAME="DynaLab"
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="2"
TTFINFO_FONTMAP1="-DynaLab-MingLiU-medium-r-normal--0-0-0-0-c-0-big5-0"
TTFINFO_FONTMAP2="-DynaLab-MingLiU-medium-r-normal--0-0-0-0-m-0-iso8859-1"
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
--setdefault <module> <file>
set default ming font of module to file
--setdefault_kai <<odule> <file>
set default kai font of module to file
--initm <module>.. initialize modules
--help show this info
這個程式會去利用位於 /usr/share/fonts/install/ 底下以 ".ttfm" 結尾的可執行檔來安裝、設定字型, 這些 .ttfm 檔案我稱 為 ttfm module,由需要使用到 ttf 字型的程式提供,這些模組必 須符合以下要求:
可獨立使用,不一定透過 ttfm.sh 呼叫執行。
不對系統字型目錄有任何預設,只管理自己模組字型目錄下的檔案。
對 ttf 檔案位置需求不同於 ttfm.sh 中的系統字型目錄時,以 link 方式處理,不 copy ttf 檔案,移除字型時不更動系統字型目 錄中的檔案。
提供至少下面幾個參數供 ttfm.sh 使用:
--name 顯示模組名稱
--list 列出模組管理的現有字型與對應的名稱
--add <file> 增加字型,file 為一字型檔案名稱,如
/mnt/windows/fonts/mingliu.ttc
--remove <file> 移除字型,file 為字型檔案名稱,可以是
fullpath、亦可以是單純檔案名,如
/usr/share/fonts/ttf/bkai00mu.ttf or bkai00mu.ttf
--setdefault <file> 設定預設字型,file 為字型檔案名
稱,可以是fullpath、亦可以是單純檔案名,如
/usr/share/fonts/ttf/bkai00mu.ttf or bkai00mu.ttf
ttfm 採用模組化的設計。 每一個需要使用到 ttf 字型的 程式都可以提供 ttfm 的模組, 然後便可透過 ttfm.sh 來做到 字型的安裝,移除,列表,設定預設字型等管理的動作。 目前已有的 ttfm 模組有:
abiword 給 AbiWord 0.7.12 或是以上的版本使用。
chitex 安裝 ChiTeX 字型 (by cwhuang)
ghostscript6 給 Aladdin Ghostscript 6.50 使用。可以管理 TrueType 字型
和 CID 字型,Ghostscript 必須修補可以使用 TrueType 字型。
ttf2pk 供 freetype-contrib 的 ttf2tfm, ttf2pk 使用 (by cwhuang)
xfreetype 給 XFree86's freetype backend,在 3.x 是 Xfsft,
在 4.x 是 freetype 模組。
xttfm-tcl 給 XFree86 3.3.x X-TrueType server。
xttfm 安裝給 X window 用的 font.dir, font.alias (by 小虫)
一些使用範例:
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/