# “OS/2”表

# 一般表信息

“OS/2”表包含 Windows 所需的一组指标。 Apple 平台并未完全使用它。 该表的格式随着时间的推移而发生变化。最初的 TrueType 规范将该表的长度设为 68 字节。第一个 OpenType 版本的长度为 78 字节,当前的 OpenType 版本甚至更大。要确定您的软件正在处理哪种类型的表,有必要考虑表的版本及其大小。

(68字节)表的布局如下表1所示。有关后续 OpenType 扩展的详细信息,请参阅 OpenType 规范。

表 1:“OS/2”表

类型 名称 描述
uint16 version 表版本号(设置为 0)
int16 xAvgCharWidth 小写字母和空格的平均加权前进宽度
uint16 usWeightClass 字形中笔画的视觉重量(黑度或厚度)
uint16 usWidthClass 与字体设计者为字体中的字形指定的正常纵横比(宽度与高度之比)的相对变化
int16 fsType 此字体的特征和属性(将未定义的位设置为零)
int16 ySubscriptXSize 建议的下标水平大小(以像素为单位)
int16 ySubscriptYSize 建议的下标垂直大小(以像素为单位)
int16 ySubscriptXOffset 建议的下标水平偏移量
int16 ySubscriptYOffset 建议的下标垂直偏移量(相对于基线)
int16 ySuperscriptXSize 建议的上标水平大小(以像素为单位)
int16 ySuperscriptYSize 建议的上标垂直大小(以像素为单位)
int16 ySuperscriptXOffset 建议的上标水平偏移量
int16 ySuperscriptYOffset 建议的上标垂直偏移量(相对于基线)
int16 yStrikeoutSize 删除线的宽度
int16 yStrikeoutPosition 删除线相对于基线的位置
int16 sFamilyClass 字体系列设计的分类。
PANOSE panose 10 字节数字系列,用于描述给定字体的视觉特征
uint32 ulUnicodeRange[4] 字段分为两个位字段,每个位字段为 96 位和 36 位。低 96 位用于指定字体文件所包含的 Unicode 块。高 32 位用于指定字体文件所涵盖的字符或脚本集。位分配待定。设置为 0
int8 achVendID[4] 字体供应商的四个字符标识符
uint16 fsSelection 2 字节位字段,包含有关字体模式性质的信息
uint16 fsFirstCharIndex 此字体中的最小 Unicode 索引。
uint16 fsLastCharIndex 此字体中的最大 Unicode 索引。

# 版本

上面记录的表的版本号为零。OpenType 当前使用的版本为五。

# 附加字段

自“OS/2”表格式的原始版本以来添加的字段包括:

类型 名称 描述
int16 sTypoAscender 此字体的印刷上升部。这不一定与“hhea”表中的上升部值相同。
int16 sTypoDescender 此字体的印刷下降部。这不一定与“hhea”表中的下降部值相同。
int16 sTypoLineGap 此字体的印刷行距。这不一定与“hhea”表中的行距值相同。
uint16 usWinAscent Windows 的上升部度量。usWinAscent 计算为 Windows ANSI 字符集中所有字符的 yMax。
uint16 usWinDescent Windows 的下降部度量。usWinDescent 计算为 Windows ANSI 字符集中所有字符的 -yMin。
uint32 ulCodePageRange1 位 0-31
uint32 ulCodePageRange2 位 32-63
int16 sxHeight 以 FUnits 为单位测量的基线与非升序小写字母的近似高度之间的距离。
int16 sCapHeight 以 FUnits 为单位测量的基线与大写字母的近似高度之间的距离。
uint16 usDefaultChar Windows 显示的表示不受支持的字符的默认字符。(通常应为 0。)
uint16 usBreakChar Windows 使用的中断字符。
uint16 usMaxContext 此字体中任何功能的目标字形 OpenType 上下文的最大长度。
uint16 usLowerPointSize 建议用于版本 5 字体开始使用的最小尺寸(以印刷点的二十分之一为单位)。这是一个包含值。
uint16 usUpperPointSize 建议用于版本 5 字体开始使用时的最大尺寸(以印刷点的二十分之一为单位)。这是一个独占值。使用 0xFFFFU 表示没有上限。

# xAvgCharWidth

xAvgCharWidth 参数指定拉丁字母表的所有 26 个小写字母和空格字符的前进宽度的算术平均值。如果 26 个小写字母中没有一个存在,则此参数应等于零。 此参数是字体的描述性属性,用于指定用于比较一种字体与另一种字体以进行选择或替换的字符间距。对于按比例间隔的字体,此值可用于估计文本行的长度。下表 2 中提供的加权因子仅适用于拉丁小写字母。如果使用其他字符集或大写字母,则应替换不同的使用频率值。在比较使用不同使用频率值进行字体映射的字体时,必须小心谨慎。平均字符宽度根据以下公式计算:

仅对于小写字母,将各个字符宽度乘以以下加权因子,然后除以 1000。

表 2: 权重因子

字母 粗细 字母 粗细
a 64 o 56
b 14 p 17
c 27 q 4
d 35 r 49
e 100 s 56
f 20 t 71
g 14 u 31
h 42 v 10
i 63 w 18
j 3 x 3
k 6 y 18
l 35 z 2
m 20 space 166
n 56

# usWeightClass

usWeightClass 表示字体中字符的视觉重量(黑度或笔画粗细)。下表 3 解释了此条目的可能值。

表 3: 视觉重量

值 描述
1 超细
2 超细
3 细
4 半细
5 中等(正常)
6 半粗
7 粗
8 超粗
9 超粗

# usWidthClass

