diff --git a/ChangeLog b/ChangeLog index 3a1edc35c..c1c95cecd 100644 --- 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 * autogen.sh: New script for bootstrapping. diff --git a/src/autofit/aflatin.c b/src/autofit/aflatin.c index 925698ccb..574ab7d40 100644 --- 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; + } + + if ( !error ) + { + af_latin_metrics_init_widths( metrics, face ); + af_latin_metrics_init_blues( metrics, face ); + } - Exit: FT_Set_Charmap( face, oldmap ); - return error; + return 0; }