标签 ‘TeX’ 的存档
更容易地获得蒙纳黑体——无需 OpenType 支持
较早前, Subacme 发表了一篇有关获得蒙纳黑体 (Monotype Hei) 字体的文章。 文中介绍的方法是利用 Arial Unicode MS 的 OpenType locl 特征进行字符取代; 这种方法利弊皆有, 本文则给出一个更加容易使用 (也更加受限) 的方法。
让我们先对 Arial Unicode MS 中四种写法的并存进行一些回顾。 基本上,
- CJK 统合汉字代码点使用默认写法 (新字体 (Shinjitai)), 而其他三种版本则通过字体中不同的
GSUB(glyph substitution, 字形取代) 表与这些代码点关联; - 进一步, 这些取代表被包含在不同区域设置 (locale) 的 OpenType
locl特征中; - 最後, 在支持 OpenType 的应用中选择正确的区域设置, 并启用
locl特征, 相应的字符取代就会自动完成; - 未被统合的字符不受影响。
文中曾提到使用 Arial Unicode MS 的主要好处: 您 (很有可能) 拥有合法许可, 以及可以获得多种写法。 但与此同时, 它也有一些明显的弊端:
- 取代後的字符不再是正确的 Unicode 代码点, 这使得 PDF 文档内容无法被正确地检索和提取 (复制–粘贴);
- 多数现存的应用不完全支持 OpenType
locl特征, 包括除 XeTeX 以外的 TeX 引擎。
要解决这些问题, 一个直观的想法是让字符取代过程 “在字体中进行”, 然後直接使用一个正确的静态版本。 事实上, Monotype 提供了这样的产品, 即 Andale Sans UI。 基本上, Andale Sans UI 是 Arial Unicode MS 的专门化 (specialized) 版本: 後者提供了四种写法, 而前者仅提供其中一种。
遗憾的是, 針對不同的区域设置的 Andale Sans UI 版本使用了同一字体名, 所以在一些字体管理程序中, 您可能无法同时使用不同版本。
过去, Google 曾在其免费的 Google Pack 中提供 StarOffice, 其中便包含了 Andale Sans UI。 如果只想获得字体, 您可以不必等到安装包下载完成。
免费的 Monotype MHei 字体: 利用 Arial Unicode MS 的 OpenType LOCL 特征获得区域专用的汉字表现形式
Monotype 的黑体字体 MHei 近年来逐渐受到欢迎。
有关一个更加简单 (无需 OpenType) 但更加受限的方法, 请参阅该文章。
本文是该 PDF 原文的扩充摘要 (上次更新: 2011 年 1 月 23 日)。
MHei 实际上是指包括四个重量的完整的一套字体 (a typeface), 包括 Light, Medium, Bold, 和 Xbold 四个重量。 另外, 一个新的 Heavy 重量版本也在开发当中。 但除 Xbold 以外, 其他系列的设计基本相同, 因此在下文中 MHei 将特指 Bold 系列。

这套很容易认出的优雅的字体, 在日常生活中并不少见。 举例而言, 在朗文 (Longman) 的各种书籍, 联邦制药 (United Laboratories) 的药品, 曼秀雷敦的各种产品 (如退热贴, …) 等物品上, 都能看到 Monotype 的中文字体, 包括 MHei。
另外, 近年来, 在大陸 (至少是北京) 的许多车站广告中, MHei 的出现也变得愈加广泛。 下图是重庆成都街头的一副广告, 其中的中文字体便是 MHei-Light。

