如何在C ++中使用Freetype2获取真实类型字体支持的代码点列表

时间:2017-08-01 01:16:26

标签: c++ true-type-fonts freetype2

如何使用Freetype2库获取真实字体支持的字形或代码点列表?

1 个答案:

答案 0 :(得分:1)

Freetype提供了两个功能来完成此任务。第一个是FT_Get_First_Char(FT_Face face, FT_UInt * agindex)

此函数将返回字体支持的第一个字符的代码。它还会将agindex指向的变量设置为字形中字形所具有的索引。请注意,如果将其设置为0,则表示字体中没有其他字符。

您需要的下一个功能是 FT_Get_Next_Char(FT_Face face, FT_ULong char_code, FT_UInt * agindex)。这将允许您通过返回其值来获取字体中的下一个可用字符。请注意,与FT_Get_First_Char一样,这也会在返回最终字形时将agindex设置为零。

现在举一个有效的例子:

    // Load freetype library before hand.
FT_Face face;

// Load the face by whatever means you feel are best.

FT_UInt index;
FT_ULong c = FT_Get_First_Char(face, &index);

while (index) {
    std::cout << "Supported Code: " << c << std::endl;

    // Load character glyph.
    FT_Load_Char(face, c, FT_LOAD_RENDER);

    // You can now access the glyph with:
    // face->glyph;

    // Now grab the next charecter.
    c = FT_Get_Next_Char(face, c, &index);
}

// Make sure to clean up your mess.