Latex之安装GBK字体

    Latex下支持中文的方式有多种,其中之一就是应用CJK宏包。当Tex发行版,如MikTex,安装CJK后,可以使用中文。但是,发行版中包含的字体较少,例如MikTex,当安装完CJK-Fonts后,只支持UTF-8编码的宋字体等。为了使用更多的中文字符集及其字体,需要手动安装之。本文主要介绍如何在Windows 7中为MikTex2.9安装GBK字体。

    安装额外的字体过程与安装额外的宏包类似,也需要在自建的texmf目录下安装字体文件。关于如何安装额外的宏包可参考以前的博客。只不过安装字体文件更加复杂。

1. 建立字库定义文件*.fd

    打开MikTex的安装目录,记为MIKTEXPATH,本文目录为:MIKTEXPATH=E:\Program Files\MikTex2.9\。注意观察MIKTEXPATH下tex\latex和Fonts两个文件夹的目录结构,即MikTex的TDS规则。然后仿照目录MIKTEXPATH\tex\latex\cjk\GB,建目录texmf\tex\latex\cjk\GB(其中texmf是MikTex的本地TDS目录)。仿照MIKTEXPATH\tex\latex\cjk\GB目录下的c19song.fd文件,分别在texmf\tex\latex\cjk\GB目录中建宋体、仿宋、楷体、黑体、隶书、幼圆字体的*.fd文件,分别命名为:c19song.fd, c19fs.fd, c19kai.fd, c19hei.fd, c19li.fd和c19you.fd。以文件c19song.fd为例,其中非注释部分为:

%...
\def\fileversion{4.3.0}
\def\filedate{1999/06/20}
\ProvidesFile{c19song.fd}[\filedate\space\fileversion]
%...
\DeclareFontFamily{C19}{song}{\hyphenchar \font\m@ne}
\DeclareFontShape{C19}{song}{m}{n}{<-> CJK * gbksong}{}
\DeclareFontShape{C19}{song}{bx}{n}{<-> CJKb * gbksong}{\CJKbold}
\DeclareFontShape{C19}{song}{m}{sl}{<-> CJK * gbksongsl}{}
\DeclareFontShape{C19}{song}{bx}{sl}{<-> CJKb * gbksongsl}{\CJKbold}
\DeclareFontShape{C19}{song}{m}{it}{<-> CJK * gbksongsl}{}
\DeclareFontShape{C19}{song}{bx}{it}{<-> CJKb * gbksongsl}{\CJKbold}
\endinput

    这些命令的含义现解释如下:

    文件中命令\DeclareFontFamily和\DeclareFontShape的定义可以总结为:

