Re: 請問如何在latex/CJK使用CID字型?
[這個主題應該是在 TeX 版討論比較恰當,但由於和 FreeBSD ports 的
安排的有關,因此就在這裡回應了]
以下是我個人目前使用的狀況及看法,僅供參考。
※ 引述《monkey.bbs@tropic.med.kmu.edu.tw (大猴子 :))》之銘言:
> ※ 引述《Edward.bbs@bbs.sayya.org (L.G.J.)》之銘言:
> : 直接使用系統上的 TTF 就可以不必用到 Type1。這樣有個好處,就是
> : X 和 LaTeX 共用字型,應該算是比較經濟的方式。
> : 有什麼特殊情況需要用到 CID-Keyed font 嗎?
> 謝謝您的回答 :-)
> 我是看到您寫的"我的CJK",裡面說到目前許多軟體可以把TTF字型當成CID-keyed字型使用
> 但是我連CID-keyed都不會用,所以想要先知道要怎麼使用CID-keyed字型
> 其實我也是希望能夠直接使用TrueType字型
是的,這是最經濟的方式,就是 X + gs + print-tools + LaTeX 通通
使用 TTF,然後該模擬成什麼規格的字型再去模擬。
目前兩種版本的 gs 都可以直接使用 TTF。但對 CJK TTF 的支援是由日
本朋友寫出來的 code,GNU 和 AFPL 的版本的 gs 不盡相同。一般使用
的話,個人是會傾向 GNU 版本的 gs,因為相對的工具及一般性的支援
可能會比較多,只是對新一點的東西的支援會比較少。
除非是特殊的品質或軟體本身的需求,一般使用似沒有必要把 CID-Keyed
fonts 再弄出來使用,目前我們可以 free 拿得到的 CID-Keyed font,
品質不見得比 free TTF 好,使用、設定上也不很方便,而將來的趨勢應
該是會往 OpenType 這個方向走。
目前 AR5/6 所附的中文字型都是 OpenType 規格的 CID-Keyed font(
CID OpenType)。他可以直接丟給 X 使用,但其他的軟體不一定能使用,
例如 OO.o/LaTeX。
Un*x 的 TeX 要使用 [CID]OTF 要安裝另外的工具來產生必要的 metric
檔[1]及改用 cvs version 的 dvipdfmx,總之,工具還不算是很成熟。
另外,最重要的,當然是字型授權的問題,我們目前並無完全 free 的
CID/OTF 字型[2]。
[1] http://www.lcdf.org/type/
[2] 這是發展中的版本:http://cle.linux.org.tw/fonts/wangfonts/devel
> 就我目前的理解,是不是:
> 1. bg5latex只要有該字型的tfm以及fd檔,就可以轉換tex文件?
是的,在閱覽或轉出 ps/pdf 檔之前不必實體字型。
> 2. 用來轉換dvi格式的工具,例如dvipdfm或者dvips可以直接使用TTF字型?
dvipdfm/dvips 無法直接使用 (CJK)TTF。要直接使用 CJK TTF,目前一
定要使用 dvipdfmx 或 pdflatex(無 copy&paste&search 功能)。
雖然有這樣的限制,但 dvipdfmx 製作出來的中文 PDF 檔,有 copy&
paste&search 的功能,又可以不必內嵌字型,對於中文使用者而言,光
這些商業級的功能就值回票價了。而且,這個機制可以當成其他場合的
後端,例如 SGML/XML 的格式轉換。
> 3. 您的文章裡面介紹用mkfont.sh來產生字型資料,但他所產生的tfm以及fd檔
> 是不是用在轉換後的Type1字型的?
> 如果是這樣的話,要怎麼產生給TTF字型用的tfm與fd呢?
通用,就是這些 tfm/fd 可以給同一字型的 Type1/TTF 共同使用。
> 目前我的 /usr/local/share/texmf/tex/latex/CJK/Bg5/c00kai.fd 的內容
> \def\fileversion{4.5.2}
> \def\filedate{2003/03/28}
> \ProvidesFile{c00kai.fd}[\filedate\space\fileversion]
> \DeclareFontFamily{C00}{kai}{\hyphenchar \font\m@ne}
> \DeclareFontShape{C00}{kai}{m}{n}{<-> CJK * arb5kai}{}
> \DeclareFontShape{C00}{kai}{bx}{n}{<-> CJKb * arb5kai}{\CJKbold}
> \endinput
> 我的 /usr/local/share/texmf/fonts/tfm 裡面也有 arb5kai01.tfm到55的檔案
> 可是轉換出來的文章 http://monkey.netclub.kmu.edu.tw/latex/example10.pdf
> 放大後依然可以看到鋸齒(印出來還OK)
edt1023:~$ pdffonts example10.pdf
name type emb sub uni object ID
------------------------------------ ------------ --- --- --- ---------
[none] Type 3 no no no 12 0
EHPRXN+CMBX12 Type 1C yes yes no 10 0
NJCSUE+CMR10 Type 1C yes yes no 38 0
很明顯的,是使用了 pk 點陣字所轉成的 Type3 字型,所以放大後會有鋸
齒。這是正統的方式,只是目前 pdf 格式的流行,有點跟不上腳步而已。
因為 pdf 格式的檔案,要使用向量字型,在螢幕低解析度顯示時才會好看,
顯示速度也才會快。
> 請問要怎麼要才能產生如您的範例一樣漂亮的字型出來
> 如果想要使用王教授的TTF字型,要怎麼設定呢?
就以我那個 example10.tex 為例(請對照你所安裝 teTeX 的相對路徑):
http://edt1023.sayya.org/tex/latex123/example10.tex
http://edt1023.sayya.org/tex/latex123/example10.pdf
edt1023:~/cvs-working/latex123$ pdffonts example10.pdf
name type emb sub uni object ID
------------------------------------ ------------ --- --- --- ---------
MUUSRB+CMBX12 Type 1 yes yes no 10 0
MUUSRB+HanWangMingHeavy CID TrueType yes yes no 16 0
ZYGQID+HanWangMingMedium CID TrueType yes yes no 22 0
OFXAYD+CMR10 Type 1 yes yes no 25 0
他使用了兩種王老師的 TTF 字型(CID TrueType)。他的 fd 定義是:
edt1023:~$ cat /usr/share/texmf/tex/CJK/Bg5/c00hwmm.fd
% This is c00hwmm.fd for CJK package.
% created by Edward G.J. Lee <edt1023@info.sayya.org>
%
\ProvidesFile{c00hwmm.fd}[\filedate\space\fileversion]
\DeclareFontFamily{C00}{hwmm}{\hyphenchar \font\m@ne}
\DeclareFontShape{C00}{hwmm}{m}{n}{<-> CJK * wt002}{}
\DeclareFontShape{C00}{hwmm}{m}{sl}{<-> CJK * wt002s}{}
\DeclareFontShape{C00}{hwmm}{m}{it}{<-> CJKssub * hwmm/m/sl}{}
\DeclareFontShape{C00}{hwmm}{bx}{n}{<-> CJKb * wt004}{}
\DeclareFontShape{C00}{hwmm}{bx}{sl}{<-> CJKb * wt004s}{}
\DeclareFontShape{C00}{hwmm}{bx}{it}{<-> CJKssub * hwmh/bx/sl}{}
\endinput
也就是說需要安裝 wt002/wt004 兩種字型。粗體的部份去使用 wt004。
原始 CJK 的方式是使用模擬粗體的方式,因為以往完全 free 的 TTF
不多,就是粗體最後的定義是 {\CJKbold} 而不是 {}。這個看個人,
我個人是覺得實際的粗體比較好看。如果要節省硬碟空間,那就改成:
\ProvidesFile{c00hwmm.fd}[\filedate\space\fileversion]
\DeclareFontFamily{C00}{hwmm}{\hyphenchar \font\m@ne}
\DeclareFontShape{C00}{hwmm}{m}{n}{<-> CJK * wt002}{}
\DeclareFontShape{C00}{hwmm}{m}{sl}{<-> CJK * wt002s}{}
\DeclareFontShape{C00}{hwmm}{m}{it}{<-> CJKssub * hwmm/m/sl}{}
\DeclareFontShape{C00}{hwmm}{bx}{n}{<-> CJKb * wt002}{\CJKbold}
\DeclareFontShape{C00}{hwmm}{bx}{sl}{<-> CJKb * wt002s}{\CJKbold}
\DeclareFontShape{C00}{hwmm}{bx}{it}{<-> CJKssub * hwmm/bx/sl}{\CJKbold}
\endinput
這樣就只要安裝 wt002 的字型就可以了。粗斜體都是由同一個字型模擬
出來。
這些都有製作好的現成 tfm/fd/*.map 檔。下載地點:
http://cle.linux.org.tw/fonts/wangfonts/
或
ftp://ftp.tnc.edu.tw/pub/freefont/wangnew
只要解開將其中的各種檔案置放於相對的目錄,執行 texhash 後即可
使用。那些 tfm/fd/*.map 是包在 Type1 的 tarball 中。其中要將
TTF 字型嵌入的話要修改一下 cid-x.map,把所有
wt002@Big5@ ETen-B5-H :0:!wt002.ttf
wt004@Big5@ ETen-B5-H :0:!wt004.ttf
中的驚嘆號 ! 通通拿掉。這種情形下 wt002.ttf/wt004.ttf 可以安裝
給 X/gs/OO.o/TeX 共同使用,然後 TeX 的部份只要 link 過來就可以
了。這樣,只要是使用 dvipdfmx,那麼 Type1 的部份(*.pfb)就可以
通通移除。
我另外寫了一個爛爛的安裝工具,但還沒有在 FreeBSD 上完整測試:
http://cle.linux.org.tw/fonts/wangfonts/devel/wangfont-0.3.tar.gz
或許有興趣的朋友可以幫忙試試看(應該有些細節需要修改一下,一些
sh 的特性及 sysv 的工具可能會有所不同)。
--
※ Origin: SayYA 資訊站 <bbs.sayya.org>
◆ From: info.sayya.org
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 4 之 8 篇):
FreeBSD 近期熱門文章
PTT數位生活區 即時熱門文章