我正在尝试使用FreeType库编写一个简单的脚本。在执行FT_Set_Pixel_Sizes方法期间发生了段错误,尽管我正确使用它。任何帮助都会很棒。这是完整的代码:
#include <ft2build.h>
#include FT_FREETYPE_H
main() {
FT_Library library;
FT_Face face;
FT_GlyphSlot slot;
FT_UInt glyph_index = 30;
char* font_file = "/usr/share/fonts/truetype/freefont/FreeMono.ttf";
// Render font
FT_New_Face(library, font_file, 0, &face);
FT_Set_Pixel_Sizes(face, 0, 16); /* THIS LINE IS CAUSING THE SEGFAULT */
slot = face->glyph;
FT_Load_Glyph(face, glyph_index, FT_LOAD_DEFAULT);
FT_Render_Glyph(face->glyph, FT_RENDER_MODE_NORMAL);
}
答案 0 :(得分:3)
您没有初始化Library
变量:请参阅FT_LIBRARY
documentation。您应该使用FT_Init_FreeType
:
FT_Init_FreeType
在FT_FREETYPE_H(freetype / freetype.h)中定义。
FT_EXPORT(FT_Error)FT_Init_FreeType(FT_Library * alibrary);
初始化一个新的FreeType库对象。这是一组模块 此功能注册的是在构建时确定的。
输出alibrary新库对象的句柄。
返回FreeType错误代码。 0意味着成功。
您可以先跟随此tutorial习惯此库。注意检查返回值......
答案 1 :(得分:1)
您尚未初始化图书馆。
FT_Library library;
error = FT_Init_FreeType(&library);
if (error) { /* report error and exit */ }
您还必须检查上述功能的返回值。例如,FT_New_Face
返回错误(因为它可能在您的情况下),您不能访问face
,因为它处于未定义状态。