4

Win32 マシンにインストールされているフォントを C++ プログラムに検出させようとしています。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 をリンクする以外は何もしませんでした。それをしなければならないことについてどこにも読めなかったので、私は設定ファイルなどを作成していません。

私はあなたの提案にオープンです、ありがとう!

4

1 に答える 1

1

それ以外の:

FcConfig *config = FcInitLoadConfigAndFonts ();

試す:

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

(これは怠惰なバージョンです。オフになるように調整する必要がありますGetWindowsDirectory...)

于 2013-09-15T23:49:27.650 に答える