2009-06-04 20 views
0

我已經寫了幾個例程來解析CFF字體數據。解析CFF字體數據時堆棧上的額外項目

在處理hvcurvetovvcurveto命令時,偶爾會在堆棧中獲取額外的項目。

對於這兩個命令的堆棧深度應該是

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

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

對於一些字體我得到的10堆棧大小有一個額外的參數有某種原因。

這是否表明我在處理以前的命令時犯了一個錯誤 - 或者在CFF字體的常見堆棧上有額外的命令?

曲線命令在子程序中,額外的參數似乎被傳遞到子程序中。

似乎只要在CFF流中間有提示命令而不是在開始時有額外的參數存在。

回答

1

根據CFF規範,堆棧上不應該有額外的項目 - 開始和結束堆棧標記顯然是有原因的。

事實證明,我沒有正確處理提示掩碼,這不正確地將額外的參數留在堆棧上。