FreeType FT_New_Memory_Face崩溃

时间:2011-09-06 07:14:17

标签: freetype

我已将“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 );

2 个答案:

答案 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的指针