|
|
@ -333,11 +333,11 @@ Font LoadFontEx(const char *fileName, int fontSize, int *fontChars, int charsCou |
|
|
|
{ |
|
|
|
Font font = { 0 }; |
|
|
|
|
|
|
|
#if defined(SUPPORT_FILEFORMAT_TTF) |
|
|
|
font.baseSize = fontSize; |
|
|
|
font.charsCount = (charsCount > 0)? charsCount : 95; |
|
|
|
font.chars = LoadFontData(fileName, font.baseSize, fontChars, font.charsCount, FONT_DEFAULT); |
|
|
|
|
|
|
|
#if defined(SUPPORT_FILEFORMAT_TTF) |
|
|
|
if (font.chars != NULL) |
|
|
|
{ |
|
|
|
Image atlas = GenImageFontAtlas(font.chars, &font.recs, font.charsCount, font.baseSize, 2, 0); |
|
|
@ -354,7 +354,6 @@ Font LoadFontEx(const char *fileName, int fontSize, int *fontChars, int charsCou |
|
|
|
} |
|
|
|
else font = GetFontDefault(); |
|
|
|
#else |
|
|
|
UnloadFont(font); |
|
|
|
font = GetFontDefault(); |
|
|
|
#endif |
|
|
|
|
|
|
@ -498,24 +497,16 @@ CharInfo *LoadFontData(const char *fileName, int fontSize, int *fontChars, int c |
|
|
|
|
|
|
|
#if defined(SUPPORT_FILEFORMAT_TTF) |
|
|
|
// Load font data (including pixel data) from TTF file |
|
|
|
// NOTE: Loaded information should be enough to generate font image atlas, |
|
|
|
// using any packaging method |
|
|
|
FILE *fontFile = fopen(fileName, "rb"); // Load font file |
|
|
|
|
|
|
|
if (fontFile != NULL) |
|
|
|
// NOTE: Loaded information should be enough to generate |
|
|
|
// font image atlas, using any packaging method |
|
|
|
int dataSize = 0; |
|
|
|
unsigned char *fileData = LoadFileData(fileName, &dataSize); |
|
|
|
|
|
|
|
if (fileData != NULL) |
|
|
|
{ |
|
|
|
fseek(fontFile, 0, SEEK_END); |
|
|
|
long size = ftell(fontFile); // Get file size |
|
|
|
fseek(fontFile, 0, SEEK_SET); // Reset file pointer |
|
|
|
|
|
|
|
unsigned char *fontBuffer = (unsigned char *)RL_MALLOC(size); |
|
|
|
|
|
|
|
fread(fontBuffer, size, 1, fontFile); |
|
|
|
fclose(fontFile); |
|
|
|
|
|
|
|
// Init font for data reading |
|
|
|
stbtt_fontinfo fontInfo; |
|
|
|
if (!stbtt_InitFont(&fontInfo, fontBuffer, 0)) TRACELOG(LOG_WARNING, "Failed to init font!"); |
|
|
|
if (!stbtt_InitFont(&fontInfo, fileData, 0)) TRACELOG(LOG_WARNING, "Failed to init font!"); |
|
|
|
|
|
|
|
// Calculate font scale factor |
|
|
|
float scaleFactor = stbtt_ScaleForPixelHeight(&fontInfo, (float)fontSize); |
|
|
@ -595,12 +586,9 @@ CharInfo *LoadFontData(const char *fileName, int fontSize, int *fontChars, int c |
|
|
|
*/ |
|
|
|
} |
|
|
|
|
|
|
|
RL_FREE(fontBuffer); |
|
|
|
RL_FREE(fileData); |
|
|
|
if (genFontChars) RL_FREE(fontChars); |
|
|
|
} |
|
|
|
else TRACELOG(LOG_WARNING, "[%s] TTF file could not be opened", fileName); |
|
|
|
#else |
|
|
|
TRACELOG(LOG_WARNING, "[%s] TTF support is disabled", fileName); |
|
|
|
#endif |
|
|
|
|
|
|
|
return chars; |
|
|
|