diff --git a/internal/c/libqb.cpp b/internal/c/libqb.cpp index 80c803ccb..6148d316d 100644 --- a/internal/c/libqb.cpp +++ b/internal/c/libqb.cpp @@ -20890,8 +20890,8 @@ int32 func__printwidth(qbs* text, int32 screenhandle, int32 passed){ } } //remove font - //NO_S_D_L//TTF_CloseFont(font[f]); - //NO_S_D_L//font[f]=NULL; + FontFree(font[f]); + font[f]=NULL; } void sub__printmode(int32 mode,int32 i,int32 passed){ diff --git a/internal/c/parts/video/font/ttf/src.c b/internal/c/parts/video/font/ttf/src.c index 26fd9cf0e..e305ff5e2 100644 --- a/internal/c/parts/video/font/ttf/src.c +++ b/internal/c/parts/video/font/ttf/src.c @@ -13,6 +13,7 @@ int32 FontLoad (uint8 *content_original,int32 content_bytes,int32 default_pixel_ int32 FontRenderTextASCII(int32 i,uint8*codepoint,int32 codepoints,int32 options, uint8**out_data,int32*out_x,int32 *out_y,int32*out_x_pre_increment,int32*out_x_post_increment){return NULL;} int32 FontWidth(int32 i){return NULL;} +void FontFree(int32 i){return;} #else #ifdef QB64_BACKSLASH_FILESYSTEM @@ -297,6 +298,12 @@ return i; } +void FontFree(int32 i) { + FT_Done_Face(fonts[i].handle); + free(fonts[i].ttf_data); + fonts[i].in_use = 0; +} + int32 FontRenderTextASCII(int32 i,uint8*codepoint,int32 codepoints,int32 options, uint8**out_data,int32*out_x,int32 *out_y,int32*out_x_pre_increment,int32*out_x_post_increment){ static uint32 *utf32_codepoint; @@ -318,4 +325,4 @@ if (fonts[i].monospace) return fonts[i].monospace_width; return 0; } -#endif \ No newline at end of file +#endif