|
1. 简要说明
mkfonts -- 这是一个我用shell写的CJK-LaTeX字体生成程序,其主要目的是从TTF字体产生能够被Texlive使用的中文字体,生成的文件包括metric字体文件,字体定义文件*.fd,字体隐射文件*.map等。用mkfonts生成的字体与CTeX兼容,并且与www.ctex.org发布的ctexbook等宏包兼容。
以下涉及的所有命令均以普通用户身份执行。
teTeX用户请注意:从使用原理上,用mkfonts所生成的字体以及字体定义文件也可以用在tetex系统中,但用户可能需要手动修改相当多的字体映射配置。我本人曾做过很多努力想将为texlive生成的字体用于teTeX系统,但始终未能成功。我曾经专门为teTeX生成过字体,但过程相当复杂,况且teTeX已经停止开发,建议使用Texlive代替teTeX。
2. 压缩包中的文件内容
上传的cjkfonts.tar.gz是一个压缩包文件,其中主要的文件包括编码定义文件*.sfd,一个可执行文件mkfonts, 以及若干个子目录。除了test子目录包含简单的测试文件外,其余子目录的作用是提供并安装与CTeX兼容的宏包。(由于上载文件大小的限制,我将这些宏包删除了。)
3. 解压缩
使用下列的步骤进行解压缩:
- $ mkdir buildfont
- $ cd buildfont
- $ tar zxvf <path_to_cjkfonts>/cjkfonts.tar.gz
- $ cd fonts
复制代码
解压后在当前目录下生成一个fonts子目录,
4. 准备工作
4.1 下载并安装Texlive2007, 可以从这里下载ftp://tug.org/historic/systems/t ... ve-20070212.iso.bz2。也可以下载最新的Texlive2008
4.2 安装fontforge软件包, 可以从http://www.linuxpackges.net下载当前版本并安装。
4.3 运行mkfonts之前需要设置TTFPATH环境变量告知mkfonts从那里找到TTF字体。有几种方法:
a. mkfonts缺省地认为TTF字体在当前目录中,因此必须先拷贝相应的字体文件到当前目录中,比如
- $ cp /usr/share/fonts/TTF/sim*.tt? .
-
复制代码
b. 使用命令行环境变量运行mkfonts,比如
- $ TTFPATH=/usr/share/fonts/TTF ./mkfonts
复制代码
c. 修改mkfonts中的变量定义。使用任何一个你熟悉的编辑器打开mkfonts文件,在开头的位置找到TTFPATH变量的定义,直接将TTFPATH变量修改为路径名。
4.4 指定TEXMF根路径。texlive2007默认的TEXMF用户路径为$HOME/.texlive2007/texmf-var,这也是mkfonts使用的缺省路径。如果你想使用一个特定的安装路径,可以使用命令行,比如
- TEXMF=$HOME/texmf ./mkfonts
复制代码
也可以直接打开mkfonts文件,在程序的开头找到TEXMF的定义,直接修改。
注意:用户指定的TEXMF目录树必须位于texlive搜索路径中,texmf以及localtexmf都是可以考虑的路径名,参考/usr/local/texlive/2007/texmf/web2c/texmf.cnf
5. 运行mkfonts
mkfonts会在指定的TTFPATH路径下查找下列文件:simfs.ttf(仿宋)、simsun.ttc(宋体)、simkai.ttf(楷体)、simhei.ttf(黑体)、simli.ttf(隶书)、simyou.ttf(幼圆),并分别生成GBK和UTF8两种编码格式的CJK字体文件。整个过程大约需要耗时6小时(在我的2.7GHz/1MB/dual core CPU机器上进行测试),请耐心等待。
6. texlive的配置
如果mkfonts没有报告任何错误,那么所生成的字体,字体定义文件等都已经拷贝到了合适的路径下。接下来的工作是做一些配置工作。texlive2007的配置比teTeX的配置简单了许多,只需要运行updmap即可。
该命令将打开一个编辑器让你加入一些字体映射文件,将下列几行加入到文件的末尾。
- Map unifs.map
- Map unisong.map
- Map unikai.map
- Map unihei.map
- Map unili.map
- Map uniyou.map
复制代码
这些文件是mkfonts产生的字体映射文件。
7. 使用CJKFonts
对于使用GBK编码的文件,可以这样来编写LaTeX源文件来使用刚刚产生的CJK字体
- \documentclass{article}
- \usepackage{CJK}
- \begin{document}
- \begin{CJK}{GBK}{song}
- \textit{你好! 这是一个测试CJKGBK编码的测试文件。}
- \textbf{你好! 这是一个测试CJKGBK编码的测试文件。}
- \textsl{你好! 这是一个测试CJKGBK编码的测试文件。}
- \end{CJK}
- \end{document}
复制代码
对于使用UTF8编码的文件,可以这样来编写LaTeX源文件来使用刚刚产生的CJK字体
- \pdfoutput=1
- \pdfmapfile{=fs-enc.map}
- \documentclass{article}
- \usepackage{CJKutf8}
- \begin{document}
- \begin{CJK}{UTF8}{song}
- \textit{你好! 这是一个测试CJKutf8编码的测试文件。}
- \textbf{你好! 这是一个测试CJKutf8编码的测试文件。}
- \textsl{你好! 这是一个测试CJKutf8编码的测试文件。}
- \end{CJK}
- \end{document}
复制代码
可以在LaTeX中使用的字体有
fs 仿宋
song 宋体
kai 楷体
hei 黑体
li 隶书
you 幼圆
8. 测试
在解压缩后的文件中包含一个test子目录,其中包含了三个简单的测试文件,cjkgbk.tex, cjkutf8.tex, ctextest.tex。可以运行下列命令来进行测试
- $ latex cjkgbk
- $ xdvi cjkgbk
- $ dvipdf -o cjkgbk.ps cjkgbk
- $ dvipdfm cjkgbk
- $ dvipdfmx cjkgbk
- $ pdflatex cjkgbk
复制代码
上述命令应该能够产生所预期的结果。如果上述测试全部通过,可以删除buildfont子目录。
9. 最后的说明
mkfonts 将生成下列文件:
字体定义文件
c19fs.fd c19song.fd c19kai.fd c19hei.fd c19li.fd c19you.fd
这些是使用GBK编码的字体定义文件,分别表示仿宋体,宋体,楷体,黑体,隶书,幼圆。
c70fs.fd c70song.fd c70kai.fd c70hei.fd c70li.fd c70you.fd
这些是使用UTF8编码的字体定义文件,分别表示仿宋体,宋体,楷体,黑体,隶书,幼圆.
字体映射文件
unifs.map unisong.map unikai.map unili.map uniyou.map
这些是dvipdfm所需要的字体映射文件。
fs-enc.map song-enc.map kai-enc.map hei-enc.map li-enc.map you-enc.map
这些是pdftex所需要的字体映射文件。
各种字型定义文件,比如*.tfm *.afm *.vf等。 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|