usWidthClass 表示字体设计者为字体中的字形指定的正常纵横比(宽度与高度之比)的相对变化。 虽然字体中的每个字符可能具有不同的数字纵横比,但正常宽度字体中的每个字符的相对纵横比均为 1。当创建具有不同宽度类别的新字体样式时(由字体设计者或通过某种自动化方式),新字体中字符的相对纵横比会比正常字体中的相同字符大或小某个百分比,此参数指定的就是这种差异。

表 4: 纵横比

值 描述 正常百分比
1 超压缩 50
2 超压缩 62.5
3 压缩 75
4 半压缩 87.5
5 中等(正常) 100
6 半膨胀 112.5
7 膨胀 125
8 超膨胀 150
9 超膨胀 200

# fsType

fsType 是一个 2 字节位字段,表示字体的嵌入特性。表 5 总结了位的含义。将所有未定义的位设置为零。

表 5: 嵌入标志

位 描述
0 保留;必须为 0
1 授权(受保护)字体;如果位 2 或 3 为 1,则不应为 1。未经合法所有者许可,不得以任何方式修改、嵌入或交换仅设置了此位的字体。
2 预览和打印嵌入;如果位 1 或 3 为 1,则不应为 1。仅设置了此位的字体可以嵌入文档中并临时加载到远程系统上。包含此类字体的文档必须以“只读”方式打开;不能对文档进行任何编辑。
3 可编辑嵌入;如果位 1 或 2 为 1,则不应为 1。仅设置了此位的字体可以嵌入文档中并临时加载到远程系统上。包含此类字体的文档可能是可编辑的。
4–7 保留;必须为 0
8 无子集。设置此位时,在嵌入之前不能对字体进行子集化。位 1–3 和位 9 中指定的其他嵌入限制也适用。
9 仅位图嵌入。设置此位时,仅可嵌入字体中包含的位图。不能嵌入任何轮廓数据。位 1-3 和位 8 中指定的其他嵌入限制也适用。
10-15 保留;必须为 0

未经许可的字体可以封装在文档中并免费发送给其他用户。受许可协议约束的字体受法律保护或许可。未经首先确保操作符合保护协议的条款并获得保护协议持有者的许可,不得以任何方式修改或交换它们。

接下来的八个条目适用于下标和上标。两个(x 和 y 各一个)适用于大小,两个适用于下标和上标的偏移量。

表 6: 上标

--- ---
ySubscriptXSize 如果字体有两种推荐的下标大小,例如数字和其他,则应强调数字大小。此大小字段映射到用于下标的字体的 em 方块大小。水平字体大小指定字体设计者为与此字体关联的下标字符推荐的水平字体大小。如果字体不包含应用程序所需的所有下标字符,并且应用程序可以通过缩放字体的字符或替换其他字体的字符来替换字符,则此参数指定这些下标字符的推荐 em 方块。
例如,如果字体的 em 方块为 2048 且 ySubScriptXSize 设置为 205,则模拟下标字符的水平大小将是正常字符大小的 1/10。
ySubscriptYSize 如果字体有两种推荐的下标大小,例如数字和其他,则应强调数字大小。此大小字段映射到用于下标的字体的 emHeight。水平字体大小指定字体设计者对与此字体关联的下标字符的水平字体大小的建议。如果字体不包含应用程序所需的所有下标字符,并且应用程序可以通过缩放字体中的字符或替换其他字体中的字符来替换字符,则此参数指定这些下标字符的建议水平 EmInc。
例如,如果字体的 em 方块为 2048,ySubScriptYSize 设置为 205,则模拟下标字符的垂直大小将是正常字符大小的 1/10。
ySubscriptXOffset Subscript X Offset 参数指定字体设计者对与此字体关联的下标字符的建议水平偏移量 - 从字体的字符原点到下标字符的字符原点。如果字体不包含应用程序所需的所有下标字符,并且应用程序可以替换字符,则此参数指定从第一个下标字符之前的最后一个字符的字符转义点开始的建议水平位置。对于直立字符,此值通常为零;但是,如果字体的字符有倾斜(斜体字符),通常会调整下标字符的参考点以补偿倾斜角度。
ySubscriptYOffset 下标 Y 偏移参数指定字体设计者建议的从字符基线到与此字体关联的下标字符的字符基线的垂直偏移量。值表示为字符基线以下的正偏移量。如果字体不包含应用程序所需的所有下标,则此参数指定这些下标字符的字符基线以下的建议垂直距离。
ySuperscriptXSize 如果字体有两种建议的下标大小,例如数字和其他,则应强调数字大小。此大小字段映射到用于下标的字体的 em 方块大小。水平字体大小指定字体设计者建议的与此字体关联的上标字符的水平字体大小。如果字体不包含应用程序所需的所有上标字符,并且应用程序可以通过缩放字体的字符或替换其他字体的字符来替换字符,则此参数指定这些上标字符的推荐 em 方块。
例如,如果字体的 em 方块为 2048 且 ySuperScriptXSize 设置为 205,则模拟上标字符的水平大小将是正常字符大小的 1/10。
ySuperscriptYSize 如果字体有两种推荐的下标大小,例如数字和其他,则应强调数字大小。此大小字段映射到用于下标的字体的 emHeight。垂直字体大小指定字体设计者建议的与此字体关联的上标字符的垂直字体大小。如果字体不包含应用程序所需的所有上标字符,并且应用程序可以通过缩放字体的字符或替换其他字体的字符来替换字符,则此参数指定这些上标字符的推荐 EmHeight。
例如,如果字体的 em 方块为 2048,ySuperScriptYSize 设置为 205,则模拟上标字符的垂直大小将是正常字符大小的 1/10。
ySuperscriptXOffset 上标 X 偏移量参数指定字体设计者建议的水平偏移量 - 从字符原点到与此字体关联的上标字符的上标字符原点。如果字体不包含应用程序所需的所有上标字符,则此参数指定从第一个上标字符之前的字符的退出点开始的建议水平位置。对于直立字符,此值通常为零;但是,如果字体的字符有倾斜(斜体字符),通常会调整上标字符的参考点以补偿倾斜角度。
ySuperscriptYOffset 上标 Y 偏移参数指定字体设计者建议的垂直偏移 - 从字符基线到与此字体关联的上标字符的基线。此参数的值表示为字符基线以上的正偏移。如果字体不包含应用程序所需的所有上标字符,则此参数指定这些上标字符在字符基线以上的建议垂直距离。

