From 213b9d01b299b93add98858576c758b3fb0b0c76 Mon Sep 17 00:00:00 2001 From: Werner Lemberg Date: Tue, 28 Dec 2004 08:00:09 +0000 Subject: [PATCH] * src/cff/cffobjs.c (cff_face_init): Improve computation of FT_STYLE_BOLD_FLAG. --- ChangeLog | 5 +++++ src/cff/cffobjs.c | 22 +++++++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 0dd772916..f42cf62de 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-12-27 Dirck Blaskey + + * src/cff/cffobjs.c (cff_face_init): Improve computation of + FT_STYLE_BOLD_FLAG. + 2004-12-27 Werner Lemberg * src/cff/cffobjs.c (cff_face_init): A CFF within an SFNT can have diff --git a/src/cff/cffobjs.c b/src/cff/cffobjs.c index cd63524b1..9121a73c0 100644 --- a/src/cff/cffobjs.c +++ b/src/cff/cffobjs.c @@ -537,10 +537,21 @@ psnames ); char* fullp = full; char* family = cffface->family_name; + char* family_name = 0; + + + if ( dict->family_name ) + { + family_name = cff_index_get_sid_string( &cff->string_index, + dict->family_name, + psnames); + if ( family_name ) + family = family_name; + } /* We try to extract the style name from the full name. */ /* We need to ignore spaces and dashes during the search. */ - if ( full ) + if ( full && family ) { while ( *fullp ) { @@ -576,6 +587,9 @@ } break; } + + if ( family_name ) + FT_FREE( family_name ); FT_FREE( full ); } } @@ -643,6 +657,12 @@ FT_FREE( weight ); } + /* double check */ + if ( !(flags & FT_STYLE_FLAG_BOLD) && cffface->style_name ) + if ( !strncmp( cffface->style_name, "Bold", 4 ) || + !strncmp( cffface->style_name, "Black", 5 ) ) + flags |= FT_STYLE_FLAG_BOLD; + cffface->style_flags = flags; }