[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[DOC] Poorman's Chinese Type1 font for CJK-latex



  以下是 poorman 的 cjk-latex 中文 Type1 字型的製作方法,因為版權的
  關係,這裡只能講方法。是以 Big5 繁體中文為例,gb 簡體中文原理應該
  相同。

◎ 所需工具

  ttf2pfb:   freetype-contribe
  t1asm:     freetype-contribe or t1utils
  printafm:  GhostScript
  afm2tfm:   tetex
  pfaedit     http://bibliofile.mc.duke.edu/gww/FreeWare/PfaEdit/
  * XFree86-4.x 版 freetype 已附上。但 freetype2 改版後已無這些工具
    ,得另行下載 freetype1 的 source 來編譯。
  * Windows 上除 pfaedit 外皆有這些工具。

◎ 參考資料

  From: smallbull.bbs@bbs.cis.nctu.edu.tw (smallbull)
  Newsgroups: tw.bbs.comp.tex
  Subject: Re: 請問一下cjk的問題
  Date: 03 May 2001 10:26:25 GMT

  From: scenario@bbs.ee.ntu.edu.tw (papa)
  Newsgroups: tw.bbs.comp.tex
  Subject: Re: 請問一下cjk的問題
  Date: 06 May 2001 15:09:15 GMT
  * 很感謝兩位提供的心得及經驗,沒有他們的幫忙,這篇文章無法完成。

◎ 字型

  目前是以全真字型 avmfv.ttf(全真中仿宋) 為例,這是有版權的,因此只
  提供方法。另外台大字型(ntu 系列)也可以,文鼎字型因為是 Unicode
  編碼,得另行轉碼,也有轉好的,請至陳弘毅教授的 ChiTex 網站下載:
  ftp://dongpo.math.ncu.edu.tw/tex-archive/local/chitex/chitex/unix/6.1.2p7/
  nbsmi00lp.ttf.gz 這是 big5 編碼,gb 碼的是 ngkaioomp.ttf.gz。
  如要自行轉碼的話,請下載 bkai34.afm(gkai33.afm) 配合 ttf_edit 來轉
  碼。ttf_edit 的使用說明在 http://truetex.com/ttf_edit。;

◎ 步驟

  1. 由 TTF 產生 ps 檔
     ttf2pfb -c -pid 3 -eid 4 -plane 1 avmfv -o avmfv01 avmfv.ttf
     ......
     ttf2pfb -c -pid 3 -eid 4 -plane 58 avmfv -o avmfv58 avmfv.ttf
     造至 avmfv58.ps。可自行寫 sh script 來做比較方便。
     * 全真字型可至 plane 58,文鼎的只到 55 就可以了,視字型而定。

  2. 修改 ps 檔
     FullName 改成 avmfvxx(xx 視字型 plane 號碼)
     Family Name 改成 avmfv
     請自行用編輯器或 perl/python 來做。

  3. 由 ps 產生 pfb 檔
     t1asm -b avmfv01.ps > avmfv01.pfb
     ......
     t1asm -b avmfv58.ps > avmfv58.pfb
     請自行寫 sh script 來做。

  4. 製作 afm 及 tfm 檔
     printafm avmfv01.pfb
     ......
     printafm avmfv58.pfb

     afm2tfm avmfv01.afm
     ......
     afm2tfm avmfv58.afm
     請自行寫 sh script 來做。

  5. 安裝字型步驟
     將各字型及其描述檔 copy 至以下目錄。
     $TEXMF/fonts/afm/CJK/
     $TEXMF/fonts/tfm/CJK/
     $TEXMF/fonts/type1/CJK/
     * $TEXMF 是您安裝 tetex 的路徑。

     新增 $TEXMF/tex/latex/CJK/Bg5/c00avmfv.fd 內容如下:
     \def\fileversion{4.2.0}
     \def\filedate{1998/12/13}
     \ProvidesFile{c00avmfv.fd}[\filedate\space\fileversion]
     \DeclareFontFamily{C00}{avmfv}{\hyphenchar \font\m@ne}
     \DeclareFontShape{C00}{avmfv}{m}{n}{<-> CJK * avmfv}{}
     \DeclareFontShape{C00}{avmfv}{bx}{n}{<-> CJKb * avmfv}{\CJKbold}
     \endinput
     * 我的心得是不用 \CJKbold 摸擬粗體字,不好看,另用真正的粗體字型
       代替。

     新增 $TEXFM/dvips/config/avmfv.map 內容如下:
     avmfv01  avmfv01 <avmfv01.pfb
     ......
     avmfv58  avmfv58 <avmfv58.pfb

     在 $TEXFM/dvips/config/config.ps 最後加上
     p +avmfv.map

     執行 texhash 或 mktexslr。

◎ 測試

  以下為各 plane 的字,以便測試是否可以正常由 dvips 自 pfb 中取出。
  如果發生 Second number not found in Char string of '/FontName' 的
  錯誤,視最後看出在哪一個 plane,把這個 pfb 由 pfaedit 轉存一下即
  可,即由 pfaedit 開取這個 pfb 字型,然後 File => Generate Fonts...
  => Save 即可,原先的 afm, tfm 可以不必更動。
  * gb 碼請自行撿字做測試。文鼎字型的話 plane 24 か 不必做測試。

  請將以下內容納入 CJK enviroment,並使用 avmfv 字型。

  01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22
  糎 ㄝ 反 年 李 彿 南 研 悟 財 啟 造 無 黑 義 對 遠 確 操 應 濾 贈

  23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
  躍 か 冊 扙 冾 阼 氡 除 浣 偲 惊 紽 媏 琮 趉 搵 葸 嗼 碴 誏 潽 諘

  45 46 47 48 49 50 51 52 53 54 55
  憨 膮 檑 薈 鮨 繰 譀 醷 鐱 蘼 ??

  這樣產生的 ps 檔相當漂亮,轉成 pdf 也很漂亮,不過轉成 pdf 的話,使
  用 dvipdfm 較 ps2pdf 佳,檔案會比較小。為和中文配合,英文也請使用
  Type1 字型,\usepackage{times} 或 dvips -P cmz your.dvi。

◎ TODO

  1. 文鼎 TTF 由於陳教授提供的 bkai34.afm 沒有日文字型,這個 afm 可能
     得另行補足。
  2. 寫一個 perl script 來自動化產生、安裝。
  3. ttf_edit 並不是 free software,可能得從 ttf2pfb 著手,看是否能用
     於 Unicode 編碼的 TTF。另加強 ttf2pfb 能用於 TTC。



ps. 請各位用力的指正,謝謝!
-- 
Warm Regards,
Edward G.J. Lee(李果正)
 
 --*--  The best kind of learning is learning by doing.  --*--



Reply to: