Сбой FreeType FT_New_Memory_Face - PullRequest
       6

Сбой FreeType FT_New_Memory_Face

0 голосов
/ 06 сентября 2011

Я загрузил файл «arial.ttf» (взятый из моей папки / 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 ]

4 голосов
/ 09 сентября 2011

Оказывается, проблема была на моем конце, в частности, метод LoadFile возвращал память из стека, а не кучи. Библиотека работает нормально. Спасибо!

0 голосов
/ 23 октября 2018

Я искал ответ в течение 1 дня.Проблема была в разделе заметок.https://www.freetype.org/freetype2/docs/reference/ft2-base_interface.html#FT_New_Memory_Face Вы не должны освобождать память перед вызовом FT_Done_Face.FreeType не копирует буфер и использует указатель, который вы отправляете в FT_New_Memory_Face

...