shithub: freetype+ttf2subf

Download patch

ref: abc47aa1362713192cf8f6747b8de25a3f54e513
parent: 233f9d5dd28e4e21db8d26f096b81c0cbc3a9626
author: suzuki toshiya <[email protected]>
date: Mon Apr 25 19:51:04 EDT 2011

[truetype] Always check the checksum to identify tricky fonts.

Some PDF generators mangle the family name badly, prioritize
the check by the sfnt table checksums than the check by the
family name.  For sample PDF, see
http://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00073.html

* src/truetype/ttobjs.c (tt_check_trickyness): Exchange the order
of tt_check_trickyness_family() and tt_check_trickyness_sfnt_ids().

git/fs: mount .git/fs: mount/attach disallowed
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2011-04-25  Kan-Ru Chen  <[email protected]>
+
+	[truetype] Always check the checksum to identify tricky fonts.
+
+	Some PDF generators mangle the family name badly, prioritize
+	the check by the sfnt table checksums than the check by the
+	family name.  For sample PDF, see
+	http://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00073.html
+
+	* src/truetype/ttobjs.c (tt_check_trickyness): Exchange the order
+	of tt_check_trickyness_family() and tt_check_trickyness_sfnt_ids().
+
 2011-04-22  suzuki toshiya  <[email protected]>
 
 	[autofit] Add more Indic scripts with hanging baseline.
--- a/src/truetype/ttobjs.c
+++ b/src/truetype/ttobjs.c
@@ -332,19 +332,15 @@
     if ( !face )
       return FALSE;
 
-    /* First, check the face name. */
-    if ( face->family_name )
-    {
-      if ( tt_check_trickyness_family( face->family_name ) )
-        return TRUE;
-      else
-        return FALSE;
-    }
-
     /* Type42 fonts may lack `name' tables, we thus try to identify */
     /* tricky fonts by checking the checksums of Type42-persistent  */
     /* sfnt tables (`cvt', `fpgm', and `prep').                     */
     if ( tt_check_trickyness_sfnt_ids( (TT_Face)face ) )
+      return TRUE;
+
+    /* Secondary, check the face name. */
+    if ( face->family_name                               &&
+         tt_check_trickyness_family( face->family_name ) )
       return TRUE;
 
     return FALSE;