freetype2-bitmap-foundry
authorAnas Nashif <anas.nashif@intel.com>
Wed, 7 Nov 2012 22:06:12 +0000 (14:06 -0800)
committerAnas Nashif <anas.nashif@intel.com>
Wed, 7 Nov 2012 22:06:12 +0000 (14:06 -0800)
src/pcf/pcfread.c

index d9914c0..178e88c 100644 (file)
@@ -1175,8 +1175,34 @@ THE SOFTWARE.
       prop = pcf_find_property( face, "FAMILY_NAME" );
       if ( prop && prop->isString )
       {
-        if ( FT_STRDUP( root->family_name, prop->value.atom ) )
-          goto Exit;
+             int l = ft_strlen( prop->value.atom ) + 1;
+             int wide = 0;
+             PCF_Property foundry_prop = pcf_find_property( face, "FOUNDRY" );
+             PCF_Property point_size_prop = pcf_find_property( face, "POINT_SIZE" );
+             PCF_Property average_width_prop = pcf_find_property( face, "AVERAGE_WIDTH" );
+             if ( point_size_prop != NULL && average_width_prop != NULL) {
+                     if ( average_width_prop->value.l >= point_size_prop->value.l ) {
+                             /* This font is at least square shaped or even wider */
+                             wide = 1;
+                             l += ft_strlen( " Wide");
+                     }
+             }
+             if ( foundry_prop != NULL && foundry_prop->isString) {
+                     l += ft_strlen( foundry_prop->value.atom ) + 1;
+                     if ( FT_NEW_ARRAY( root->family_name, l ) )
+                             goto Exit;
+                     ft_strcpy( root->family_name, foundry_prop->value.atom );
+                     strcat( root->family_name, " ");
+                     strcat( root->family_name, prop->value.atom );
+             }
+             else {
+                     if ( FT_NEW_ARRAY( root->family_name, l ) )
+                             goto Exit;
+                     ft_strcpy( root->family_name, prop->value.atom );
+             }
+             if ( wide != 0) {
+                     strcat( root->family_name, " Wide");
+             }
       }
       else
         root->family_name = NULL;