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)
--- 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;
}