shithub: freetype+ttf2subf

Download patch

ref: 552a956247bb35cc8b7c0fb2371a3f8011a5bb29
parent: f0cd69c1b4d1061667ff3da04adac9a4d5d379d9
author: David Turner <[email protected]>
date: Mon May 28 11:45:35 EDT 2007

optimize CFF glyph loader (avoid apply identity font transform)

git/fs: mount .git/fs: mount/attach disallowed
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2007-05-28  David Turner  <[email protected]>
 
+	* src/cff/cffgload.c: do not apply the font transform to loaded glyph
+	if it is the identity. this cuts a significant percent of CFF glyph
+	loading time
+
 	* src/autofit/afglobal.c: change default hinting script to
 	CJK, since it works well with a larger array of scripts. thanks to
 	"Rahul Bhalerao" <[email protected]> for pointing this out !
--- a/src/cff/cffgload.c
+++ b/src/cff/cffgload.c
@@ -2281,6 +2281,7 @@
     FT_Bool      hinting;
     CFF_Font     cff      = (CFF_Font)face->extra.data;
 
+    FT_Bool      use_font_matrix;
     FT_Matrix    font_matrix;
     FT_Vector    font_offset;
 
@@ -2547,11 +2548,16 @@
         glyph->root.outline.flags |= FT_OUTLINE_REVERSE_FILL;
 
         /* apply the font matrix */
-        FT_Outline_Transform( &glyph->root.outline, &font_matrix );
+        if ( font_matrix.xx != 0x10000 && font_matrix.yy != 0x10000 &&
+             font_matrix.xy != 0       && font_matrix.yx != 0 )
+        {
+          FT_Outline_Transform( &glyph->root.outline, &font_matrix );
+        }
 
-        FT_Outline_Translate( &glyph->root.outline,
-                              font_offset.x,
-                              font_offset.y );
+        if ( font_offset.x != 0 || font_offset.y != 0 )
+          FT_Outline_Translate( &glyph->root.outline,
+                                font_offset.x,
+                                font_offset.y );
 
         advance.x = metrics->horiAdvance;
         advance.y = 0;