接下来的两个条目包含删除线信息。

表 7: 删除线

--- ---
yStrikeoutSize 此字段通常应为当前字体的破折号宽度。如果大小为 1,则删除线将为删除线位置字段所代表的线。如果值为 2,则删除线将为删除线位置和删除线位置正上方的线所代表的线。
yStrikeoutPosition 正值表示基线上方的距离,而负值表示基线下方的距离。零值直接落在基线上,而一值落在基线上方一个像素处。删除线位置的值不应干扰标准字符的识别,因此不应与字体中的横线对齐。

下一节将介绍 sFamilyClass 中的信息。

字体类和字体子类是 IBM 为每个字体系列分配的注册值。此参数用于在请求的字体不可用时选择替代字体。字体类是最通用的,字体子类是最具体的。此字段的高字节包含系列类,而低字节包含系列子类。

本节定义了字体设计者或供应商在对字体设计进行分类时使用的 IBM 字体类和 IBM 字体子类参数值。这些值根据字体设计的外观对其进行分类,但不识别特定的字体系列、字体变体、设计者、供应商、大小或度量表差异。应该注意的是,某些字体设计可能同样可以归类到 IBM 字体类或子类中。此类设计应与一个分类相匹配,对于该分类,用同一类或子类中的另一种字体设计替换通常会导致呈现的文档具有类似的外观。

表 8: sFamily 类别

ClassID 类别名称 描述
0 无分类 此类 ID 用于指示相关字体没有设计分类,或者设计分类对于字体资源的创建者或用户来说并不重要。
1 老式衬线 这种样式通常基于 15 至 17 世纪的拉丁印刷样式,在笔画强调方面具有轻微的对角线对比(从左上到右下较淡,从右上到左下较重)和带括号的衬线。此 IBM 类反映了 12/87 ISO/IEC 9541-5 草案标准中记录的 ISO 衬线类、老式衬线和易读性子类。
2 过渡衬线 这种样式通常基于 18 至 19 世纪的拉丁印刷样式,在笔画强调方面具有明显的垂直对比(垂直笔画比水平笔画重)和带括号的衬线。此 IBM 类反映了 ISO 衬线类、过渡子类,如 12/87 ISO/IEC 9541-5 草案标准中所述。
3 现代衬线 此样式通常基于 20 世纪的拉丁印刷样式,笔画的粗细部分之间形成极端对比。此 IBM 类反映了 ISO 衬线类、现代子类,如 12/87 ISO/IEC 9541-5 草案标准中所述。
4 Clarendon 衬线 此样式是老式衬线和过渡衬线的变体,具有温和的垂直笔画对比和带括号的衬线。此 IBM 类反映了 ISO 衬线类、方形衬线子类,如 12/87 ISO/IEC 9541-5 草案标准中所述。
5 粗衬线 此样式的特点是衬线在笔画和衬线之间具有方形过渡(无括号)。此 IBM 类反映了 ISO Serif 类、方形 Serif 子类(Clarendon 特定组除外),如 12/87 ISO/IEC 9541-5 草案标准中所述。
6 保留此类 ID 为将来分配而保留,未经 IBM 正式分配不得使用。
7 自由衬线 此样式包括衬线,但表达了一种通常不适合其他衬线设计分类的设计自由。此IBM 类反映了 12/87 ISO/IEC 9541-5 草案标准中所述的其余 ISO Serif 类子类。
8 无衬线 此样式包括笔画上没有衬线的大多数基本字母形式(不包括脚本和装饰)。此IBM 类反映了 ISO Sans Serif 类,如 12/87 ISO/IEC 9541-5 草案标准中所述。
9 装饰 此样式包括通常用于标题的高度装饰或风格化的字符形状。此 IBM 类反映了 12/87 ISO/IEC 9541-5 草案标准中记录的 ISO 装饰类和 ISO 黑体字类。
10 脚本 此样式包括旨在模拟手写的字体。此 IBM 类反映了 12/87 ISO/IEC 9541-5 草案标准中记录的 ISO 脚本类和 Uncial 类。
11 保留 此类 ID 保留用于将来分配,未经 IBM 正式分配不得使用。
12 符号 此样式通常与设计无关,使其适用于 Pi 和特殊字符(图标、装饰符号、技术符号等),这些字符可与任何字体同样使用。此 IBM 类反映了各种 ISO 特定组,如下所述并记录在 12/87 ISO/IEC 9541-5 草案标准中。
13 保留 此类 ID 保留用于将来分配,未经 IBM 正式分配不得使用。
14 保留 此类 ID 保留用于将来分配,未经 IBM 正式分配不得使用。

上面定义的许多类都有子类,如下所述。

表 9: OldStyle Serifs(ClassID = 1)

