刘少侠的东西

« Linux Kernel 2.6.26.4中文菜单手册 | Home | BLFS-CN半成品 »

给LaTeX CJK增加文泉驿正黑字体

By ti8er | 10月 19, 2008

这里是TeX中文高级功能:给自己BLFS下的 LaTeX CJK增加新字体:

上面已经提到了,给自己的LaTeX增加字体的简单方法,就是去网站上下载现成的字体包来安装。

如果你对那个新宋体(nsung)和新楷体(nkai)感到相当讨厌,想换自己喜欢的字体,那么该怎么办?

下面就来示范,如何在CJK中添加自己喜欢的文泉驿正黑体0.6.26祈祷版(UTF8编码)。

范例中的命令都是参考命令,请根据自己的路径和系统情况修改。

首先,假定你已经按照前面的方法(参看BLFS中文配置),安装好了LaTeX + CJK + (nsung + nkai 字体)。

一、安装fontforge字体管理程序

http://downloads.sourceforge.net/fontforge/fontforge_full-20080927.tar.bz2?modtime=1222592596&big_mirror=0

下载后解压,然后
./configure
make && make install
就可以安装到默认的地方:/usr/local/bin

这时你要确保你的PATH中已经有了/usr/local/bin这个路径,没有的话加上去。或者你在configure前面增加–prefix参数安装到别的地方也可以。

输入命令

fontforge -v

测试一下安装正确没有。

二、下载文泉驿正黑0.6.26祈祷版

http://downloads.sourceforge.net/wqy/wqy-zenhei-0.6.26-0.tar.gz?use_mirror=osdn

解压后,把ttf文件拷贝到相应的地方。假设你即将工作的目录为~/xfont:

cp *.ttf ~/xfont -v

三、拷贝CJK的工具脚本到工作目录

找到你之前CJK的解压目录,想想你当时解到了什么地方,不行就重新下载一个CJK来解压。

相关的工具脚本在CJK目录的:

utils/subfonts

目录下,我们目前需要的脚本为: subfonts.pe

参考命令:
cp ~/cjk-4.8.1/utils/subfonts/subfonts.pe ~/xfont -v

四、获得UTF8编码的通用字体规则包

因为我们要增加的是UTF8编译的字体包,所以需要一个UTF8编码的字体规范。这个包叫做:

Unicode.sfd

获取地址:

http://cvs.savannah.gnu.org/viewvc/freetype/freetype1-contrib/ttf2pk/data/

里面有很多规范包,UTF8的规范是Unicode.sfd;如果你需要GBK字体,那么下载相应的包。

下载后,把这个包拷贝到工作目录:

cp Unicode.sfd ~/xfont -v

五、开始生成元字体文件(注意:时间非常长!)

这时候,你的工作目录下,应该有三个文件:

Unicode.sfd
subfonts.pe
wqy-zenhei.ttf

输入下面的命令,将会自成LaTeX需要的相关元字体文件:

fontforge -script subfonts.pe wqy-zenhei.ttf wqyzh Unicode.sfd

这个命令运行的时间很长。

在我的垃圾笔记本上(Pentium M 1.7G HZ, 256MB 内存),时间为10个小时!

在我同事最新的豪华联想品牌机上(Pentium dual E2200 2.2 GHz*2,1G内存),需要的时间为24分钟37秒!
(我目前正在教她学Linux。注意,是:她!)

你可以这样来测试这个命令需要的时间:

time { fontforge -script subfonts.pe wqy-zenhei.ttf wqyzh Unicode.sfd ; }

这可以检验你的机器有多么好(或者是多么垃圾)

执行完毕后,将在你的工作目录生成600多个元字体文件(准确说应该是641个文件),注意观察元字体文件的类型,有tfm、enc、pfb、afm等4种文件。

六、制作映射包map

相关命令:

for i in *.tfm
do
cat >> wqyzh.map << EOF
${i%.tfm} ${i%.tfm} < ${i%.tfm}.pfb
EOF
done

这时会在你的工作目录下生成wqyzh.map

md5sum wqyzh.map
5d78a9a096d7e4f9e30327fbd8e9110b wqyzh.map

这是我的校验码。

七、制作fd文件包c70wqyzh.fd

文件名:c70wqyzh.fd
内容为:

% This is c70wqyzh.fd for CJK package.
% created by Liu
% 2008-10-19 12:29
%
\ProvidesFile{c70wqyzh.fd}
\DeclareFontFamily{C70}{wqyzh}{\hyphenchar \font\m@ne}
\DeclareFontShape{C70}{wqyzh}{m}{n}{<-> CJK * wqyzh}{}
\DeclareFontShape{C70}{wqyzh}{bx}{n}{<-> CJKb * wqyzh}{\CJKbold}
\endinput

这是我照抄c70nsung.fd内容的。大家可以参考一下,nsung和nkai的fd文件包应该放在:

~/texmf/tex/latex/CJK/UTF8/

目录下。还有一个fdx文件,我看说明是用了CJK的另一个工具生成的,也在utils/subfonts目录下,名为:makefdx.pl

我不太清楚这个包的作用,也照抄过来了,只是把里面所有的nsung 改为了wqyzh。

可以用sed来改

cp ~/texmf/tex/latex/CJK/UTF8/c70nsung.fdx c70wqyzh.fdx
sed -i ’s/nsung/wqyzh/g’ c70wqyzh.fdx

八、把所有元字体文件和map、fd、fdx文件放在相应的目录下

不难找到,前面安装的nsung字体,相应的文件都放置于目录
~/texmf/fonts和~/texmf/tex下了。我们只要照抄就可以了。

参考命令:

mkdir -v ~/texmf/fonts/type1/CJK/wqyzh
mkdir -v ~/texmf/fonts/tfm/CJK/wqyzh
mkdir -v ~/texmf/fonts/enc/CJK/wqyzh
mkdir -v ~/texmf/fonts/afm/CJK/wqyzh

cp -v *.pfb ~/texmf/fonts/type1/CJK/wqyzh
cp -v *.tfm ~/texmf/fonts/tfm/CJK/wqyzh
cp -v *.enc ~/texmf/fonts/enc/CJK/wqyzh
cp -v *.afm ~/texmf/fonts/afm/CJK/wqyzh

cp -v wqyzh.map ~/texmf/fonts/map/dvips/CJK/

cp -v c70wqyzh.fd{,x} ~/texmf/tex/latex/CJK/UTF8/

九、重整TeX字体数据库

首先运行texhash刷新字体库:

texhash

然后把map映射文件加入:

updmap –enable Map wqyzh.map

十、测试

用一个简单的tex文件来测试一下文泉驿字体安装好了没有:

\documentclass[12pt]{article}
\usepackage{CJK}
\begin{document}
\begin{CJK}{UTF8}{wqyzh}

这里是测试文泉驿正黑字体

\end{CJK}
\end{document}

如果成功执行的话,就说明你的字体安装成功了!

附件为字体测试PDF,大家可以比较。

test-font

Tags: Linux From Scratch | 1 Comment »

One Response to “给LaTeX CJK增加文泉驿正黑字体”

  1. lklk Says:
    12月 19th, 2008 at 9:06 pm

    \documentclass[12pt]{article}
    \usepackage{CJK}
    \begin{document}
    \begin{CJK}{UTF8}{wqyzh}

Comments

Spam Protection by WP-SpamFree