fontconfig не находит шрифты

Я пытаюсь заставить свою программу на С++ обнаруживать установленные шрифты на моем компьютере с 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, я больше ничего не делал. Я не создавал никаких файлов конфигурации или чего-то еще, потому что я нигде не мог прочитать о том, что это нужно делать.

Я открыт для ваших предложений, спасибо!


person cbaakman    schedule 27.11.2012    source источник


Ответы (1)


Вместо:

FcConfig *config = FcInitLoadConfigAndFonts ();

Пытаться:

FcConfig *config = FcConfigCreate();
FcConfigAppFontAddDir(config, (const FcChar8 *)"C:\\Windows\\Fonts");

(это ленивая версия, вы должны адаптировать ее для выхода GetWindowsDirectory...)

person Chris Burt-Brown    schedule 15.09.2013