子类 名称 描述
0 无分类 此子类 ID 用于指示相关字体没有设计子类,或者设计子类对于字体资源的创建者或用户来说并不重要。
1 IBM 圆角易读性 此样式通常以较大的 x 高度为特征,具有较短的上升部和下降部。具体而言,它以中等分辨率、手动调整、更通用的圆角易读性子类的位图再现为特征。此字体样式的一个示例是 IBM Sonoran Serif 系列。此 IBM 子类反映了 12/87 ISO/IEC 9541-5 草案标准中记录的 ISO Serif 类、易读性子类和圆角特定组。
2 Garalde 此样式通常以中等 x 高度为特征,具有较高的上升部。此字体样式的一个示例是 ITC Garamond 系列。此 IBM 子类反映了 12/87 ISO/IEC 9541-5 草案标准中记录的 ISO Serif 类、Oldstyle 子类和 Garalde 特定组。
3 Venetian 此样式通常以中等 x 高度为特征,具有基于早期威尼斯打印机设计的相对单调的外观和流畅的尾部。此字体样式的一个示例是 Goudy 系列。此 IBM 子类反映了 12/87 ISO/IEC 9541-5 草案标准中记录的 ISO Serif 类、Oldstyle 子类和 Venetian 特定组。
4 Modified Venetian 此样式通常以较大的 x 高度为特征,具有基于早期威尼斯打印机设计的相对单调的外观和流畅的尾部。此字体样式的一个示例是 Allied Linotype Palatino 系列。此 IBM 子类反映了 12/87 ISO/IEC 9541-5 草案标准中记录的 ISO Serif 类、过渡子类和修改特定组。
5 Dutch Modern 此样式通常以较大的 x 高度为特征,具有楔形衬线和圆形碗状外观,类似于下面的 Dutch Traditional 子类,但笔触较浅。此字体样式的一个示例是 Monotype Times New Roman 系列。此 IBM 子类反映了 12/87 ISO/IEC 9541-5 草案标准中记录的 ISO Serif 类、Oldstyle 子类和 Dutch 特定组。
6 Dutch Traditional 此样式通常以较大的 x 高度为特征,具有楔形衬线和圆形碗状外观。此字体样式的一个示例是 IBM Press Roman 系列。此 IBM 子类反映了 12/87 ISO/IEC 9541-5 草案标准中记录的 ISO Serif 类和 Legibility 子类。
7 当代 此样式通常以较小的 x 高度为特征,并带有细线条和衬线。此字体样式的一个示例是 University 系列。此 IBM 子类反映了 12/87 ISO/IEC 9541-5 草案标准中记录的 ISO Serif 类和当代子类。
8 书法 此样式通常以细手写书法风格为特征,同时保留了典型的 Oldstyle 外观。此 IBM 子类未反映在 12/87 ISO/IEC 9541-5 草案标准中。
9-14 保留 这些子类 ID 为将来分配而保留,未经 IBM 正式分配不得使用。
15 杂项 此子类 ID 用于关联设计类中未被其他子类覆盖的杂项设计。

表 10: 过渡衬线 (ClassID=2)

子类 名称 描述
0 无分类 此子类 ID 用于指示相关字体没有设计子类,或者设计子类对于字体资源的创建者或用户来说并不重要。
1 直线 此样式通常以中等 x 高度为特征,具有细衬线、明显的对比度和大致相同宽度的大写字母。此字体样式的一个示例是 Monotype Baskerville 系列。此 IBM 子类反映了 12/87 ISO/IEC 9541-5 草案标准中记录的 ISO Serif 类、过渡子类和直线特定组。
2 脚本 此样式通常以手写脚本外观为特征,同时保留过渡直线样式。此字体样式的一个示例是 IBM Nasseem(阿拉伯语)系列。此 IBM 子类未在 12/87 ISO/IEC 9541-5 草案标准中具体反映,但 ISO Serif 类、过渡子类和直线特定组是近似值。
3-14 保留 这些子类 ID 保留用于将来分配,未经 IBM 正式分配不得使用。
15 杂项 此子类 ID 用于关联设计类中未被其他子类覆盖的杂项设计。

表 11: 现代衬线字体 (ClassID=3)

子类 名称 描述
0 无分类 此子类 ID 用于指示相关字体没有设计子类,或者设计子类对于字体资源的创建者或用户来说并不重要。
1 意大利语 此样式通常以中等 x 高度为特征,并带有细细的细线衬线。此字体样式的一个示例是 Monotype Bodoni 系列。此 IBM 子类反映了 12/87 ISO/IEC 9541-5 草案标准中记录的 ISO Serif 类、现代子类和意大利语特定组。
2 脚本 此样式通常以手写脚本外观为特征,同时保留现代意大利语风格。此字体样式的一个示例是 IBM Narkissim(希伯来语)系列。此 IBM 子类未在 12/87 ISO/IEC 9541-5 草案标准中具体反映,尽管 ISO Serif 类、现代子类和意大利语特定组非常接近。
3-14 保留 这些子类 ID 保留用于将来分配,未经 IBM 正式分配不得使用。
15 杂项 此子类 ID 用于关联设计类中未被其他子类覆盖的杂项设计。

表 12: Clarendon Serifs(ClassID=4)

