From 54277a72089ea8eaa631e64f49884a0a647719f3 Mon Sep 17 00:00:00 2001 From: Xargana Date: Fri, 16 May 2025 19:23:24 +0300 Subject: [PATCH] a --- display/font_manager.py | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/display/font_manager.py b/display/font_manager.py index 1d1810d..fa1ca29 100644 --- a/display/font_manager.py +++ b/display/font_manager.py @@ -7,18 +7,25 @@ class FontManager: def set_font_size(self, size): self.font = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf", size) - def draw_multiline_text(self, draw, text, x, y, width, height): - lines = [] - words = text.split(" ") - line = "" - for word in words: - test = f"{line} {word}".strip() - if draw.textlength(test, font=self.font) <= width: - line = test - else: - lines.append(line) - line = word - lines.append(line) +def draw_multiline_text(self, draw, text, x, y, width, height): + lines = [] + words = text.split(" ") + line = "" + for word in words: + test = f"{line} {word}".strip() + bbox = self.font.getbbox(test) + test_width = bbox[2] - bbox[0] + if test_width <= width: + line = test + else: + lines.append(line) + line = word + lines.append(line) + + draw.rectangle((0, 0, width, height), outline=0, fill=0) + for idx, line in enumerate(lines): + draw.text((x, y + idx * self.font.size), line, font=self.font, fill=255) + draw.rectangle((0, 0, width, height), outline=0, fill=0) for idx, line in enumerate(lines):