Я пытаюсь заставить свою программу на С++ обнаруживать установленные шрифты на моем компьютере с Win32. Я попробовал fontconfig, взяв библиотеку из комплекта GTK+.
Я использую следующий тестовый код:
#include<fontconfig.h>
FcBool success = FcInit ();
if ( !success ) {
return false;
}
FcConfig *config = FcInitLoadConfigAndFonts ();
if(!config) {
return false;
}
FcChar8 *s, *file;
FcPattern *p = FcPatternCreate();
FcObjectSet *os = FcObjectSetBuild (FC_FAMILY,NULL);
FcFontSet *fs = FcFontList(config, p, os);
LOG("Total fonts: %d\n", fs->nfont);
for (int i=0; fs && i < fs->nfont; i++) {
FcPattern *font = fs->fonts[i];
s = FcNameUnparse(font);
LOG("Font: %s\n", s);
free(s);
if (FcPatternGetString(font, FC_FILE, 0, &file) == FcResultMatch) {
LOG("Filename: %s\n", file);
}
}
// destroy objects here ...
К сожалению, это тестовое приложение печатает только:
Всего шрифтов: 0
Я знаю, что на моем компьютере установлены шрифты, и я знаю, что Gimp2.0 их обнаруживает, поэтому с моим тестовым кодом должно быть что-то не так. У кого-нибудь есть идеи?
Кроме ссылки на fontconfig-1.dll, я больше ничего не делал. Я не создавал никаких файлов конфигурации или чего-то еще, потому что я нигде не мог прочитать о том, что это нужно делать.
Я открыт для ваших предложений, спасибо!