如『睦邻友好的 ConTeXt Standalone』文中最后一节所述,对于不怎么讲究的中文排版,ConTeXt 目前对中文的支持勉强够用。目前,ConTeXt MkIV 仅支持:php
载入中文字体,将其嵌入 PDF 文件;html
对中文字体中的西文字符,可以指定替换字体,即 Fallback 机制。node
若是仅具备上述单薄的功能,那么在中文排版方面 ConTeXt MkIV 甚至不如 MS Word。举几个例子来讲明这一点。git
看下图, ConTeXt MkIV 尚没法对相邻的标点符号的间隔距离进行微调。虽然这个问题是中文字体设计上的缺陷——标点的宽度与字宽相同而致使的,可是文字排版软件本应给出方便的特定字距调整机制。github
下图是对标点间距进行压缩后的效果,可与上图对比一下。数据库
看下图,左引号在左侧未能与其下面文本行的左侧边界对齐,致使段首出现“缺损”。编程
做为对比,下图是通过微调使得左引号向左偏移半个字款后的排版结果。segmentfault
一样,落在右侧边界的标点也应该向右伸。下图截取自《Word 排版艺术》一书,是 Word 没法进行右侧边界标点伸出处理的排版结果。右侧边界竖向看起来,像是被咬去一块。ConTeXt MkIV 对西文标点的边界伸出进行了很好的处理,而中文标点像是后娘养的……右侧边界上的标点排版结果与 MS Word 差很少。bash
做为对比,下图给出右侧标点伸出的排版示例。ide
既然 ConTeXt MkIV 如今对中文排版并不友好,而咱们若是容忍这一点,那就真的对不起 Knuth 所说的“我历来也不期盼 TeX 会成为一个万能的排版工具,让你们使用它能够来作一些“快速而脏”的东西;我只是将其视为一种只要你足够用心就能获得最好结果的东西”。
所以,必须对 ConTeXT MkIV 的字体机制进行 hack。
我 hack 的结果就是 zhfonts 模块。zhfonts 项目位于:https://github.com/liyanrui/zhfonts
虽然 http://garfileo.is-programmer.com/posts/23740 已经给出了详细的使用说明,可是我以为有一份简单点的使用说明会更接地气。
假设你的 ConTeXt Standalone 安装在 ~/context
目录。若是不知道怎么安装 ConTeXt Standalone,那只能证实你没有阅读“睦邻友好的 ConTeXt Standalone ”。
安装 zhfonts 的步骤以下:
$ mkdir -p ~/context/tex/texmf-local/tex/context/third $ cd ~/context/tex/texmf-local/tex/context/third $ git clone https://github.com/liyanrui/zhfonts.git
装完后,须要使用 context --generate
刷新一下 ConTeXt MkIV 的“文件数据库”,以使得 context
命令在编译 .tex 文件时可以找到 zhfonts 模块文件所在位置。
$ source ~/context/tex/setuptex # 开启 ConTeXt 运行环境 $ context --generate
这样,zhfonts 便安装完毕,可是它还不能用。由于没有中文字体。
我已将 zhfonts 所用的全部中文字体打包为 fonts.tar.gz 并传至百度网盘,下载地址:http://pan.baidu.com/s/1hrQcI ,提取密码:2wpm
下载 fonts.tar.gz 后,安装字体过程以下:
$ tar zxvf fonts.tar.gz $ cp -r fonts ~/context/tex/texmf-local/
而后刷新 ConTeXt MkIV 的环境(请肯定已开启 ConTeXt MkIV 运行环境),即更新 ConTeXt 的文件数据库以及字体库:
$ context --generate $ mtxrun --script fonts --reload
下面,我给出一份测试 zhfonts 的最小示例:
\usemodule[zhfonts] \starttext 测试 English 与中文。 \stoptext
再给出一份比较全面又漂亮的 ConTeXt 入门示例,可是你须要去百度网盘下载,地址为:http://pan.baidu.com/s/1c0FJGvI
Just for fun!
我不能担保 zhfonts 的长期有效性。虽然这三年多以来,它虽有小恙,但迄今还算有效。因为 ConTeXt MkIV 的开发还在进行中,所以 zhfonts 也就不可能会稳定下来。我一边担心 zhfonts 的挂掉,一边但愿有更强大的 ConTeXt 中文 hacker 来拯救世界……
zhfonts 模块的一些内幕,请参考:
[0]
ConTeXt MkIV 中文标点压缩与边界对齐的处理方案 [1]
ConTeXt MkIV 中文标点间距压缩问题的解决方案[2]
CJK 字符结点的断定[3]
寻找标点符号及其包围盒[4]
走弯路了[5]
如何建立 LuaTeX 结点[6]
ConTeXt 模块参数的获取[7]
MkIV:从新作了一份 zhfonts.tex 兼谈 LuaTeX “编程”[8]
zhfonts 有一些更新