shithub: freetype+ttf2subf

Download patch

ref: ed3a7d7b0f77030530dbbaecf7b786853a693774
parent: 34808199ce9f2079c2b7bb5c73e607a29e31b16b
author: Werner Lemberg <[email protected]>
date: Tue Oct 7 16:06:35 EDT 2003

* src/type1/t1load.c (parse_dict): Handle synthetic
fonts properly.
(parse_charstrings): Copy correct number of characters into
`name_table'.

git/fs: mount .git/fs: mount/attach disallowed
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,8 @@
 
 	* src/type1/t1load.c (parse_subrs, parse_dict): Handle synthetic
 	fonts properly.
+	(parse_charstrings): Copy correct number of characters into
+	`name_table'.
 
 2003-10-06  Werner Lemberg  <[email protected]>
 
--- a/src/psaux/t1decode.c
+++ b/src/psaux/t1decode.c
@@ -143,7 +143,7 @@
 
 
       if ( name && name[0] == glyph_name[0]  &&
-           ft_strcmp( name,glyph_name ) == 0 )
+           ft_strcmp( name, glyph_name ) == 0 )
         return n;
     }
 
--- a/src/type1/t1load.c
+++ b/src/type1/t1load.c
@@ -1055,10 +1055,14 @@
     T1_Skip_PS_Token( parser );         /* `array' */
     T1_Skip_Spaces  ( parser );
 
-    /* initialize subrs array */
-    error = psaux->ps_table_funcs->init( table, num_subrs, memory );
-    if ( error )
-      goto Fail;
+    /* initialize subrs array -- with synthetic fonts it is possible */
+    /* we get here twice                                             */
+    if ( !loader->num_subrs )
+    {
+      error = psaux->ps_table_funcs->init( table, num_subrs, memory );
+      if ( error )
+        goto Fail;
+    }
 
     /* the format is simple:                                 */
     /*                                                       */
@@ -1220,23 +1224,23 @@
           break;
       }
 
-      if ( *cur != '/' )
-        T1_Skip_PS_Token( parser );
-      else
+      T1_Skip_PS_Token( parser );
+
+      if ( *cur == '/' )
       {
         FT_PtrDist  len;
 
 
-        T1_Skip_PS_Token( parser );
-        if ( cur >= limit )
+        if ( cur + 1 >= limit )
         {
           error = T1_Err_Invalid_File_Format;
           goto Fail;
         }
 
+        cur++;                              /* skip `/' */
         len = parser->root.cursor - cur;
 
-        error = T1_Add_Table( name_table, n, cur + 1, len + 1 );
+        error = T1_Add_Table( name_table, n, cur, len + 1 );
         if ( error )
           goto Fail;