fontconfig找不到任何字体

时间:2012-11-27 23:02:27

标签: c++ configuration fonts fontconfig

我正在尝试让我的C ++程序在我的Win32机器上检测已安装的字体。我从GTK +包中获取了库,尝试了fontconfig。

我使用以下测试代码:

#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 ...

#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之外,我什么都没做。我没有创建任何配置文件或任何东西,因为我无法阅读任何关于必须这样做的内容。

我愿意接受你的建议,谢谢!

1 个答案:

答案 0 :(得分:1)

而不是:

FcConfig *config = FcInitLoadConfigAndFonts ();

尝试:

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

(这是懒人版,你应该让它适应GetWindowsDirectory ...)