shithub: freetype+ttf2subf

Download patch

ref: 8d4ccf5384b6a41d0779e99dbdec115a41188750
parent: fe5c906e9c1f779a1d0b50eeb858b5257080c0a3
author: David Turner <[email protected]>
date: Sun Mar 6 05:17:28 EST 2005

* src/autofit/aflatin.c (af_latin_metrics_init): fixing bug #12212
  (auto-hinter refuses to work if no Unicode charmap in font)

git/fs: mount .git/fs: mount/attach disallowed
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,9 @@
 
   * src/otvalid/{otvgsub.c, otvgpos.c}: making static tables constant
 
+  * src/autofit/aflatin.c (af_latin_metrics_init): fixing bug #12212
+  (auto-hinter refuses to work if no Unicode charmap in font)
+
 2005-03-05  Werner Lemberg  <[email protected]>
 
 	* autogen.sh: New script for bootstrapping.
--- a/src/autofit/aflatin.c
+++ b/src/autofit/aflatin.c
@@ -377,23 +377,38 @@
   af_latin_metrics_init( AF_LatinMetrics  metrics,
                          FT_Face          face )
   {
-    FT_Error    error;
+    FT_Error    error = 0;
     FT_CharMap  oldmap = face->charmap;
+    FT_UInt     ee;
 
+    static const FT_Encoding  latin_encodings[] =
+    {
+      FT_ENCODING_UNICODE,
+      FT_ENCODING_APPLE_ROMAN,
+      FT_ENCODING_ADOBE_STANDARD,
+      FT_ENCODING_ADOBE_LATIN_1,
+      FT_ENCODING_NONE  /* end of list */
+    };
 
-    /* do we have a Unicode charmap in there? */
-    error = FT_Select_Charmap( face, FT_ENCODING_UNICODE );
-    if ( error )
-      goto Exit;
 
     metrics->units_per_em = face->units_per_EM;
 
-    af_latin_metrics_init_widths( metrics, face );
-    af_latin_metrics_init_blues( metrics, face );
+    /* do we have a latin charmap in there? */
+    for ( ee = 0; latin_encodings[ee] != FT_ENCODING_NONE; ee++ )
+    {
+      error = FT_Select_Charmap( face, latin_encodings[ee] );
+      if (!error)
+        break;
+    }
 
-  Exit:
+    if ( !error )
+    {
+      af_latin_metrics_init_widths( metrics, face );
+      af_latin_metrics_init_blues( metrics, face );
+    }
+
     FT_Set_Charmap( face, oldmap );
-    return error;
+    return 0;
   }