# 字符代码/字形映射要求和建议

以下是 Apple TrueType 字体中字形及其对应字符代码的必需特征列表。

第一个字形(字形索引 0)必须是缺失字符字形。此字形必须具有可见的外观和非零前进宽度。

第二个字形(字形索引 1)必须是 NULL 字形。此字形必须没有轮廓且前进宽度为零。

适当的 Macintosh 字符集中的所有字符必须存在于字体中,才能与适当的 Macintosh 应用程序一起使用。但是,某些指定字符会映射到缺失字符字形,如下所述。对于 Unicode 来说,情况并非如此;除了它至少应该是至少一个 Macintosh 字符集中字符的完整 Unicode 等效集之外,没有对 Unicode 覆盖范围的要求。

如果字体有多个 cmap,则应将各个字符集中的相应字符映射到相同的字形。

以下字符代码必须映射到第一个字形(字形索引 0,缺失字符字形):

0x0001 标题开始

0x0002 文本开始

0x0003 文本结束

0x0004 传输结束

0x0005 询问

0x0006 确认

0x0007 铃声

0x000A 换行

0x000B 垂直制表符

0x000C 换页

0x000E 移出

0x000F 移入

0x0010 数据链路转义

0x0011 设备控制 1(X-On)

0x0012 设备控制 2

0x0013 设备控制 3 (X-Off)

0x0014 设备控制 4

0x0015 否定确认

0x0016 同步空闲

0x0017 传输块结束

0x0018 取消

0x0019 介质结束

0x001A 替代

0x001B 转义

0x001C 文件分隔符

0x001E 记录分隔符

0x001F 单元分隔符

0x007F 删除

以下字符必须映射到第二个字形(字形索引 1,NULL 字形):

0x0000 NULL

0x0008 退格

0x000D 回车(在从右到左的字体中)

0x001D 组分隔符

以下每个字符都必须映射到没有轮廓和正前进宽度的字形:

0x0009 水平制表符

0x000D 回车符(在从左到右的字体中)

0x0020 空格

0x00A0 无间断空格

以下字符组必须具有相同的宽度

0x0009(水平制表符)和 0x0020(空格)

以下建议列表适用于映射到所述字符代码的字形。它们旨在帮助行布局

行号应为等宽。这些包括 0x0030 到 0x0039(数字零到九)和 0x00CA(Unicode U+2007)图形空间。旧式数字不需要等宽。

在草书字体中,字形应重叠,以允许字形在与设备无关的文本中连接在一起。建议重叠 5%。

空白应均匀分布在字形的左侧和右侧边界之间。如果网格拟合导致奇数个像素,则应在右侧放置额外的空间。