0

紧凑字体格式规范”解释(第 13 页)标题中的offSize字段“指定相对于 CFF 数据开头的所有偏移量 (0) 的大小”。文档中提到了各种偏移量,但它们中的大多数(全部?)要么有自己的单独offSize字段(例如,在第 12 页的表 7 中),要么它们被编码为 dict 数据操作数(例如charset,Top DICT 中的字段,在第 15 页的表 9)。

哪些偏移量实际上使用了标头中的offSize字段?

4

1 回答 1

0

我遵循了 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 版中被删除。这是该字段可能未使用的另一个提示。

于 2021-10-31T15:42:37.913 回答