shithub: freetype+ttf2subf

Download patch

ref: 6d29f0f1e8bc3dfbb0af274ffde41ee41bc35150
parent: de9479a00dee5aea9e470775d39c70a8f1f7acb3
author: Werner Lemberg <[email protected]>
date: Sat May 3 11:54:15 EDT 2008

* src/base/ftobjs.c (FT_Load_Glyph): Call the auto-hinter without
transformation since it recursively calls FT_Load_Glyph.  This fixes
Savannah bug #23143.

git/fs: mount .git/fs: mount/attach disallowed
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2008-05-03  Werner Lemberg  <[email protected]>
+
+	* src/base/ftobjs.c (FT_Load_Glyph): Call the auto-hinter without
+	transformation since it recursively calls FT_Load_Glyph.  This fixes
+	Savannah bug #23143.
+
 2008-04-26  Werner Lemberg  <[email protected]>
 
 	* include/freetype/internal/psaux.h (T1_BuilderRec): Mark `scale_x'
--- a/src/base/ftobjs.c
+++ b/src/base/ftobjs.c
@@ -634,12 +634,24 @@
           goto Load_Ok;
       }
 
-      /* load auto-hinted outline */
-      hinting = (FT_AutoHinter_Service)hinter->clazz->module_interface;
+      {
+        FT_Face_Internal  internal        = face->internal;
+        FT_Int            transform_flags = internal->transform_flags;
 
-      error   = hinting->load_glyph( (FT_AutoHinter)hinter,
-                                     slot, face->size,
-                                     glyph_index, load_flags );
+
+        /* since the auto-hinter calls FT_Load_Glyph by itself, */
+        /* make sure that glyphs aren't transformed             */
+        internal->transform_flags = 0;
+
+        /* load auto-hinted outline */
+        hinting = (FT_AutoHinter_Service)hinter->clazz->module_interface;
+
+        error   = hinting->load_glyph( (FT_AutoHinter)hinter,
+                                       slot, face->size,
+                                       glyph_index, load_flags );
+
+        internal->transform_flags = transform_flags;
+      }
     }
     else
     {