2009-06-04 3 views
0

Ich habe einige Routinen zum Parsen von CFF-Schriftartdaten geschrieben.Zusätzliche Elemente auf Stapel beim Analysieren von CFF-Schriftartdaten

Gelegentlich erhalte ich bei der Verarbeitung eines Befehls hvcurveto und vvcurveto zusätzliche Elemente auf dem Stapel.

Für diese beiden Befehle der Stapeltiefe sollte entweder

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

oder

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

Für einige Schriftarten sein ich einen Stapel von 10. Es gibt immer einen zusätzlichen Parameter dort aus irgendeinem Grunde .

Zeigt dies an, dass ich bei der Verarbeitung der vorherigen Befehle einen Fehler gemacht habe - oder sind zusätzliche Befehle auf dem Stapel für CFF-Schriftarten üblich?

Die Kurvenbefehle befinden sich in einer Subroutine und der zusätzliche Parameter scheint in den Subr übergeben zu werden.

Es scheint, als ob die zusätzlichen Parameter vorhanden sind, wenn sich Tippbefehle in der Mitte des CFF-Streams befinden und nicht gleich zu Beginn.

Antwort

1

Gemäß den CFF-Spezifikationen sollte es keine zusätzlichen Elemente auf dem Stapel geben - die Start- und Endstapelmarkierungen sind eindeutig aus einem bestimmten Grund vorhanden.

Es stellt sich heraus, dass ich die Hinweismaske nicht korrekt verarbeitet habe, und dies hat den zusätzlichen Parameter falsch auf dem Stapel verlassen.