“紧凑字体格式规范”解释(第 13 页)标题中的offSize
字段“指定相对于 CFF 数据开头的所有偏移量 (0) 的大小”。文档中提到了各种偏移量,但它们中的大多数(全部?)要么有自己的单独offSize
字段(例如,在第 12 页的表 7 中),要么它们被编码为 dict 数据操作数(例如charset
,Top DICT 中的字段,在第 15 页的表 9)。
哪些偏移量实际上使用了标头中的offSize
字段?
“紧凑字体格式规范”解释(第 13 页)标题中的offSize
字段“指定相对于 CFF 数据开头的所有偏移量 (0) 的大小”。文档中提到了各种偏移量,但它们中的大多数(全部?)要么有自己的单独offSize
字段(例如,在第 12 页的表 7 中),要么它们被编码为 dict 数据操作数(例如charset
,Top DICT 中的字段,在第 15 页的表 9)。
哪些偏移量实际上使用了标头中的offSize
字段?
我遵循了 Peter Constable 评论中的提示:CFF 的 FreeType 实现读取该offSize
字段,但随后只检查该值的有效性,甚至不存储它以供以后使用。据此,我假设该字段只是一些奇怪的(历史?)人工制品,并没有实际使用。
有问题的代码在文件src/cff/cffload.c
中,从第 2243 行开始。该变量absolute_offset
对应offSize
于规范中:
{
FT_Byte absolute_offset;
if ( FT_READ_BYTE( absolute_offset ) )
goto Exit;
if ( font->version_major != 1 ||
font->header_size < 4 ||
absolute_offset > 4 )
{
FT_TRACE2(( " not a CFF font header\n" ));
error = FT_THROW( Unknown_File_Format );
goto Exit;
}
}
更新。我刚刚发现该offSize
字段已在CFF 格式的第 2 版中被删除。这是该字段可能未使用的另一个提示。