Subacme

Personal weblog. Nonpersonal topics.

标签 ‘排版’ 的存档

更容易地获得蒙纳黑体——无需 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。 如果只想获得字体, 您可以不必等到安装包下载完成。

VN:F [1.9.13_1145]
Rating: 0.0/5 (0 votes cast)

本文的作者为 Jetcheng Chu

发表於 2011 年 8 月 15 日 18:46

免费的 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。

成都公交车站上使用了 MHei 的广告
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 日)。 由於时间仓促, 行文若有缭乱, 请多包涵。

VN:F [1.9.13_1145]
Rating: 4.0/5 (1 vote cast)

本文的作者为 Jetcheng Chu

发表於 2011 年 1 月 22 日 17:52

在 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 排版中文文档, 它大概是必需的), 以在半角符号周围添加适当的空白。

由於时间仓促, 这些文件的准备十分简单。 欢迎批评指教。

VN:F [1.9.13_1145]
Rating: 5.0/5 (1 vote cast)

本文的作者为 Jetcheng Chu

发表於 2010 年 10 月 30 日 21:24

分类: 未分类

标签: ,

我如何使用标点符号

有 4 条评论

标点符号对句子的语法和语义都有关键性的影响, 并且对文档的美观也至关重要。本文阐述作者对中西文混合横排排版中常见的三个问题的看法和处理方法, 希望能给处在困惑中的读者以启发, 并唤起其他读者对这类问题的重视。

全角–半角问题

现代汉语的标点符号, 大多是从西文中引入的。然而在两岸和日本的字符编码标准中, 又都存在着对这些引进的标点符号的定义。其结果是, 形状 (shape) 和意义的相同标点, 有全角 (full-width) 和半角 (half-width) 两个版本。例如 “:” (全角冒号) 与 “:” (半角冒号), “,” (全角逗号) 与 “,” (半角逗号), “.” (全角句点) 与 “.” (半角句点), 以及 “(” (全角左圆括号) vs. “(” (半角左圆括号), 甚至 “ ” (全角空格) 与 “ ” (半角空格), 等等。

在全角的逗号, 句号, 分号, 冒号等符号的位置上, 台湾的做法是延续传统, 将这些标点的非空白部分放在字符的正中间, 而中国大陸采用了与日本则将其放置在左下角。从效果上讲, 後者相当於在一个半角标点之後加上一个半角空格, 这是西文的习惯。

不过也正因如此, 许多 (如果不是所有) 东方的西文学习者, 最初都不会意识到在半角标点符号後手动添加空格的重要性。因此, 我们能够 (甚至是在不少大学生的作品中) 轻易发现类似下面这样可怕的排版。

Life to heras she said,was like one big orgasm.(1)

例 (1) 中的错误有两个, 一是在 “her” 後面的逗号, 使用了全角而不是半角的版本, 二是在 “said” 之後的逗号, 其後没有空格。

为了服从一致性 (consistency) 原则, 作者对於所有标点符号, 一律使用半角版本, 除非只有全角版本存在 (如圆圈句号和顿号)。这种做法在中西文混排中的优势是显而易见的。

空格问题

再次注意, 在西文标点之後要手动添加一个半角空格 (有些格式手册要求或允许在句点後添加两个半角空格), 用作数字分组 (digit grouping) 的逗号除外。观察下面的例子。

123,456, 123, 456(2)

123,456,123,456(3)

例 (2) 表示的是 3 个整数 (十二万三千四百五十六, 一百二十三, 四百五十六) 的序列。例 (3) 也是合法的, 但它表示的是一个整数 (一千二百三十四亿五千六百一十二万三千四百五十六)。

一般地, 在东文与西文之间, 应添加一个半角空格; 如果必须使用全角标点符号 (如圆圈句号, 顿号, 书名号等), 则不必在全角标点的空白区域前 (後) 再加空格。

正确使用横线

横线的使用也是一个令人头痛的问题。横线有很多种, 形状也相互类似, 但意义不同。不过基本上, 常用的横线只有如下几个。

  • 减号-短线 (minus-hyphen) “-” (U+002D);
  • 减号 (或负号) (minus sign) “−” (U+2212);
  • 短划线 (en dash) “–” (U+2013); 以及
  • 破折号 (em dash) “—” (U+2014)。

其中的减号-短线是通过键盘可以直接输入的符号; 顾名思义, 它一方面是短线 (hyphen), 另一个则可充当减号 (或负号) 的替代品 (特别是在编程语言中)。短线的主要作用是划分音节和构词, 例如 “auto-update” 中 “auto” 与 “update” 间的符号, 就是短线。

短划线常被用於表示某种关联, 例如 “Caylay–Hamilton 定理” 的 “Caylay” 和 “Hamilton” 之间的符号, 就是短划线。其他例子还包括 “a Beijing–Shanghai flight”, “China–U.S. relations”, “全角–半角问题”, 以及 “顿号–逗号问题” 等。短划线的另一个作用是表示范围。比如 “1998–2010” 可以表示从 1998 年到 2010 年的时间范围。在 TeX 中, 用两个短线 (--) 表示一个短划线。

破折号则不必多说, 使用方法与日常习惯一致。需要注意的是, 在破折号前後无需添加空格, 并且中文的破折号通常应该连续使用两次。在 TeX 中, 用三个短线 (---) 表示一个破折号。

Wikipedia 上有关横线的条目给出了更为详细的说明, 您可能希望参考。

VN:F [1.9.13_1145]
Rating: 4.0/5 (1 vote cast)

本文的作者为 Jetcheng Chu

发表於 2010 年 3 月 19 日 22:33

分类: 未分类

标签: