OpenType字体规范解析(四)CFF表
我们在设计中经常需要使用字体文件,有时候会想一窥究竟字体文件到底是以怎样的格式存储的,OpenType就是定义字体文件存储格式的规范。
这篇文章主要介绍了CFF表的格式规范。
CFF表存储了字形轮廓和一系列与渲染相关的数据,是OpenType规范中很重要的一个表。
CFF表的详细规范参见https://learn.microsoft.com/en-us/typography/opentype/spec/cff
CFF表结构
| 内容 | 描述 |
|---|---|
| Header | CFF 表的头部,包含版本号、头部大小和偏移等基本信息。 |
| Name INDEX | 列出字体的名称信息,存储一个或多个字体名称。 |
| Top DICT INDEX | 包含字体的全局字典信息,描述字体的顶层属性,例如字体名、字体类型、字符集编码等。可以包括指向其他数据(如 Private DICT 和 Subroutine)的指针。 |
| String INDEX | 存储字体所使用的字符串,主要是自定义的字符串信息,例如字体名称和版权声明,减少重复字符串的存储占用。 |
| Global Subr INDEX | 定义全局子程序(Subroutine)集合,使用的是 PostScript 的子程序调用机制,便于共享和复用字形的矢量操作数据,减少字形数据的冗余。 |
| Encodings | 定义字符编码方式,描述字符 ID(CID)到字形索引的映射。支持标准编码、自定义编码或多种编码格式。 |
| Charsets | 定义字符集,指定字符顺序和每个字符对应的字形名称(glyph name),用于支持复杂的字符系统。 |
| FDSelect | 用于 CID-keyed 字体,映射每个字符到特定的 Font DICT(字体字典),以支持多字体描述,例如变体或多字形字体的选择。 |
| CharStrings INDEX | 包含实际的字形描述信息,每个字形由 PostScript 的字形描述语言(CharStrings)定义,描述字符的轮廓和矢量操作。 |
| Font DICT INDEX | 仅用于 CID-keyed 字体,包含多个字体字典,每个字典定义一个字体变体或相关的字体属性。 |
| Private DICT INDEX | 存储与字体私有数据相关的字典,包括字体设计参数、字距调整(kerning)信息和对 Local Subr 的引用。 |
| Local Subr INDEX | 定义局部子程序(Local Subroutine),与 Global Subr 类似,但仅供特定字体或字符集的字形使用,进一步减少重复数据,优化空间利用。 |
| Copyright and Trademark Notices | 包含字体版权、商标声明等法律信息,通常在 String INDEX 中存储相关字符串并在其他表中引用。 |
DICT
在CFF表中,DICT用于保存字体的各种属性和参数。DIC

2757

被折叠的 条评论
为什么被折叠?



