diff --git a/src/text.c b/src/text.c index 35a5f0494..ebd5d44ea 100644 --- a/src/text.c +++ b/src/text.c @@ -172,7 +172,7 @@ extern void LoadDefaultFont(void) //fclose(myimage); Image image = LoadImageEx(imagePixels, imWidth, imHeight); - ImageConvertFormat(&image, UNCOMPRESSED_GRAY_ALPHA); + ImageFormat(&image, UNCOMPRESSED_GRAY_ALPHA); free(imagePixels); @@ -211,7 +211,7 @@ extern void LoadDefaultFont(void) else currentPosX = testPosX; } - defaultFont.size = defaultFont.charRecs[0].y; + defaultFont.size = defaultFont.charRecs[0].height; TraceLog(INFO, "[TEX ID %i] Default font loaded successfully", defaultFont.texture.id); } @@ -242,10 +242,10 @@ SpriteFont LoadSpriteFont(const char *fileName) Image image = LoadImage(fileName); #if defined(PLATFORM_WEB) - ImageConvertToPOT(&image, MAGENTA); + ImageToPOT(&image, MAGENTA); #endif // Process bitmap font pixel data to get characters measures - // spriteFont.charSet data is filled inside the function and memory is allocated! + // spriteFont chars data is filled inside the function and memory is allocated! int numChars = ParseImageData(image, &spriteFont.charValues, &spriteFont.charRecs); TraceLog(DEBUG, "[%s] SpriteFont data parsed correctly", fileName); @@ -288,7 +288,6 @@ void DrawText(const char *text, int posX, int posY, int fontSize, Color color) } // Draw text using SpriteFont -// NOTE: If font size is lower than base size, base size is used // NOTE: chars spacing is NOT proportional to fontSize void DrawTextEx(SpriteFont spriteFont, const char *text, Vector2 position, int fontSize, int spacing, Color tint) { @@ -299,21 +298,27 @@ void DrawTextEx(SpriteFont spriteFont, const char *text, Vector2 position, int f Rectangle rec; - //if (fontSize <= spriteFont.charRecs[0].height) scaleFactor = 1.0f; - //else scaleFactor = (float)fontSize / spriteFont.charRecs[0].height; - scaleFactor = (float)fontSize/spriteFont.charRecs[0].height; + // NOTE: Some ugly hacks are made to support Latin-1 Extended characters directly + // written in C code files (codified by default as UTF-8) + for(int i = 0; i < length; i++) { - if ((unsigned char)text[i] == 0xc2) + // TODO: Right now we are supposing characters follow a continous order and start at FONT_FIRST_CHAR, + // this sytem can be improved to support any characters order and init value... + // An intermediate table could be created to link char values with predefined char position index in chars rectangle array + + if ((unsigned char)text[i] == 0xc2) // UTF-8 encoding identification HACK! { + // Support UTF-8 encoded values from [0xc2 0x80] -> [0xc2 0xbf](¿) letter = (unsigned char)text[i + 1]; rec = spriteFont.charRecs[letter - FONT_FIRST_CHAR]; i++; } - else if ((unsigned char)text[i] == 0xc3) + else if ((unsigned char)text[i] == 0xc3) // UTF-8 encoding identification HACK! { + // Support UTF-8 encoded values from [0xc3 0x80](À) -> [0xc3 0xbf](ÿ) letter = (unsigned char)text[i + 1]; rec = spriteFont.charRecs[letter - FONT_FIRST_CHAR + 64]; i++; @@ -569,7 +574,7 @@ static SpriteFont LoadRBMF(const char *fileName) } Image image = LoadImageEx(imagePixels, rbmfHeader.imgWidth, rbmfHeader.imgHeight); - ImageConvertFormat(&image, UNCOMPRESSED_GRAY_ALPHA); + ImageFormat(&image, UNCOMPRESSED_GRAY_ALPHA); free(imagePixels);