From 973af8b88abab4c41c7fe3125ea1bdeeec6d4db5 Mon Sep 17 00:00:00 2001 From: ChuckBuilds <33324927+ChuckBuilds@users.noreply.github.com> Date: Tue, 22 Apr 2025 17:49:47 -0500 Subject: [PATCH] feat: use MatrixChunky6 font for calendar event summaries --- src/calendar_manager.py | 15 ++++++++++----- src/display_manager.py | 13 +++++++++++++ 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/calendar_manager.py b/src/calendar_manager.py index 816f657e..cf13db00 100644 --- a/src/calendar_manager.py +++ b/src/calendar_manager.py @@ -124,21 +124,26 @@ class CalendarManager: time_str = self._format_event_time(event) date_str = self._format_event_date(event) - # Use display manager's font for wrapping - font = self.display_manager.small_font + # Use display manager's small font for date/time and calendar font for summary + datetime_font = self.display_manager.small_font + summary_font = self.display_manager.calendar_font available_width = self.display_manager.matrix.width - 4 # Leave 2 pixel margin on each side # Draw date and time on top line datetime_str = f"{date_str} {time_str}" self.display_manager.draw_text(datetime_str, y=2, color=self.text_color, small_font=True) - # Wrap summary text for two lines - title_lines = self._wrap_text(summary, available_width, font, max_lines=2) + # Wrap summary text for two lines using calendar font + title_lines = self._wrap_text(summary, available_width, summary_font, max_lines=2) # Draw summary lines y_pos = 12 # Start position for summary (below date/time) for line in title_lines: - self.display_manager.draw_text(line, y=y_pos, color=self.text_color, small_font=True) + # Use direct drawing with calendar font for summary + bbox = self.display_manager.draw.textbbox((0, 0), line, font=summary_font) + text_width = bbox[2] - bbox[0] + x = (self.display_manager.matrix.width - text_width) // 2 + self.display_manager.draw.text((x, y_pos), line, font=summary_font, fill=self.text_color) y_pos += 8 # Move down for next line return True diff --git a/src/display_manager.py b/src/display_manager.py index a39a6fda..e9491bec 100644 --- a/src/display_manager.py +++ b/src/display_manager.py @@ -149,6 +149,18 @@ class DisplayManager: self.small_font = ImageFont.truetype("assets/fonts/PressStart2P-Regular.ttf", 8) logger.info("Press Start 2P small font loaded successfully") + # Load MatrixChunky6 font for calendar events + try: + script_dir = os.path.dirname(os.path.abspath(__file__)) + relative_font_path = os.path.join(script_dir, "../assets/fonts/MatrixChunky6.ttf") + font_path = os.path.abspath(relative_font_path) + logger.info(f"Attempting to load MatrixChunky6 font from: {font_path} at size 8") + self.calendar_font = ImageFont.truetype(font_path, 8) + logger.info(f"MatrixChunky6 calendar font loaded successfully from {font_path}") + except Exception as font_err: + logger.error(f"Failed to load MatrixChunky6 font: {font_err}. Falling back to small font.") + self.calendar_font = self.small_font + # Load 4x6 font as extra_small_font try: script_dir = os.path.dirname(os.path.abspath(__file__)) @@ -168,6 +180,7 @@ class DisplayManager: # Fallback to default font self.regular_font = ImageFont.load_default() self.small_font = self.regular_font + self.calendar_font = self.regular_font # Ensure extra_small_font exists even if regular/small fail if not hasattr(self, 'extra_small_font'): self.extra_small_font = self.regular_font