Browse Source

Corrected bug with alpha mask on font

Mask was wrongly applied to 8-bit font image, it generated dark borders
on the font. Grayscale image has to be considered as the alpha mask for
a completely white image to use it correctly.
raysan5 8 years ago
parent
commit
481ce3d39d
1 changed files with 11 additions and 3 deletions
  1. 11 3
      src/text.c

+ 11 - 3
src/text.c

@@ -875,10 +875,18 @@ static SpriteFont LoadBMFont(const char *fileName)
     TraceLog(DEBUG, "[%s] Font texture loading path: %s", fileName, texPath);
     TraceLog(DEBUG, "[%s] Font texture loading path: %s", fileName, texPath);
     
     
     Image imFont = LoadImage(texPath);
     Image imFont = LoadImage(texPath);
+    
+    if (imFont.format == UNCOMPRESSED_GRAYSCALE) 
+    {
+        Image imCopy = ImageCopy(imFont);
+        
+        for (int i = 0; i < imCopy.width*imCopy.height; i++) ((unsigned char *)imCopy.data)[i] = 0xff;  // WHITE pixel
 
 
-    if (imFont.format == UNCOMPRESSED_GRAYSCALE) ImageAlphaMask(&imFont, imFont);
-
-    font.texture = LoadTextureFromImage(imFont);
+        ImageAlphaMask(&imCopy, imFont);
+        font.texture = LoadTextureFromImage(imCopy);
+        UnloadImage(imCopy);
+    }
+    else font.texture = LoadTextureFromImage(imFont);
     
     
     font.size = fontSize;
     font.size = fontSize;
     font.numChars = numChars;
     font.numChars = numChars;