【发布时间】:2019-06-06 16:34:39
【问题描述】:
我在解决这些关于 TTF 规范的问题时遇到了问题。
- “head”中的“计算校验和”。
- “头”中的“xMin”、“yMin”等
- “maxp”中的 maxPoints、maxContours、maxComponentPoints、maxComponentContours、maxTwilightPoints
-
uint8 flags[variable] Array of flags在“glyf”中
我想知道是否有人可以澄清这些问题。
1
对于 (1) it says 这个:
checkSumAdjustment 计算:将其设置为 0,计算“head”表的校验和并将其放在表目录中,将整个字体求和为 uint32_t,然后存储 0xB1B0AFBA - sum。 (结果,'head' 表的校验和会出错。没关系;不要重置它。),
我找到了他们引用的两个校验和实现:
// https://docs.microsoft.com/en-us/typography/opentype/spec/otff
uint32
CalcTableChecksum(uint32 *Table, uint32 Length)
{
uint32 Sum = 0L;
uint32 *Endptr = Table+((Length+3) & ~3) / sizeof(uint32);
while (Table < EndPtr)
Sum += *Table++;
return Sum;
}
uint32 CalcTableChecksum(uint32 *table, uint32 numberOfBytesInTable)
{
uint32 sum = 0;
uint32 nLongs = (numberOfBytesInTable + 3) / 4;
while (nLongs-- > 0)
sum += *table++;
return sum;
}
这是简单的实现。我的问题是,校验和 value 的内容是什么。所以看起来是这样的:
- 计算头表的校验和。
- "sum the entire font as a" 不知道这是什么意思。
- 也不知道这一切意味着什么(“然后存储 0xB1B0AFBA - 总和。(结果,'head' 表的校验和将是错误的。没关系;不要重置它。)”)李>
2
对于 (2),我不确定如何计算。看来我只是将所有字形捆绑成一个精灵图,然后计算最终大小。但它说我认为不要考虑字形的边界框,所以不能确切确定它的含义。
3
对于 (3),没有找到任何关于这些变量含义的文档。
4
对于(4),我不知道这是什么意思“uint8 flags[variable] Array of flags”。他们有下表,但我不确定它是 per contour 还是 per glyph 还是 per point。
如果你知道的话,我还有一个关于理解复合字形的相关问题here。
【问题讨论】:
标签: fonts specifications truetype