shithub: freetype+ttf2subf

Download patch

ref: b17fb11f93c4d9df1051b89b0804a0cf905a02df
parent: 89a1a51834bfacbc2909aa4beb99dc007a9ebb98
author: Werner Lemberg <[email protected]>
date: Thu Oct 2 06:17:32 EDT 2008

* src/cff/cffgload.c (cff_slot_load): Map CID 0 to GID 0.  This
fixes Savannah bug #24430.

git/fs: mount .git/fs: mount/attach disallowed
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2008-10-02  Bram Tassyns  <[email protected]>
+
+	* src/cff/cffgload.c (cff_slot_load): Map CID 0 to GID 0.  This
+	fixes Savannah bug #24430.
+
 2008-10-02  Werner Lemberg  <[email protected]>
 
 	* builds/freetype.mk (BASE_H): Rename to...
--- a/src/cff/cffgload.c
+++ b/src/cff/cffgload.c
@@ -2450,9 +2450,9 @@
   {
     FT_Error     error;
     CFF_Decoder  decoder;
-    TT_Face      face     = (TT_Face)glyph->root.face;
+    TT_Face      face = (TT_Face)glyph->root.face;
     FT_Bool      hinting, force_scaling;
-    CFF_Font     cff      = (CFF_Font)face->extra.data;
+    CFF_Font     cff  = (CFF_Font)face->extra.data;
 
     FT_Matrix    font_matrix;
     FT_Vector    font_offset;
@@ -2466,9 +2466,14 @@
     if ( cff->top_font.font_dict.cid_registry != 0xFFFFU &&
          cff->charset.cids                               )
     {
-      glyph_index = cff_charset_cid_to_gindex( &cff->charset, glyph_index );
-      if ( glyph_index == 0 )
-        return CFF_Err_Invalid_Argument;
+      /* don't handle CID 0 (.notdef) which is directly mapped to GID 0 */
+      if ( glyph_index != 0 )
+      {
+        glyph_index = cff_charset_cid_to_gindex( &cff->charset,
+                                                 glyph_index );
+        if ( glyph_index == 0 )
+          return CFF_Err_Invalid_Argument;
+      }
     }
     else if ( glyph_index >= cff->num_glyphs )
       return CFF_Err_Invalid_Argument;