Browse Source

REVIEWED: LoadFontFromImage()

Avoid crash on wrong sprite font
Ray 4 years ago
parent
commit
a1db0220a1
1 changed files with 8 additions and 6 deletions
  1. 8 6
      src/rtext.c

+ 8 - 6
src/rtext.c

@@ -364,7 +364,9 @@ Font LoadFontFromImage(Image image, Color key, int firstChar)
     #define MAX_GLYPHS_FROM_IMAGE   256     // Maximum number of glyphs supported on image scan
 #endif
 
-    #define COLOR_EQUAL(col1, col2) ((col1.r == col2.r)&&(col1.g == col2.g)&&(col1.b == col2.b)&&(col1.a == col2.a))
+    #define COLOR_EQUAL(col1, col2) ((col1.r == col2.r) && (col1.g == col2.g) && (col1.b == col2.b) && (col1.a == col2.a))
+
+    Font font = GetFontDefault();
 
     int charSpacing = 0;
     int lineSpacing = 0;
@@ -374,8 +376,8 @@ Font LoadFontFromImage(Image image, Color key, int firstChar)
 
     // We allocate a temporal arrays for chars data measures,
     // once we get the actual number of chars, we copy data to a sized arrays
-    int tempCharValues[MAX_GLYPHS_FROM_IMAGE];
-    Rectangle tempCharRecs[MAX_GLYPHS_FROM_IMAGE];
+    int tempCharValues[MAX_GLYPHS_FROM_IMAGE] = { 0 };
+    Rectangle tempCharRecs[MAX_GLYPHS_FROM_IMAGE] = { 0 };
 
     Color *pixels = LoadImageColors(image);
 
@@ -390,6 +392,8 @@ Font LoadFontFromImage(Image image, Color key, int firstChar)
         if (!COLOR_EQUAL(pixels[y*image.width + x], key)) break;
     }
 
+    if ((x == 0) || (y == 0)) return font;
+
     charSpacing = x;
     lineSpacing = y;
 
@@ -445,9 +449,7 @@ Font LoadFontFromImage(Image image, Color key, int firstChar)
         .mipmaps = 1
     };
 
-    // Create font with all data parsed from image
-    Font font = { 0 };
-
+    // Set font with all data parsed from image
     font.texture = LoadTextureFromImage(fontClear); // Convert processed image to OpenGL texture
     font.glyphCount = index;
     font.glyphPadding = 0;