子类 名称 描述
0 无分类 此子类 ID 用于指示相关字体没有设计子类,或者设计子类对于字体资源的创建者或用户来说并不重要。
1 Clarendon 此样式通常以较大的 x 高度为特征,其衬线和笔画的粗细相等。此字体样式的一个示例是 Allied Linotype Clarendon 系列。此 IBM 子类反映了 12/87 ISO/IEC 9541-5 草案标准中记录的 ISO Serif 类、Square Serif 子类和 Clarendon 特定组。
2 Modern 此样式通常以较大的 x 高度为特征,其衬线比笔画粗细,笔画比 Traditional 粗细。此字体样式的一个示例是 Monotype Century Schoolbook 系列。此 IBM 子类反映了 12/87 ISO/IEC 9541-5 草案标准中记录的 ISO Serif 类、方形 Serif 子类和 Clarendon 特定组。
3 传统 此样式通常以较大的 x 高度为特征,衬线比笔画更细。此字体样式的一个示例是 Monotype Century 系列。此 IBM 子类反映了 12/87 ISO/IEC 9541-5 草案标准中记录的 ISO Serif 类、方形 Serif 子类和 Clarendon 特定组。
4 报纸 此样式通常以较大的 x 高度为特征,设计风格更简单,衬线比笔画更细。此字体样式的一个示例是 Allied Linotype Excelsior 系列。此 IBM 子类反映了 12/87 ISO/IEC 9541-5 草案标准中记录的 ISO Serif 类、方形 Serif 子类和 Clarendon 特定组。
5 短衬线 这种样式通常具有较大的 x 高度,短衬线较短,字干相对较粗。这种字体样式的一个示例是 Cheltenham 系列。此 IBM 子类反映了 12/87 ISO/IEC 9541-5 草案标准中记录的 ISO 衬线类、方形衬线子类和短特定组。
6 单调 这种样式通常具有较大的 x 高度,字干为单调。这种字体样式的一个示例是 ITC Korinna 系列。此 IBM 子类反映了 12/87 ISO/IEC 9541-5 草案标准中记录的 ISO 衬线类、方形衬线子类和单调特定组。
7 打字机 这种样式通常具有较大的 x 高度,具有打字机特有的中等笔画粗细。这种字体样式的一个示例是 Prestige Elite 系列。此 IBM 子类反映了 12/87 ISO/IEC 9541-5 草案标准中记录的 ISO Serif 类、Square Serif 子类和打字机特定组。
8-14 保留 这些子类 ID 保留用于将来分配,未经 IBM 正式分配不得使用。
15 杂项 此子类 ID 用于关联设计类中未被其他子类覆盖的杂项设计。

此样式的特点是衬线在笔画和衬线之间有方形过渡(无括号)。此 IBM 类别反映了 ISO Serif 类别、方形衬线子类别(Clarendon 特定组除外),如 12/87 ISO/IEC 9541-5 草案标准中所述。

表 13: 粗衬线 (ClassID=5)

子类 名称 描述
0 无分类 此子类 ID 用于指示相关字体没有设计子类,或者设计子类对于字体资源的创建者或用户来说并不重要。
1 单调 此样式通常以较大的 x 高度为特征,衬线和笔画的粗细相等。此字体样式的一个示例是 ITC Lubalin 系列。此 IBM 子类反映了 12/87 ISO/IEC 9541-5 草案标准中记录的 ISO 衬线类、方形衬线子类和单调特定组。
2 人文主义 此样式通常以中等 x 高度为特征,衬线的粗细比笔画要轻。此字体样式的一个示例是 Candida 系列。此 IBM 子类反映了 12/87 ISO/IEC 9541-5 草案标准中记录的 ISO 衬线类、方形衬线子类和单调特定组。
3 几何 这种样式通常具有较大的 x 高度,衬线和笔画的粗细相等,并采用几何(圆圈和线条)设计。这种字体样式的一个示例是 Monotype Rockwell 系列。此 IBM 子类反映了 12/87 ISO/IEC 9541-5 草案标准中记录的 ISO Serif 类、方形衬线子类和单调特定组。
4 瑞士 这种样式通常具有较大的 x 高度,衬线和笔画的粗细相等,并强调字符的空白。这种字体样式的一个示例是 Allied Linotype Serifa 系列。此 IBM 子类反映了 12/87 ISO/IEC 9541-5 草案标准中记录的 ISO Serif 类、方形衬线子类和单调特定组。
5 打字机 这种样式通常具有较大的 x 高度,衬线和笔画的粗细相等但适中,并采用几何设计。此字体样式的一个示例是 IBM Courier 系列。此 IBM 子类反映了 12/87 ISO/IEC 9541-5 草案标准中记录的 ISO Serif 类、Square Serif 子类和 Monotone 特定组。
6-14 保留 这些子类 ID 保留用于将来分配,未经 IBM 正式分配不得使用。
15 杂项 此子类 ID 用于关联设计类中未被其他子类覆盖的杂项设计。

类别 ID 6 保留用于将来分配,未经 IBM 正式分配不得使用。

此样式包括衬线,但表达了一种通常不适合其他衬线设计分类的设计自由。此 IBM 类别反映了 12/87 ISO/IEC 9541-5 草案标准中记录的其余 ISO 衬线类别子类。

表 14: 自由形式衬线(ClassID=7)

子类 名称 描述
0 无分类 此子类 ID 用于指示相关字体没有设计子类,或者设计子类对于字体资源的创建者或用户来说并不重要。
1 现代 此样式通常以中等 x 高度为特征,笔触对比度低,设计饱满圆润。此字体样式的一个示例是 ITC Souvenir 系列。此 IBM 子类未反映在 12/87 ISO/IEC 9541-5 草案标准中。
2-14 保留 这些子类 ID 保留用于将来分配,未经 IBM 正式分配不得使用。
15 杂项 此子类 ID 用于关联设计类中未被其他子类覆盖的杂项设计。

此样式包括大多数基本字母形式(不包括脚本和装饰性字体),这些字母的笔画上没有衬线。此 IBM 类反映了 12/87 ISO/IEC 9541-5 草案标准中记录的 ISO 无衬线类。

表 15: 无衬线(ClassID=8)

