From 24e4ff7a6a55150103dca394fabc6f1a64c09778 Mon Sep 17 00:00:00 2001 From: ChuckBuilds <33324927+ChuckBuilds@users.noreply.github.com> Date: Tue, 22 Apr 2025 20:29:20 -0500 Subject: [PATCH] fix: handle bitmap buffer safely and add debug logging --- src/font_test_manager.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/font_test_manager.py b/src/font_test_manager.py index be5cdb0d..9481b8da 100644 --- a/src/font_test_manager.py +++ b/src/font_test_manager.py @@ -60,11 +60,20 @@ class FontTestManager: self.face.load_char(char) bitmap = self.face.glyph.bitmap + # Log bitmap details for debugging + self.logger.debug(f"Bitmap for '{char}': width={bitmap.width}, rows={bitmap.rows}, pitch={bitmap.pitch}") + # Draw the glyph for i in range(bitmap.rows): for j in range(bitmap.width): - if bitmap.buffer[i * bitmap.width + j]: - draw.point((x + j, y + i), fill=(255, 255, 255)) + try: + # Calculate the correct buffer index based on pitch + index = i * bitmap.pitch + j + if index < len(bitmap.buffer) and bitmap.buffer[index]: + draw.point((x + j, y + i), fill=(255, 255, 255)) + except IndexError: + self.logger.warning(f"Index out of range for char '{char}' at position ({i}, {j})") + continue # Move to next character position x += self.face.glyph.advance.x >> 6