Copyright (c) 2001 李果正(Edward G.J. Lee <EdwardLee@bbs.ee.ntu.edu.tw>
)
本文為自由文件(FDL http://www.gnu.org/copyleft/fdl.html) 可自由複製/修改/散佈。但請保留版權聲明的部份。
安裝 chinese/ttf2pt1, 他會連 print/ttf2pt1 一起安裝。
chinese 套件只是 map 表,有倚天字集可用。
寫一個 sh script(mkfont) 內容如下:
=== mkfont begin === #!/bin/sh # # By Edward G.J. Lee 2001.11.25 # This code is Public Domain. # if [ $# -ne 1 ] then echo "Usage: `basename $0` your.ttf" exit 1 fi echo echo "Now create *.t1a and *.enc and *.afm files. Wait... " echo FONTNAME=$1 MAPFILE=/usr/local/share/ttf2pt1/maps/cubig5.map n=1 while [ $n -lt 10 ] do m=0$n ttf2pt1 -GE -pft -Ohub -W0 -L $MAPFILE+$m $FONTNAME ${FONTNAME%.ttf}$m n=`expr $n + 1` done m=10 while [ $m -lt 56 ] do ttf2pt1 -GE -pft -Ohub -W0 -L $MAPFILE+$m $FONTNAME ${FONTNAME%.ttf}$m m=`expr $m + 1` done # avoid dvips(k)(before v5.86) t1part module bug. # perl -pi -e 's/_/Z/g' *.t1a *.afm echo echo "Now create *.pfb, wait... " echo for ps in *.t1a do t1asm -b $ps > ${ps%.t1a}.pfb done echo echo "Now create *.tfm, wait... " echo for afm in *.afm do afm2tfm $afm done AFM=${FONTNAME%.ttf}-afm TFM=${FONTNAME%.ttf}-tfm PFB=${FONTNAME%.ttf}-pfb ENC=${FONTNAME%.ttf}-enc rm -f *.t1a mkdir -p $AFM $TFM $PFB $ENC mv -f *.enc $ENC mv -f *.afm $AFM mv -f *.tfm $TFM mv -f *.pfb $PFB echo echo "OK, all done. :-)" echo === mkfotn end ===
在一個獨立目錄放 mkfont(要先 chmod +x mkfont), 再把字型置於同一目錄。
* 一些路徑有不一樣的話,請自行修改。
這裡以文鼎細上海宋和文鼎中楷為例:
./mkfont bsmi00lp.ttf; ./mkfont bkai00mp.ttf
即可。完成後會產生 afm, euc, tfm, pfb 等四個目錄,裡面都是字型資料。
將資料搬移到所屬的地方(arphic 目錄請自行建立)。
afm copy 至 /usr/local/share/texmf/fonts/afm/arphic。
tfm copy 至 /usr/local/share/texmf/fonts/tfm/arphic。
pfb copy 至 /usr/local/share/texmf/fonts/type1/arphic。
euc copy 至 /usr/local/share/texmf/dvips/arphic。
新增 /usr/local/share/texmf/dvips/config/aming.map 內容如下:
bsmi00lp01 ShanHeiSun-Light-01 <bsmi00lp01.pfb bsmi00lp02 ShanHeiSun-Light-02 <bsmi00lp02.pfb ... bsmi00lp55 ShanHeiSun-Light-55 <bsmi00lp55.pfb
新增 /usr/local/share/texmf/dvips/config/akai.map 內容如下:
bkai00mp01 ZenKai-Medium-01 <bkai00mp01.pfb bkai00mp02 ZenKai-Medium-02 <bkai00mp02.pfb ... bkai00mp55 ZenKai-Medium-55 <bkai00mp55.pfb
在 /usr/local/share/texmf/dvips/config/config.ps 加入:
p +aming.map p +akai.map
新增 /usr/local/share/texmf/dvips/config/bsmi00lp.map 內容如下:
bsmi00lp01 <bsmi00lp01.enc <bsmi00lp.ttf bsmi00lp02 <bsmi00lp02.enc <bsmi00lp.ttf ... bsmi00lp55 <bsmi00lp55.enc <bsmi00lp.ttf
新增 /usr/local/share/texmf/dvips/config/bkai00lp.map 內容如下:
bkai00mp01 <bkai00mp01.enc <bkai00mp.ttf bkai00mp02 <bkai00mp02.enc <bkai00mp.ttf ... bkai00mp55 <bkai00mp55.enc <bkai00mp.ttf
* bsmi00lp.ttf,bkai00mp.ttf 要置於 kpathsea 找得到的地方,如 /usr/local/share/texmf/fonts/truetype (目錄可自行建立)。
修改 /usr/local/share/texmf/pdftex/config/pdftex.cfg,加入:
map +bsmi00lp.map map +bkai00mp.map
新增 /usr/local/share/texmf/tex/latex/CJK/Bg5/c00aming.fd 內容如下:
\def\fileversion{4.2.0} \def\filedate{2001/09/28} \ProvidesFile{c00aming.fd}[\filedate\space\fileversion] \DeclareFontFamily{C00}{aming}{} \DeclareFontShape{C00}{aming}{m}{n}{<-> CJK * bsmi00lp}{} \DeclareFontShape{C00}{aming}{bx}{n}{<-> CJK * bkai00mp}{} \endinput
新增 /usr/local/share/texmf/tex/latex/CJK/Bg5/c00bsmi00lp.fd 內容如下:
\def\fileversion{4.2.0} \def\filedate{2001/09/28} \ProvidesFile{c00bsmi00lp.fd}[\filedate\space\fileversion] \DeclareFontFamily{C00}{bsmi00lp}{} \DeclareFontShape{C00}{bsmi00lp}{m}{n}{<-> CJK * bsmi00lp}{} \DeclareFontShape{C00}{bsmi00lp}{bx}{n}{<-> CJK * bkai00mp}{} \endinput
這樣粗體字會去選用文鼎楷書體(個人不喜歡模擬出來的粗體字)。 當然楷書體也要自行按上述方法製作出來。
執行 texhash(or mktexlsr)。這樣就可以了,要使用明體就使用 aming 的字型名稱,要使用楷體就使用 akai(依上述方法做一個 c00akai.fd)。
當然,CJK 的使用方法,請參考 CJK 所附文件,一定要指定 aming 才會去使用所定義出來的字型,否則會去抓 CJK 預設字型, 那當然一般系統上是沒有的。
為了配合中文 Type1 字型,執行 dvips 時請加上 -Ppdf 或 -Pcmz 參數, 這樣英文字型才會去使用 Type1。
最後記得執行 texhash。
測試例子
=== begin ex.tex === \def\Fn{\char} \font\Aa=bsmi00lp01 scaled 1000 \font\CCC=bsmi00lp55 scaled 3000 \font\CCc=bsmi00lp55 scaled 2000 \font\Ccc=bsmi00lp55 scaled 1000 \font\JJJ=bsmi00lp24 scaled 3000 \font\JJj=bsmi00lp24 scaled 2000 \font\Jjj=bsmi00lp24 scaled 1000 {\CCC\Fn108} {\CCC\Fn109} {\CCc\Fn110} {\CCc\Fn111} {\Ccc\Fn112} {\Ccc\Fn113} {\Ccc\Fn114} {\JJJ\Fn55} {\JJj\Fn95} {\Jjj\Fn84} {\CCC\Fn101} {\CCC\Fn102} {\CCc\Fn103} {\CCc\Fn104} {\Ccc\Fn106} {\Ccc\Fn107} \bye === end ex.tex ===
pdftex ex.tex 即可產生內嵌中文 TTF 的 ex.pdf。 如果有製作中文 Type1 字型,則 tex ex.tex ; dvipdf ex 則是會內嵌中文 Type1,各位可比較看看兩者有何不同。
寫個 cjk-latex 稿試看看吧!字型名稱要使用 bsmi00lp。我寫的 sh script 只是個半成品,可能得多試幾次才會成功。have fun! :)
* LaTeX 稿請用 pdflatex。
要編譯 CJK-latex 文稿,可有兩種方式:
1. bg5latex test.tex ; pdflatex test.cjk
2. 寫一個 sh script(bg5pdflatex) 內容如下:
=== bg5pdflatex begin === #!/bin/sh FILE=`echo $1 | sed -e 's|\(.*\)\.[^/]*$|\1|'` bg5conv < $1 > $FILE.cjk pdflatex $FILE.cjk === bg5pdflatex end ===
chmod +x bg5pdflatex 後置於 PATH 可及之處。
bg5pdflatex test.tex
即可。其實這個 script 的內容和 bg5latex 是一樣的,只不過是把 latex 換成 pdflatex 而已。
ps. 內容如有錯誤,請不吝指正。
WWW: 使用 pdfTeX/pdfLaTeX 讓 pdf 檔內嵌中文 TTF/TTC