Дополнительные элементы в стеке при разборе данных шрифта CFF - PullRequest
0 голосов
/ 04 июня 2009

Я написал несколько подпрограмм для разбора данных шрифтов CFF.

Иногда я получаю дополнительные элементы в стеке при обработке команд hvcurveto и vvcurveto.

Для этих двух команд глубина стека должна быть либо

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

или

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

Для некоторых шрифтов размер стека равен 10. По некоторым причинам там есть дополнительный параметр.

Означает ли это, что я допустил ошибку при обработке предыдущих команд или дополнительные команды в стеке являются общими для шрифтов CFF?

Команды кривой находятся в подпрограмме, и кажется, что дополнительный параметр передается в подпрограмму.

Кажется, что дополнительные параметры присутствуют всякий раз, когда есть команды подсказок в середине потока CFF, а не в самом начале.

1 Ответ

1 голос
/ 04 июня 2009

Согласно спецификациям CFF в стеке не должно быть лишних предметов - маркеры начала и конца стека явно присутствуют по какой-то причине.

Оказывается, я неправильно обрабатывал маску подсказок, и это неправильно оставило дополнительный параметр в стеке.

...