解析CFF字体数据时堆栈上的额外项目

时间:2009-06-04 08:28:26

标签: parsing fonts

我编写了一些例程来解析CFF字体数据。

在处理hvcurvetovvcurveto命令时,偶尔我会在堆栈上获得额外的项目。

对于这两个命令,堆栈深度应为

4, 5, 12, 13, 20, 21, ...

8, 9, 16, 17, 24, 25, ...

对于某些字体,我的堆栈大小为10.由于某种原因,还有一个额外的参数。

这是否表明我在处理前面的命令时犯了错误 - 或者是CFF字体常用的堆栈上的额外命令?

曲线命令位于子程序中,额外参数似乎传递给子程序。

似乎只要在CFF流的中间有提示命令而不是在开头就有额外的参数。

1 个答案:

答案 0 :(得分:1)

根据CFF规范,堆栈中不应该有额外的项目 - 开始和结束堆栈标记显然是有原因的。

事实证明我没有正确处理提示掩码,这错误地将额外参数留在了堆栈上。