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