Some simple patches that allow synthetic fonts to be rendered. *However*: although the FontMatrix is read correctly, it does _not_ seem to be used! I don't understand this...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
diff --git a/src/type1z/z1load.c b/src/type1z/z1load.c
index 7877c06..7d63a34 100644
--- a/src/type1z/z1load.c
+++ b/src/type1z/z1load.c
@@ -1072,6 +1072,10 @@
FT_Fixed temp[4];
+ if ( matrix->xx || matrix->yx )
+ /* with synthetic fonts, it's possible we get here twice */
+ return;
+
(void)Z1_ToFixedArray( parser, 4, temp, 3 );
matrix->xx = temp[0];
matrix->yx = temp[1];
@@ -1326,6 +1330,10 @@
FT_Int n;
+ if ( loader->num_glyphs )
+ /* with synthetic fonts, it's possible we get here twice */
+ return;
+
loader->num_glyphs = Z1_ToInt( parser );
if ( parser->error )
return;
diff --git a/src/type1z/z1parse.c b/src/type1z/z1parse.c
index eecb606..dcd039c 100644
--- a/src/type1z/z1parse.c
+++ b/src/type1z/z1parse.c
@@ -868,6 +868,10 @@
FT_Memory memory = parser->memory;
FT_UInt len = limit-cur;
+ if ( *(FT_String**)q )
+ /* with synthetic fonts, it's possible to find a field twice */
+ break;
+
if ( ALLOC( string, len + 1 ) )
goto Exit;