看板FreeBSD
标 题Re: 请问如何在latex/CJK使用CID字型?
发信站SayYA 资讯站 (Tue Aug 31 19:02:56 2004)
转信站ptt!ctu-reader!news.nctu!SayYa
[这个主题应该是在 TeX 版讨论比较恰当,但由於和 FreeBSD ports 的
安排的有关,因此就在这里回应了]
以下是我个人目前使用的状况及看法,仅供参考。
※ 引述《[email protected] (大猴子 :))》之铭言:
> ※ 引述《[email protected] (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 <
[email protected]>
%
\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