Dec 12

转自:http://bbs.ctex.org/forum.php?mod=viewthread&tid=18746

Ctex中只带了六种汉字字体,但我们可以自己通过xGBKfonts来添加。在MiKTeX2.3和2.4的早期版本中,我们可以直接用xGBKfonts添加字体,然后刷新文件名数据库就可以了。但现在使用这个方法pdftex却不认type1字体,而是生成pk字体。原因是现在MiKTeX2.4中,如果要使用type1字体,则这个字体必须在psfonts.map文件中,而psfonts.map是根据C:localtexmfweb2cupdmap.cfg配置文件生成的。我们可以做个试验来验证,在你安装完的ctex2.4中,测试是否可以中文仿宋type1字体,然后我们打开updmap.cfg文件,将下面的部分用#注释掉。

#% To use the CJK Type1 fonts
Map t1-gbkyou.map
Map t1-gbkli.map
Map t1-gbkhei.map
Map t1-gbkkai.map
Map t1-gbkfs.map
Map t1-gbksong.map

然后执行initexmf –mkmaps,再执行initexmf -u更新数据库,重新测试你刚才的文件,你就会发现,pdftex不再使用type1字体了。

为了让pdftex可以使用中文type1字体。我们需要作如下工作:
在updmap.cfg中添加一行Map cjk.map(cjk.map是xGBKfonts默认生成的type1字体的map),然后运行initexmf –mkmaps重新生成psfonts.map,运行initexmf -u更新数据库。这样你就可以让pdftex使用中文字体了。

如果你要在context中使用新新添加的字体。则还要运行texexec –make重新生成.efmt,.mem文件。然后运行initexmf -u更新数据库。

例子:
假设我们有一个方正魏碑GBK字体位于c:winntfonts目录下。
1.xgbkfonts -usesys -o * c:winntfontsfzwbk.ttf Fzwbk
会出现下面提示:

PS_Name = FZWBK--GBK1-0
Do you think it is accpetable ([Y]es/[N]o)?

一定要选N,不然生成的字体context中会不认识接着会出现:

Please input a new PS_Name:

输入Fzwbk,注意不要带-线。接着会生成type1字体及相关配置文件了。

2.如果你使用context,运行texexec –make重新生成它需要的格式文件。

3.initexmf -u更新数据库。

4.initexmf –mkmaps重新生成psfonts.map文件。

5.initexmf -u更新数据库
现在你就可以使用type1字体了。
在latex中:

documentclass[12pt]{article}
usepackage{CJK}
begin{CJK*}{GBK}{Fzwbk}
begin{document}
中文字体
end{CJK*}
end{document}

执行pdflatex wenjianming.tex。
在context中:

usemodule[chinese]
starttext
SimFzwbk
中文字体
stoptext

执行texexec –pdf wenjianming.tex
这些方法在下面两个贴子里面mytex老师谈到了http://bbs.ctex.org/viewthread.php?tid=15500,http://bbs.ctex.org/viewthread.php?tid=5366,大家可以看看。

Leave a Reply