* src/autofit/aflatin.c (af_latin_metrics_init): fixing bug #12212 (auto-hinter refuses to work if no Unicode charmap in font)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
diff --git a/ChangeLog b/ChangeLog
index 3a1edc3..c1c95ce 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 <wl@gnu.org>
* autogen.sh: New script for bootstrapping.
diff --git a/src/autofit/aflatin.c b/src/autofit/aflatin.c
index 925698c..574ab7d 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;
}