子类 名称 描述
0 无分类 此子类 ID 用于指示相关字体没有设计子类,或者设计子类对于字体资源的创建者或用户来说并不重要。
1 IBM Neo-grotesque Gothic 此样式通常具有较大的 x 高度、均匀的笔划宽度和简单的单层设计,其特点是中等分辨率、手工调整、更通用的 Neo-grotesque Gothic 子类的位图再现。此字体样式的一个示例是 IBM Sonoran Sans Serif 系列。此 IBM 子类反映了 12/87 ISO/IEC 9541-5 草案标准中记录的 ISO Sans Serif 类、Gothic 子类和 Neo-grotesque 特定组。
2 Humanist 此样式通常具有中等 x 高度、笔划对比度低和经典罗马字母形式的特点。此字体样式的一个示例是 Allied Linotype Optima 系列。此 IBM 子类反映了 ISO Sans Serif 类、人文主义子类,如 12/87 ISO/IEC 9541-5 草案标准中所述。
3 低 x 圆形几何字体 此样式通常以低 x 高度为特征,具有单调的笔触粗细和圆形几何设计。此字体样式的一个示例是 Fundicion Tipograficia Neufville Futura 系列。此 IBM 子类反映了 ISO Sans Serif 类、几何子类、圆形特定组,如 12/87 ISO/IEC 9541-5 草案标准中所述。
4 高 x 圆形几何字体 此样式通常以高 x 高度为特征,具有均匀的笔触粗细和圆形几何设计。此字体样式的一个示例是 ITC Avant Garde Gothic 系列。此 IBM 子类反映了 ISO Sans Serif 类、几何子类、圆形特定组,如 12/87 ISO/IEC 9541-5 草案标准中所述。
5 Neo-grotesque Gothic 这种样式通常具有较高的 x 高度、均匀的笔画宽度和简单的单层设计。这种字体样式的一个示例是 Allied Linotype Helvetica 系列。此 IBM 子类反映了 ISO Sans Serif 类、Gothic 子类、Neo-grotesque 特定组,如 12/87 ISO/IEC 9541-5 草案标准中所述。
6 修改版 neo-grotesque Gothic 这种样式类似于 Neo-grotesque Gothic 样式,但 G 和 Q 的设计有所不同。这种字体样式的一个示例是 Allied Linotype Univers 系列。此 IBM 子类反映了 ISO Sans Serif 类、Gothic 子类、Neo-grotesque 特定组,如 12/87 ISO/IEC 9541-5 草案标准中所述。
7-8 保留 这些子类 ID 保留用于将来分配,未经 IBM 正式分配不得使用。
9 打字机哥特式 此样式类似于 Neo-grotesque Gothic 样式,具有打字机特有的中等笔划粗细。此字体样式的一个示例是 IBM Letter Gothic 系列。此 IBM 子类反映了 ISO Sans Serif 类、Gothic 子类、打字机特定组,如 12/87 ISO/IEC 9541-5 草案标准中所述。
10 矩阵 此样式通常是点阵打印机的简单设计特征。此字体样式的一个示例是 IBM Matrix Gothic 系列。此 IBM 子类未反映在 12/87 ISO/IEC 9541-5 草案标准中。
11-14 保留 这些子类 ID 保留用于将来分配,未经 IBM 正式分配不得使用。
15 杂项 此子类 ID 用于关联设计类中未被其他子类覆盖的杂项设计。

表 16: 观赏植物(ClassID = 9)

子类 名称 描述
0 无分类 此子类 ID 用于指示相关字体没有设计子类,或者设计子类对于字体资源的创建者或用户来说并不重要。
1 雕刻者 此样式的特点是细线或刻在主干上的线条。此字体样式的一个示例是 Copperplate 系列。此 IBM 子类反映了 ISO 装饰类和内联子类,或 Serif 类和雕刻子类,如 12/87 ISO/IEC 9541-5 草案标准中所述。
2 黑体字 此样式通常基于 12 至 15 世纪德国修道院和印刷商的印刷样式。此字体样式的一个示例是 Old English 系列。此 IBM 子类反映了 ISO 黑体字类,如 12/87 ISO/IEC 9541-5 草案标准中所述。
3 装饰性 此样式的特点是将装饰性设计(通常来自大自然,如叶子、花朵、动物等)融入字符的主干和笔画中。此字体样式的一个示例是 Saphire 系列。此 IBM 子类反映了 12/87 ISO/IEC 9541-5 草案标准中记录的 ISO 装饰类和装饰子类。
4 三维 此样式的特点是通过阴影或几何效果创建的字符的三维(凸起)外观。此字体样式的一个示例是 Thorne Shaded 系列。此 IBM 子类反映了 12/87 ISO/IEC 9541-5 草案标准中记录的 ISO 装饰类和三维子类。
5-14 保留 这些子类 ID 为将来的分配而保留,未经 IBM 正式分配不得使用。
15 杂项 此子类 ID 用于关联设计类中未被其他子类覆盖的杂项设计。

此样式包括高度装饰或风格化的字符形状,通常用于标题。此 IBM 类反映了 12/87 ISO/IEC 9541-5 草案标准中记录的 ISO 装饰类和 ISO 黑体字类。

表 17: 脚本(ClassID=10)

