shithub: freetype+ttf2subf

Download patch

ref: 213b9d01b299b93add98858576c758b3fb0b0c76
parent: b897e4c9c10b669ab29b57bf5688f949bf76213d
author: Werner Lemberg <[email protected]>
date: Tue Dec 28 03:00:09 EST 2004

* src/cff/cffobjs.c (cff_face_init): Improve computation of
FT_STYLE_BOLD_FLAG.

git/fs: mount .git/fs: mount/attach disallowed
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2004-12-27  Dirck Blaskey  <[email protected]>
+
+	* src/cff/cffobjs.c (cff_face_init): Improve computation of
+	FT_STYLE_BOLD_FLAG.
+
 2004-12-27  Werner Lemberg  <[email protected]>
 
 	* src/cff/cffobjs.c (cff_face_init): A CFF within an SFNT can have
--- 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 );
           }
         }
@@ -642,6 +656,12 @@
               flags |= FT_STYLE_FLAG_BOLD;
           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;
       }