summaryrefslogtreecommitdiff
path: root/src/cff/cffparse.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/cff/cffparse.h')
-rw-r--r--src/cff/cffparse.h15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/cff/cffparse.h b/src/cff/cffparse.h
index 7c0801596..f27d6c7f7 100644
--- a/src/cff/cffparse.h
+++ b/src/cff/cffparse.h
@@ -28,7 +28,11 @@
FT_BEGIN_HEADER
-#define CFF_MAX_STACK_DEPTH 193
+/* CFF uses constant parser stack size */
+/* CFF2 can increase from default 193 */
+#define CFF_MAX_STACK_DEPTH 96
+#define CFF2_MAX_STACK 513
+#define CFF2_DEFAULT_STACK 193
#define CFF_CODE_TOPDICT 0x1000
#define CFF_CODE_PRIVATE 0x2000
@@ -44,8 +48,9 @@ FT_BEGIN_HEADER
FT_Byte* limit;
FT_Byte* cursor;
- FT_Byte* stack[CFF_MAX_STACK_DEPTH + 1];
+ FT_Byte** stack;
FT_Byte** top;
+ FT_UInt stackSize; /* allocated size */
FT_UInt object_code;
void* object;
@@ -56,14 +61,18 @@ FT_BEGIN_HEADER
} CFF_ParserRec, *CFF_Parser;
- FT_LOCAL( void )
+ FT_LOCAL( FT_Error )
cff_parser_init( CFF_Parser parser,
FT_UInt code,
void* object,
FT_Library library,
+ FT_UInt stackSize,
FT_UShort num_designs,
FT_UShort num_axes );
+ FT_LOCAL( void )
+ cff_parser_done( CFF_Parser parser );
+
FT_LOCAL( FT_Error )
cff_parser_run( CFF_Parser parser,
FT_Byte* start,