子类 名称 描述
0 无分类 此子类 ID 用于指示相关字体没有设计子类,或者设计子类对于字体资源的创建者或用户来说并不重要。
1 安色尔体 此样式的特点是字符不连贯(非连接),通常基于 6 至 9 世纪欧洲的手写样式。Libra 系列就是这种字体样式的一个示例。此 IBM 子类反映了 12/87 ISO/IEC 9541-5 草案标准中记录的 ISO 安色尔体类。
2 刷子连贯 此样式的特点是字符连贯(连接),看起来像是用刷子绘制的,粗笔画和细笔画之间有适度的对比度。Mistral 系列就是这种字体样式的一个示例。此 IBM 子类反映了 12/87 ISO/IEC 9541-5 草案标准中记录的 ISO 脚本类、连贯子类和非正式特定组。
3 正式连接 这种样式的特点是连接字符具有印刷(或用硬笔画)的外观,粗细笔画之间形成鲜明对比。这种字体样式的一个示例是 Coronet 系列。此 IBM 子类反映了 12/87 ISO/IEC 9541-5 草案标准中记录的 ISO Script 类、连接子类和正式特定组。
4 单调连接 这种样式的特点是连接字符具有统一的外观,笔画之间几乎没有对比。这种字体样式的一个示例是 Kaufmann 系列。此 IBM 子类反映了 12/87 ISO/IEC 9541-5 草案标准中记录的 ISO Script 类、连接子类和单调特定组。
5 书法 这种样式的特点是精美的手绘、不连接(非连接)字符,看起来像是用宽边笔绘制的。这种字体样式的一个示例是 Thompson Quillscript 系列。此 IBM 子类反映了 12/87 ISO/IEC 9541-5 草案标准中记录的 ISO 脚本类、非连接子类和书法特定组。
6 刷子非连接 此样式的特点是非连接(不连接)的字符,这些字符具有打印(或用硬刷绘制)的外观,粗细笔画之间有中等对比度。此字体样式的一个示例是 Saltino 系列。此 IBM 子类反映了 12/87 ISO/IEC 9541-5 草案标准中记录的 ISO 脚本类、非连接子类和刷子特定组。
7 正式非连接 此样式的特点是非连接(不连接)的字符,这些字符具有打印(或用硬刷绘制)的外观,粗细笔画之间有极大的对比度。此字体样式的一个示例是 Virtuosa 系列。此 IBM 子类反映了 12/87 ISO/IEC 9541-5 草案标准中记录的 ISO 脚本类、非连接子类和正式特定组。
8 单调非连接 此样式的特点是非连接(非连接)字符具有统一的外观,笔画几乎没有对比。此字体样式的一个示例是 Gilles Gothic 系列。此 IBM 子类反映了 12/87 ISO/IEC 9541-5 草案标准中记录的 ISO 脚本类、非连接子类和单调特定组。
9-14 保留 这些子类 ID 保留用于将来分配,未经 IBM 正式分配不得使用。
15 杂项 此子类 ID 用于关联设计类中未被其他子类覆盖的杂项设计。

此样式包括那些旨在模拟手写的字体。此 IBM 类反映了 12/87 ISO/IEC 9541-5 草案标准中记录的 ISO Script 类和 Uncial 类。

# 类 ID = 12:符号

此样式通常独立于设计,使其适用于 Pi 和特殊字符(图标、装饰符号、技术符号等),这些字符可与任何字体同样很好地使用。此 IBM 类反映了各种 ISO 特定组,如下所述。它记录在 12/87 ISO/IEC 9541-5 草案标准中。 表 18:符号(ClassID=12)

子类 名称 描述
0 未分类 此子类 ID 用于指示相关字体没有设计子类,或者设计子类对于字体资源的创建者或用户来说并不重要。
1-2 保留 这些子类 ID 保留用于将来分配,未经 IBM 正式分配不得使用。
3 混合衬线 此样式的特点是字体中那些设计很重要的字符(例如,上标和下标字符、数字、版权或商标符号等)同时使用衬线和无衬线设计或两者结合。IBM Symbol 系列中就有此字体样式的示例。此 IBM 子类未反映在 12/87 ISO/IEC 9541-5 草案标准中。
4-5 保留 这些子类 ID 保留用于将来分配,未经 IBM 正式分配不得使用。
6 老式衬线 这种风格的特点是,在字体中那些设计很重要的字符(例如,上标和下标字符、数字、版权或商标符号等)上采用老式衬线 IBM 类设计。IBM Sonoran Pi Serif 系列就是这种字体风格的一个示例。这个 IBM 子类没有直接反映在 12/87 ISO/IEC 9541-5 草案标准中,但它间接反映在 ISO 衬线类和易读性子类中(意味着字体的所有字符都表现出设计外观,而实际上只有一部分字符表现出设计)。
7 Neo-grotesque Sans Serif 这种风格的特点是,在字体中那些设计很重要的字符(例如,上标和下标字符、数字、版权或商标符号等)上采用 Neo-grotesque Sans Serif IBM 字体类和子类设计。IBM Sonoran Pi Sans Serif 系列就是这种字体风格的一个示例。此 IBM 子类未直接反映在 12/87 ISO/IEC 9541-5 草案标准中,尽管它间接反映在 ISO Sans Serif 类和 Gothic 子类中(意味着字体的所有字符都具有设计外观,而实际上只有一部分字符具有设计)。
8-14 保留 这些子类 ID 保留用于将来分配,未经 IBM 正式分配不得使用。
15 杂项 此子类 ID 用于关联设计类中未被其他子类覆盖的杂项设计。

# PANOSE

表 19 记录了一个 10 字节数组,用于描述 PANOSE 分类编号。表 20 至 29 记录了每个字节数组的内容。PANOSE 指定非拉丁字符集所需的其他规范。 PANOSE 定义包含十个数字,每个数字目前最多可描述十六种变体。

这一系列 10 字节的数字用于描述给定字体的视觉特征。然后使用这些特征将字体与具有不同名称的类似外观的其他字体相关联。每个数字的变量如下所示。每个变量的规范可在 Microsoft 提供的规范 PANOSE v2.0 Numerical Evaluation 中获得。

表19: PANOSE

类型 名称
uint8_t bFamilyType;
uint8_t bSerifStyle;
uint8_t bWeight;
uint8_t bProportion;
uint8_t bContrast;
uint8_t bStrokeVariation;
uint8_t bArmStyle;
uint8_t bLetterform;
uint8_t bMidline;
uint8_t bXHeight;

表20: bFamilyType

位 含义
0 任意
1 不适合
2 文本和显示
3 脚本
4 装饰
5 图案

表21: bSerifStyle

位 含义
0 任意
1 不适合
2 凹陷
3 钝角凹陷
4 方形凹陷
5 钝角方形凹陷
6 方形
7 细
8 骨色
9 夸张
10 三角形
11 普通无衬线体
12 钝角无衬线体
13 垂直无衬线体
14 喇叭形
15 圆形