Image courtesy of J.-t. Jeang (© 2011; used with permission)
MHei 的设计者是中国字体设计有限公司 (China Type Design Limited), 也即 Monotype 映像香港有限公司 (Monotype Imaging Hong Kong Limited) 的前身。
由於价格并不低廉, MHei 往往让个人使用者望而却步。 虽然网上有 GB5 版本流传, 但这毕竟并不合法, 而且简化字用户仍需输入繁体字才能产生正确输出。 另外, GB5 字體中的标点符号按照传统习惯位於字框中央, 简化字用户则必须自行解决这一问题。
许多 ‘MHei 爱好者’ 想必一早就知道 Arial Unicode MS 中的汉字字体就是 MHei, 但其写法仅适用於日本语文本的排版。 但幸运的是, 我们仍旧能通过嵌入在 Arial Unicode MS 中的 OpenType LOCL 特征选择恰当的区域专用汉字表现形式。 这样的好处有三个:
- 合法许可, ——Arial Unicode MS 包含在 Office 和许多其他微软产品中, 也包含在 Mac OS X 10.6 或更高版本中;
- Unicode 2.0 大字库, ——无论繁体字, 简化字, 日本语汉字, 还是韩文汉字, 都可按原样输入;
- 同时支持四种 locale, ——大陸新字形, 繁体字 (以教育部国语推行委员会母稿为依据), 日本语新字体 (Shinjitai), 和适用於南韩的字形。
上面的内容是一个更长的版本的摘要。 如果您对此感兴趣, 请查看 PDF 原文 (上次更新: 2011 年 1 月 23 日)。 由於时间仓促, 行文若有缭乱, 请多包涵。
在 XeLaTeX 中使用统一的标点符号集
本文介绍利用 XeLaTeX 进行中西文混合排版时使用统一的标点符号集的方法, 并提供一个样式文件 (style file) 供您直接使用和扩充。
全角与半角
CJK 全角 (full-width) 标点符号的存在, 不仅让许多东亚的计算机使用者养成了不注意空格的毛病, 还难以避免地给许多东西文混合文档带来了标点符号不一致的问题。
全角和半角 (half-width) 两套标点的同时使用, 使文档显得极不专业。 为此, 一些专业的排版系统, 如方正的 ‘书版’ (Founder BookMaker), 定义了专门的命令来选择标点符号集; 无论用户输入全角或是半角标点符号, 产生的结果都是一致的, 并且带有恰当的空格。
为了把事情搞得更为复杂, 即使是全角标点, 在 GB 与 Big5 编码的字体中, 实现方法也不相同: 大陸的 GB 编码的字体 (字型) 将全角标点的非空白部分放在左下角, 而繁体中文区的 Big5 则沿用传统做法, 放在正中间。
笔者的看法是, 即使在中文文档中, 全角符号也不应该被使用, 除非没有半角版本与之对应 (如顿号和圆圈句号); 只有全角版本的符号, 也应与西文标点统一, 将非空白部分放在字框的左下角。
在 XeLaTeX 中统一标点符号集
TeX 传统上作为西文排版系统, 自然沒有现成的命令可供使用。 但我们可以自己动手 hack 它们, 想法是
- 更改标点符号字符的范畴代码 (category code), 使它们的出现被视为宏调用; 然後
- 定义这些字符 (作为宏), 使之产生需要的标点符号字符。
例如下面的代码将全角的问号重新定义为半角的问号。
\catcode`?=\active
\def?{?}
而对於 Big5 字体, 我们还需要将顿号和句号的非空白部分移动到字框的左下角, 这可以通过 \raisebox 完成。 参考下面的例子。
\catcode`。=\active
\def。{\raisebox{-0.35em}[0pt][0pt]{\makebox[0.35em][c]{\,\char12290}}\,}
下载试用
您可以下载笔者自己使用的样式文件, cwpunct.sty, 并进行修改或扩充。 文件中包含版权、许可和使用方法。 如果需要, 也请参考使用示例。
这个样式文件依赖於 xeCJK (如果您利用 XeLaTeX 排版中文文档, 它大概是必需的), 以在半角符号周围添加适当的空白。
由於时间仓促, 这些文件的准备十分简单。 欢迎批评指教。
在 Twitter 上跟踪 Subacme





