from PIL import ImageFont class FontManager: def __init__(self, size=12): self.font = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf", size) 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) 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)