表22: bWeight

位 含义
0 任意
1 不适合
2 非常轻
3 轻
4 薄
5 书本
6 中等
7 半粗
8 粗体
9 重
10 黑色
11 北欧

表 23: b比例

位 含义
0 任意
1 不适合
2 老式
3 现代
4 宽度均匀
5 扩展
6 压缩
7 非常扩展
8 非常压缩
9 等宽

表 24: b对比度

位 含义
0 任何
1 不适合
2 无
3 非常低
4 低
5 中低
6 中
7 中高
8 高
9 非常高

表 25: bStrokeVariatoon

位 含义
0 任意
1 不适合
2 渐进/对角线
3 渐进/过渡
4 渐进/垂直
5 渐进/水平
6 快速/垂直
7 快速/水平
8 即时/垂直

表 26: bArmStyle

位 含义
0 任意
1 不适合
2 直臂/水平
3 直臂/楔形
4 直臂/垂直
5 直臂/单衬线
6 直臂/双衬线
7 非直臂/水平
8 非直臂/楔形
9 非直臂/垂直
10 非直臂/单衬线
11 非直臂/双衬线

表 27: bLetterform

位 含义
0 任意
1 不适合
2 正常/接触
3 正常/加重
4 正常/盒状
5 正常/扁平
6 正常/圆形
7 正常/偏心
8 正常/方形
9 倾斜/接触
10 倾斜/加重
11 倾斜/盒状
12 倾斜/扁平
13 倾斜/圆形
14 倾斜/偏心
15 倾斜/方形

表 28 b中线

位 含义
0 任意
1 不适合
2 标准/修剪
3 标准/尖头
4 标准/带衬线
5 高/修剪
6 高/尖头
7 高/带衬线
8 恒定/修剪
9 恒定/尖头
10 恒定/带衬线
11 低/修剪
12 低/尖头
13 低/带衬线

表 29: bXHeight

位 含义
0 任意
1 不适合
2 恒定/小
3 恒定/标准
4 恒定/大
5 闪避/小
6 闪避/标准
7 闪避/大

# ulUnicodeRange

ulUnicodeRange 是一个由四个 32 位无符号整数组成的数组,被视为单个位域,表示字体覆盖的 Unicode 块或范围,值为 1 表示给定的块或范围被视为“覆盖”,值为 0 表示未覆盖。

“覆盖”的确切语义尚未定义,这为字体设计者提供了一些灵活性。为了说明这一点,请考虑第 33 位,它对应于 Unicode 货币符号块 (U+20A0–U+20CF)。

截至 Unicode 8.0,此块有 31 个已定义的字符。一个 (U+20A0 欧元货币符号) 不对应于现在或过去使用的任何实际货币。其他几个 (例如,U+20A3 法郎符号) 对应于不再使用的货币。此外,随着新货币符号的创建,将来可能会向此块添加新字符,例如,U+20BE LARI SYMBOL 已添加到 Unicode 8.0。

因此,要求字体供应商覆盖此块中定义的每个字符以声称 ulUnicodeRange 字段的第 33 位“覆盖”是不合理的。有些字符在实践中不太可能需要,并且对给定版本的 Unicode 标准的块的完整覆盖可能不是对更高版本的完全覆盖。

此字段中的位到 Unicode 块和范围的映射可以在 OpenType 规范中找到。

# achVendID

achVendID 是一个 4 字节字符数组,用于指定字体供应商标识。

它不是原始图片的版权所有者,而是负责营销和分发被分类的字体的公司。可以合理地假设,在不久的将来(如果还没有的话),将有 6 家 ITC Zapf Dingbats 供应商用于桌面平台。供应商的字体也可能具有其他固有优势(更多字距对、非正则化数据、手工提示等)。此标识符将允许使用正确的供应商类型,而不是另一个可能较差的字体文件。这些 ID 由 Microsoft 分配;当前分配的供应商 ID 显示在表 30 中。

表 30:供应商标识

供应商 ID 供应商名称
'ACG ' AGFA Compugraphic
'Adbe' Adobe
'Appl' Apple
'Alts' Altsys
'B? ' Bigelow & Holmes
'Bert' Berthold
'Bits' Bitstream
'DTC ' Digital Typeface Corp.
'HP ' Hewlett-Packard
'IBM ' IBM
'KATF' Kingsley/ATF
'Lans' Lanston Type Co., Ltd.
'LETR' Letraset
'Lino' Linotype
'Mono' Monotype
'MS ' Microsoft
'QMSI' QMS/Imagen
'URW ' URW
ZSFT ZSof

# fsSelection

fsSelection 是一个 2 字节位字段,包含有关字体图案性质的信息,如下所示: 表 31:字体图案

位# C 定义 描述
0 ITALIC 字体包含斜体字符,否则为直立。
1 下划线 字符带有下划线。
2 负片 字符的前景和背景反转。
3 轮廓 轮廓(空心)字符,否则为实心。
4 删除线 字符加粗。
5 粗体 字符加粗。

# 平台特定信息

此表未被 macOS 充分使用;但是,它被其他平台和非 Apple 产品广泛使用。

即使字体仅供 macOS 使用,字体供应商也应准确填写此表中的所有数据。

许多字体在其“OS/2”表中的信息不准确。Apple 建议 macOS 客户端应用程序不要依赖“OS/2”表中的准确信息。

# 依赖项

“OS/2”表中的许多字段复制了字体中其他地方的数据;最值得注意的是,各种上升和下降字段反映了水平标题表的一些内容。macOS 从后者获取上升和下降信息;Windows 从前者获取。

打算在两个平台上使用的字体必须在这两个表中具有一致的字体上升和下降值。