mirror of
https://github.com/ChuckBuilds/LEDMatrix.git
synced 2026-04-12 13:42:59 +00:00
fix: handle both FreeType and PIL fonts in get_text_width method
This commit is contained in:
@@ -220,8 +220,21 @@ class DisplayManager:
|
|||||||
|
|
||||||
def get_text_width(self, text, font):
|
def get_text_width(self, text, font):
|
||||||
"""Get the width of text when rendered with the given font."""
|
"""Get the width of text when rendered with the given font."""
|
||||||
bbox = self.draw.textbbox((0, 0), text, font=font)
|
try:
|
||||||
return bbox[2] - bbox[0]
|
if isinstance(font, freetype.Face):
|
||||||
|
# For FreeType faces, calculate width using freetype
|
||||||
|
width = 0
|
||||||
|
for char in text:
|
||||||
|
font.load_char(char)
|
||||||
|
width += font.glyph.advance.x >> 6
|
||||||
|
return width
|
||||||
|
else:
|
||||||
|
# For PIL fonts, use textbbox
|
||||||
|
bbox = self.draw.textbbox((0, 0), text, font=font)
|
||||||
|
return bbox[2] - bbox[0]
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"Error getting text width: {e}")
|
||||||
|
return 0 # Return 0 as fallback
|
||||||
|
|
||||||
def draw_text(self, text: str, x: int = None, y: int = None, color: tuple = (255, 255, 255),
|
def draw_text(self, text: str, x: int = None, y: int = None, color: tuple = (255, 255, 255),
|
||||||
small_font: bool = False, font: ImageFont = None):
|
small_font: bool = False, font: ImageFont = None):
|
||||||
|
|||||||
Reference in New Issue
Block a user