|
楼主 |
发表于 2003-7-2 07:59:37
|
显示全部楼层
中文輸出字型
TrueType
TrueType字型格式為美國Apple ( http://www.apple.com)及Microsoft ( http://www.microsoft.com )所共同制定,最先使用於Apple的Macintosh系列及 Microsoft Windows 3.1, 而目前Apple的OS 8.0及 Microsoft Windows 95/NT/2000/XP也都使用 TrueType作為字型格式。
基本上TrueType和PostScript一樣,都是使用??曲線(Bezier Curve) ?砻枋龅耐饪蜃帧 字型可以作任意尺寸的放大縮小, 或作其他屬性的變化,不過由於Apple及Microsoft 的作業系統都直接支援此字型格式,所以?K不需要如PostScript 一樣,外掛(Adobe)Type Manager之?的程式。
WWW: Features of TrueType and OpenType
6.3.1. ttfm - TrueType 字型管理工具
目前有許多程式都會要求使用 TTF 字型,所以我們最好還是幫 X 加 上中文的 TTF 字型支援。目前安裝字型所需的 fonts.dir 已經不需要 使用暴力的方法產生,使用 ttfm 就可以很順利的管理所有的中文字 型了。而現在在 ports 中的 TrueType 字型有三套, arphicttf、 moettf、 wangttf。
ttfm 的安裝:
# cd /usr/ports/chinese/ttfm
# make install
安裝後包含了:
ttfinfo:一個可以用?碜x取 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, 可以用?戆惭b字型,不建議使用。
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
--initm <module>.. initialize modules
--help show this info
這個程式會去利用位於 /usr/share/fonts/install/ 底下以 ".ttfm" 結尾的可執行檔?戆惭b、設定字型, 這些 .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/local/share/fonts/TrueType/bkai00mp.ttf or bkai00mp.ttf
--setdefault <file> 設定預設字型,file 為字型檔案名
稱,可以是fullpath、亦可以是單純檔案名,如
/usr/share/fonts/ttf/bkai00mp.ttf or bkai00mp.ttf
ttfm 採用模組化的設計。 每一個需要使用到 ttf 字型的 程式都可以提供 ttfm 的模組, 然後便可透過 ttfm.sh ?碜龅 字型的安裝,移除,列表,設定預設字型等管理的動作。 目前已有的 ttfm 模組有:
abiword 給 AbiWord 0.7.12 或是以上的版本使用。
chitex 安裝 ChiTeX 字型 (by cwhuang)
gscjk 給 Aladdin Ghostscript 使用。可以管理 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 看到這些字型名稱。 ?K可用 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>...
這個功能是用?碓诎惭b一模組時,將系統已有的 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: http://cle.linux.org.tw/cgi-bin/cvsweb.cgi/ttfm/
6.3.2. moettf - 台灣教育部標準 TrueType 字型
moettf 台灣教育部標準楷書、宋體 ttf 字形檔,現在又加了兩個字型 moe_sungext.ttf 和 moe_sungsym.ttf,雖然字型是 BIG5 編碼, 字元和符號在 CNS 中還是偶而會用到。
moettf 的安裝:
# cd /usr/ports/chinese/moettf
# make install
以下按照年代說明
85.12.03 國字標準字體楷書母稿
85.12.03 國字標準字體宋體母稿
85.12.05 國字方體母稿
這時 Wukai ?慕逃康臉藴首煮w轉成兩個 ttf, http://bbs.ee.ntu.edu.tw/boards/Linux/7/8/4.html ,也就是第一版的 moe_kai.ttf 與 moe_sung.ttf, moe_sung 的字數是 13865,moe_kai 的字數是 13849 少了幾個特別複雜的字, 這是教育部原始提供的字面母稿的少了的,不是轉換過程中 lost 掉的。
87.12.28 國字隸書母稿
88.05.20 國字標準字體宋體母稿增補編
這兩個就是後?碓黾拥 edustd-15.exe、edustds1.exe、edustds2.exe, 也就是後?淼牡诙版。
92.02 教育部楷書字形檔
這個則是最近新增的檔案,品質比楷書母稿好很多, 有 Big5 和 Unicode 版。當然有機會取代原 moe_kai.ttf, 不過還需要比較字數等可能問題。
總結:目前在 ports/chinese/moettf 中有五個檔案,方別是
2059101 edustd-15.exe 教育部隸書字形檔[註1]
1971355 edustds1.exe 教育部標宋體增補編字形檔[註2]
139950 edustds2.exe 教育部標宋體增補編字形檔[註2]
9194491 moe_kai.ttf 國字標準字體楷書母稿[註3]
8647174 moe_sung.ttf 國字標準字體宋體母稿[註3]
[註1] http://www.edu.tw/mandr/allbook/lishu/lishu.htm
[註2] http://www.edu.tw/mandr/result/5879/5879.html
[註3] http://www.edu.tw/mandr/bbs/1-4-2/ksf.html
但是在教育部楷書字形檔[註4],看到三個不同的楷書字型?
13842688 kai-pc.ttf PC 版(92.2) Windows 系統適用
13837924 kai-linux.ttf Linux 版(92.2) Linux作業環境適用
9300584 ct.sit MAC 版(92.2) APPLE電腦適用
[註4] http://www.edu.tw/mandr/bbs/1-4-2/kai.htm
Figure 6-4. moettf snapshot
WWW: 教育部國字標準字體公告
6.3.3. arphicttf - 文鼎科技 TrueType 字型
arphicttf 是由文鼎科技提供, 包含文鼎PL細上海宋,文鼎PL中楷 (BIG-5碼)和文鼎PL簡報宋、文鼎PL簡中楷(GB碼)。它可以被用? 作為 X Window 系統或是排版軟體例如 CJK。感謝文鼎科技,您可以 在 GPL-base 版權下自由散?堰@些高品質的字型。 ARPHIC_*.TXT 有更詳細的文件。
arphicttf 的安裝:
# cd /usr/ports/chinese/arphicttf
# make install
以下表格式整理過後的文鼎字體速查表, 會有兩個 Font Family 是因為英文的是 Microsoft,Unicode,English - United States 的資?,常用於 gtk2 等字型設定, 中文的則是 Microsoft,Unicode,Chinese - Taiwan 的資?,通常是 utf8 編碼,常用於 openoffice 的字型設定, Font Family, Unique subfamily identification, Full name 的資?通常都會相同。
Table 6-1. 文鼎字體速查表
檔名 PostScript name Font Family Font Family
bkai00mp ZenKai-Medium AR PL KaitiM Big5 文鼎PL中楷
bsmi00lp ShanHeiSun-Light AR PL Mingti2L Big5 文鼎PL細上海宋
gkai00mp GBZenKai-Medium AR PL KaitiM GB 文鼎PL簡中楷
gbsn00lp BousungEG-Light-GB AR PL SungtiL GB 文鼎PL簡報宋
Figure 6-5. arphicttf snapshot
WWW: 文鼎科技
6.3.4. wangttf - 王?h宗教授 TrueType 字型
wangttf 由 Dr. Hann-Tzong Wang 提供的字型,可以看看 wangttf.txt 得到更詳細的資?, 不過安裝起?碛 80MB,所以請斟酌後再使用。 繼 文鼎科技 捐出四套字形之後, 研發天蠶字庫的中原大學數學系王?h宗教授, 也捐出十套字型,給 Linux 社群使用。版權採用 GPL 釋出。 王?h宗教授捐出了以下十種字型: 王?h宗新潮體--波浪、 王?h宗特明體--標準、 王?h宗波卡體--空陰、 王?h宗綜藝體--雙空陰、 王?h宗標楷體--空心、 王?h宗仿宋體--標準、 王?h宗粗鋼體--標準、 王?h宗粗黑體--?陰、 王?h宗粗圓體--雙空、 王?h宗海報體--半天水。
wangttf 的安裝:
# cd /usr/PORT 218,18,38,190,234,229
有一個好處... 因 OpenOffice 只認 Unicode 編碼的 TrueType 字,引至很多 Big5 編碼的字不能用。 現在只要將轉變後的字抄到 OpenOffice 下的 share/fonts/truetype/ 就可以用了。好! 我已經測試了幾個王?h宗教授的字型, (確係靚)!---?V東話
chinese/oto 的安裝:
# cd /usr/ports/chinese/oto
# make install
wangttf 的字型只有 Big5 編碼,所以我們幫她加上 Unicode 編碼。
# oto wcl-01.ttf wcl-01-unicode.ttf
# ttfinfo wcl-01.ttf
TTFINFO_FONT_FILE="wcl-01.ttf"
TTFINFO_FONT_NAME="unknown"
TTFINFO_FONT_PSNAME="unknown"
TTFINFO_FOUNDRY_NAME="misc"
TTFINFO_WEIGHT_NAME="medium"
TTFINFO_WIDTH="normal"
TTFINFO_NUMCMAP="1"
TTFINFO_CMAP0="3,4"
TTFINFO_CMAPNAME0="Windows,Big 5"
TTFINFO_MAPNUM="1"
TTFINFO_FONTMAP1="-misc-unknown-medium-r-normal--0-0-0-0-c-0-big5-0"
# ttfinfo wcl-01-unicode.ttf
TTFINFO_FONT_FILE="wcl-01-2.ttf"
TTFINFO_FONT_NAME="unknown"
TTFINFO_FONT_PSNAME="unknown"
TTFINFO_FOUNDRY_NAME="misc"
TTFINFO_WEIGHT_NAME="medium"
TTFINFO_WIDTH="normal"
TTFINFO_NUMCMAP="2"
TTFINFO_CMAP0="3,1"
TTFINFO_CMAPNAME0="Windows,Unicode"
TTFINFO_CMAP1="3,4"
TTFINFO_CMAPNAME1="Windows,Big 5"
TTFINFO_MAPNUM="1"
TTFINFO_FONTMAP1="-misc-unknown-medium-r-normal--0-0-0-0-c-0-big5-0"
oto 另外一個好用的功能就是能修改字型的屬性:
% oto NTU_KAI.TTF > test
% iconv -f utf-8 -t big5 test > test.big5
% vi test.big5
% iconv -f big5 -t utf-8 test.big5 > test.utf-8
% oto NTU_KAI.TTF ntu-kai-new.ttf --names test.utf-8
編輯 test.big5 把 (Microsoft,Unicode,Chinese - Taiwan) .... at ...: 改成你想要顯示的字,使用 iconv 可能要注意?K非整個檔都是 utf-8 編碼的, 大概把 Unicode 那些區段自己找出?磙D成 big5 編輯後再寫回去, 最後再搭配 --names ?戆褜傩愿牡簟
以下是 Edward G.J. Lee(李果正) 所貢獻的。
Pfaedit 也是可以修改字型的屬性
#!/usr/bin/env pfaedit
# Reencoding a font to Unicode TTF.
# By Edward G.J. Lee, this code is public domain.
# $1: your TTF name.
if ($argc != 2)
Print("usage: ", $0, " your.tt[fc]")
Quit(1)
endif
Print("Loading ", $1, "...")
Open($1)
SetFontNames("myfont","myfont","myfont")
Reencode("iso10646-1")
ClearHints()
Print("Generating fonts...")
Generate($1 + ".ttf")
Close()
Quit(0)
chmod +x unifont.pe 就可以執行了(Unix-like 系統/環境)。這個 script 會把不是 Unicode 的 TTF 轉成 Unicode TTF。其中 ps name 的部份請自 行更改,我這裡是使用 myfont。
./unifont.pe your.ttf
就可以了,會產生 your.ttf.ttf,再自行更改檔名。
WWW: http://sourceforge.net/projects/oto
Prev Home Next
PostScript Up 中文的顯示及輸入 |
|