FontConfigFont * FcGetFontFromFile (gchar * filepath, int index) { g_assert(FcInit()); int count; FontConfigFont * font = font_config_font_new(); FcBlanks * blanks = FcBlanksCreate(); FcPattern * pattern = FcFreeTypeQuery((const FcChar8 *) filepath, index, blanks, &count); if (!pattern) { g_warning("Failed to create FontConfig pattern for file : %s", filepath); if (font) g_object_unref(font); if (blanks) FcBlanksDestroy(blanks); return NULL; } else { get_font_details_from_pattern(font, pattern); } if (blanks) FcBlanksDestroy(blanks); if (pattern) FcPatternDestroy(pattern); return font; }
FcBool FcConfigAddBlank (FcConfig *config, FcChar32 blank) { FcBlanks *b, *freeme = 0; b = config->blanks; if (!b) { freeme = b = FcBlanksCreate (); if (!b) return FcFalse; } if (!FcBlanksAdd (b, blank)) { if (freeme) FcBlanksDestroy (freeme); return FcFalse; } config->blanks = b; return FcTrue; }