我已将“arial.ttf”文件(取自my / Windows / Fonts文件夹)加载到内存中,但是将其传递到FT_New_Memory_Face崩溃(FT_Open_Face中的某个位置)。我无法调试这个,有关我可能做错的任何线索吗?
unsigned char *fontBuffer = LoadFile("arial.ttf");
zip_uint64_t fSize = GetFileSize("arial.ttf");
FT_Library library; /* handle to library */
FT_Face face;
int error = FT_Init_FreeType( &library );
if( error != 0 )
printf("FT_Init_FreeType failed");
error = FT_New_Memory_Face( library,
(FT_Byte*)fontBuffer,
fSize,
0,
&face );
答案 0 :(得分:4)
事实证明问题出在我的最后,特别是,LoadFile方法是从堆栈而不是堆返回内存。图书馆工作正常。谢谢!
答案 1 :(得分:0)
我搜索了1天的答案。问题出在笔记部分。 https://www.freetype.org/freetype2/docs/reference/ft2-base_interface.html#FT_New_Memory_Face 在调用FT_Done_Face之前,请勿释放内存。 FreeType不会复制缓冲区,而是使用您发送给FT_New_Memory_Face的指针