}
static char *
-ct_font_descriptor_get_family_name (CTFontDescriptorRef desc)
+ct_font_descriptor_get_family_name (CTFontDescriptorRef desc,
+ gboolean may_fail)
{
CFStringRef cf_str;
char *buffer;
cf_str = CTFontDescriptorCopyAttribute (desc, kCTFontNameAttribute);
if (!cf_str)
{
+ if (may_fail)
+ return NULL;
+
/* This font is likely broken, return a default family name ... */
return g_strdup ("Sans");
}
/* FIXME: Should we actually retrieve the family name from the list of
* families in a font map?
*/
- family_name = ct_font_descriptor_get_family_name (desc);
+ family_name = ct_font_descriptor_get_family_name (desc, FALSE);
pango_font_description_set_family (font_desc, family_name);
g_free (family_name);
SInt64 font_traits;
char *buffer;
char *family_name;
- CFStringRef str;
CFNumberRef number;
CFDictionaryRef dict;
CTFontDescriptorRef desc = CFArrayGetValueAtIndex (ctfaces, i);
- str = CTFontDescriptorCopyAttribute (desc, kCTFontFamilyNameAttribute);
- buffer = gchar_from_cf_string (str);
+ buffer = ct_font_descriptor_get_family_name (desc, TRUE);
+ if (!buffer)
+ continue;
family_name = g_utf8_casefold (buffer, -1);
family->family_name = g_strdup (buffer);
}
- CFRelease (str);
g_free (buffer);
g_free (family_name);