字体配置未找到任何字体。

4
我正在尝试让我的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 ...

很不幸,这个测试应用程序只会打印:

总字体数:0

我知道我的电脑上安装了字体,而且Gimp2.0也能检测到它们,所以我的测试代码肯定有问题。有人有什么想法吗?

除了链接fontconfig-1.dll外,我什么都没做。我没有创建任何配置文件或其他东西,因为我在任何地方都找不到需要这样做的信息。

我乐意听取您的建议,谢谢!

1个回答

1

不要使用:

FcConfig *config = FcInitLoadConfigAndFonts ();

尝试:

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

这是懒惰版本,你需要将其改编为使用 GetWindowsDirectory...)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接