跳转到内容

字体与文字系统支持矩阵

文字系统能否渲染,取决于两类字体。标准 14 款字体(Helvetica、Times、Courier)只覆盖 WinAnsiEncoding 字符集。已注册的嵌入 TrueType 或 OpenType 字体,只有在该字体的字符映射表与当前塑形路径同时覆盖某文字系统时,才能渲染该文字系统。没有任何一类字体可以单独渲染全部 Unicode。

文字系统标准 14 款字体已注册的嵌入字体
西欧拉丁文是 — 完整的 WinAnsiEncoding(Windows-1252)字符集
WinAnsi 之外的拉丁重音字符、希腊文、西里尔文当该字体的字符映射表覆盖它们时
中文、日文、韩文(CJK)当该字体的字符映射表覆盖它们时
阿拉伯文、波斯文、乌尔都文需配合上下文塑形,且字符映射表覆盖 Arabic Presentation Forms-B 区块
希伯来文会重排为视觉顺序;不塑形
泰文及其他复杂文字系统当字符映射表覆盖它们时;高级塑形能力有限

标准 14 款字体家族 — Helvetica、Times 和 Courier — 可渲染完整的 WinAnsiEncoding(Windows 代码页 1252)字符集:西欧重音拉丁文、欧元符号,以及常见排版标点,包括短破折号和长破折号、弯引号、项目符号、省略号和商标符号(ISO 32000-2 Annex D.2)。它们不渲染任何其他文字系统。对于该字符集之外的任何字符,请注册一款嵌入字体。SymbolZapfDingbats 是标准 14 款字体中仅有的两款没有度量兼容替代字体的字体;当你需要其中任意一款时,请注册一款可嵌入的字体。

标准字体工作流请参见 使用字体与对齐排版文本

已注册的 TrueType 或 OpenType 字体渲染 Unicode 时,仅限于所选字体的字符映射表与当前塑形路径同时覆盖的范围。仅注册一款字体,并不能保证每个码位都有可用字形。

  • 覆盖范围取决于字符映射表。 只有当嵌入字体将某个码位映射到字形时,引擎才会绘制该码位。为某一文字系统构建的字体,不会渲染另一种文字系统。
  • 拉丁文、希腊文、西里尔文和 CJK 在字体覆盖它们时,会直接通过字符映射表渲染,一个码位对应一个字形。
  • 阿拉伯文 还需要上下文塑形 — 词首、词中、词尾和独立字母形式,加上 Lam-Alef 连字 — 以及一款字符映射表覆盖 Arabic Presentation Forms-B 区块的字体。仅依赖 OpenType 字形替换(GSUB)的字体,以及 HarfBuzz 塑形路径,属于未来工作。
  • 从右到左的文字系统(阿拉伯文、希伯来文、波斯文、乌尔都文)会使用 Unicode 标准附件(UAX)#9 中的 Unicode 双向算法重排为视觉顺序。希伯来文会被重排但不塑形,这对该文字系统而言是正确的。

阿拉伯语示例和当前的从右到左限制,请参见 渲染从右到左的阿拉伯语 HTML