|
|
@ -335,30 +335,15 @@ Font LoadFont(const char *fileName) |
|
|
|
Font LoadFontEx(const char *fileName, int fontSize, int *fontChars, int charsCount) |
|
|
|
{ |
|
|
|
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 (font.chars != NULL) |
|
|
|
{ |
|
|
|
Image atlas = GenImageFontAtlas(font.chars, &font.recs, font.charsCount, font.baseSize, 2, 0); |
|
|
|
font.texture = LoadTextureFromImage(atlas); |
|
|
|
|
|
|
|
// Update chars[i].image to use alpha, required to be used on ImageDrawText() |
|
|
|
for (int i = 0; i < font.charsCount; i++) |
|
|
|
{ |
|
|
|
UnloadImage(font.chars[i].image); |
|
|
|
font.chars[i].image = ImageFromImage(atlas, font.recs[i]); |
|
|
|
} |
|
|
|
|
|
|
|
UnloadImage(atlas); |
|
|
|
} |
|
|
|
else font = GetFontDefault(); |
|
|
|
#else |
|
|
|
font = GetFontDefault(); |
|
|
|
#endif |
|
|
|
|
|
|
|
// Loading file to memory |
|
|
|
unsigned int fileSize = 0; |
|
|
|
unsigned char *fileData = LoadFileData(fileName, &fileSize); |
|
|
|
|
|
|
|
// Loading font from memory data |
|
|
|
font = LoadFontFromMemory(GetFileExtension(fileName), (char *)fileData, fileSize, fontSize, fontChars, charsCount); |
|
|
|
|
|
|
|
RL_FREE(fileData); |
|
|
|
|
|
|
|
return font; |
|
|
|
} |
|
|
@ -485,6 +470,45 @@ Font LoadFontFromImage(Image image, Color key, int firstChar) |
|
|
|
return font; |
|
|
|
} |
|
|
|
|
|
|
|
// Load font from memory buffer, fileType refers to extension: i.e. "ttf" |
|
|
|
Font LoadFontFromMemory(const char *fileType, const char *fileData, int dataSize, int fontSize, int *fontChars, int charsCount) |
|
|
|
{ |
|
|
|
Font font = { 0 }; |
|
|
|
|
|
|
|
char fileExtLower[16] = { 0 }; |
|
|
|
strcpy(fileExtLower, TextToLower(fileType)); |
|
|
|
|
|
|
|
#if defined(SUPPORT_FILEFORMAT_TTF) |
|
|
|
if (TextIsEqual(fileExtLower, "ttf") || |
|
|
|
TextIsEqual(fileExtLower, "otf")) |
|
|
|
{ |
|
|
|
font.baseSize = fontSize; |
|
|
|
font.charsCount = (charsCount > 0)? charsCount : 95; |
|
|
|
font.chars = LoadFontData(fileData, dataSize, font.baseSize, fontChars, font.charsCount, FONT_DEFAULT); |
|
|
|
|
|
|
|
if (font.chars != NULL) |
|
|
|
{ |
|
|
|
Image atlas = GenImageFontAtlas(font.chars, &font.recs, font.charsCount, font.baseSize, 2, 0); |
|
|
|
font.texture = LoadTextureFromImage(atlas); |
|
|
|
|
|
|
|
// Update chars[i].image to use alpha, required to be used on ImageDrawText() |
|
|
|
for (int i = 0; i < font.charsCount; i++) |
|
|
|
{ |
|
|
|
UnloadImage(font.chars[i].image); |
|
|
|
font.chars[i].image = ImageFromImage(atlas, font.recs[i]); |
|
|
|
} |
|
|
|
|
|
|
|
UnloadImage(atlas); |
|
|
|
} |
|
|
|
else font = GetFontDefault(); |
|
|
|
} |
|
|
|
#else |
|
|
|
font = GetFontDefault(); |
|
|
|
#endif |
|
|
|
|
|
|
|
return font; |
|
|
|
} |
|
|
|
|
|
|
|
// Load font data for further use |
|
|
|
// NOTE: Requires TTF font memory data and can generate SDF data |
|
|
|
CharInfo *LoadFontData(const char *fileData, int dataSize, int fontSize, int *fontChars, int charsCount, int type) |
|
|
|