\DeclareFontFamily{C19}{#1}{\hyphenchar \font\m@ne}
\DeclareFontShape{C19}{#1}{#2}{#3}{<#4> #5 * gbk#6}{#7}


    这些Tex命令中参数,即#1~#7的具体含义如下:

    参考MIKTEXPATH\doc\latex\base下文档fntguide.dvi,每种文本字库(text font)都有5个属性,分别是encoding, family, series, shape, size。以上命令\DelareFontShape就是定义这些属性。这里的C19表示CJK所使用的GBK字库的编码(encoding)。参考经典文档clatex.pdf(吴凌云和王磊. "中文LaTeX扩展安装指南" ),七个参数的定义为:

  • #1,字族(family),这里每个*.fd文件定义一种字族,分别取song, fs, kai, hei, li, yuan。例如,对应着CJK环境定义:\begin{CJK*}{GBK}{song};
  • #2,字系(series),这里可以取:m(medium weight)和bx(bold extended),分别表示正常和加粗字体。其中bx对应着latex文档中\bf或\textbf命令的使用字体;
  • #3,字形(shape),这里可以取:n(normal/upright),sl(slant)和it(italic),分别表示正常,倾斜和斜体。例如,it对应着latex文档中\it或\textit命令的使用;
  • #4,适用的字号(size),一般认为所有字号都适用,设置为“-”;
  • #5,这里一般取CJK和CJKb,其中CJKb表示用另外一种字体代替,例如上面的{bx}{n}的字库文件就用{m}{n}的字库文件gbksong代替,只是多了一个操作\CJKbold,用来加粗;
  • #6,字库文件名字,CJK会在gbk#6后面再加上字库的编号,以作为子字库的名字(subfont name)。它们会对应于MiKTeX的*.tfm文件,例如gbksong05.tfm,gbkkaisl02.tfm等,可以参考后面的目录texmf\fonts\tfm\chinese下面的各个子目录文件;
  • #7,CJK生成加粗字体的一种预处理方法:通过平移字模后重叠得到。但效果并不太好,特别是放大后可以看到明显的锯齿痕迹。如果希望用此功能则设置为\CJKbold,否则空着。

    建立其它字体的fd文件时,只要将示例中红色“song”的部分换成其它字体的名字即可,如“hei”等。fd文件的作用是给MikTex指出了tfm等文件的名字,建立了两者的连接。因此,下面要做的工作是将tfm等文件放在指定位置。

2. 安装字库文件

    接着需要安装字库文件。但安装之前,需要获得字库文件。一般情况下,有两种方式可以获得:(a)从指定网站上下载已经编辑好的字库文件;(b)使用gbkfonts等工具自己制作字库文件。本文使用了第一种方法,即从网络上下载字库文件。

    从ftp.ctex.org下载字库文件/pub/tex/fonts/type1/font-chs.zip解压到font-chs文件夹。然后按照如下方式将解压的文件复制到texmf的子目录下:

  • 将font-chs/fonts/tfm/chinese/下所有子目录和*.tfm文件都拷贝到相应的texmf/fonts/tfm/chinese/目录下。这些是各个字体/字族(song, fs, kai, hei, li, you)的*.tfm文件,分别有gbk#6??.tfm和gbk#6sl??.tfm两种,对应这*.fd文件中的定义。其中#6对应前面所说的参数 #6,而??是这些子字库文件的编号,取十进制01~94;
  • 将font-chs/fonts/afm/chinese/下所有子目录和*.afm文件都拷贝到相应的texmf/fonts/afm/chinese/目录下;
  • 将font-chs/fonts/type1/chinese/下所有子目录和*.pfb文件都拷贝到相应的texmf/fonts/type1/chinese/目录下。与*.tfm相对应的命名规则;
  • 将font-chs/dvips/chinese/map/下的两个*.map文件拷贝到相应的texmf/fonts/map/dvips/chinese/map/下。这两个文件为文本文件,实际上规定了前面*.tfm和*.pfb的对应关系。其中可以从文件gbk-t1.map看到,gbk#6??.tfm文件的字体与gbk#6??.pfb定义的相对应;而gbk-t1sl.map规定,gbk#6sl??.tfm文件的字体是由gbk#6??.pfb定义的字体作一个倾斜操作得到的。
    这里说明一下:*.tfm文件只是在latex编译*.tex时使用来确定字符的高和宽等,即一个盒子,得到dvi文件;而当用MiKTeX工具yap打开dvi,或用dvips来将*.dvi文档生成*.ps文件时,会去找相应的*.pfb字库文件;*.afm文件则是pdflatex在编译*.tex 时所使用的定义字符高和宽的文件,并直接生成*.pdf文件。


3. 配置使用环境

    进入MiKTeX的命令环境,如果使用WinEdt,则直接点击工具栏的“Command Prompt”图标,进入DOS命令框;或者直接启动CMD,记得使用管理员权限打开。然后执行命令:initexmf --edit-config-file updmap,在打开的文件updmap.cfg中添加两行:
    Map gbk-t1.map
    Map gbk-t1sl.map
保存并关闭这个文件。updmap.cfg文件位于 "C:\Documents and Settings\All Users\Application Data\MiKTeX\2.6
\miktex\config"目录下,一般都不直接打开修改,都会通过命令的方式打开修改。

    然后在CMD命令框中分别执行命令:
     initexmf -u
     initexmf --mkmaps
     initexmf -u


本文参考了两篇文章:(a)CTEX论坛中的“安装CJK之GBK(MiKTeX 2.6)”;(b)水木社区的“用了半年miktex了, 还是配置不好中文”。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值