Copyright (c) 2001 李果正(Edward G.J. Lee <[email protected]>)
本文為自由文件(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