feat: use MatrixChunky6 font for calendar event summaries

This commit is contained in:
ChuckBuilds
2025-04-22 17:49:47 -05:00
parent 2a52653343
commit 973af8b88a
2 changed files with 23 additions and 5 deletions

View File

@@ -124,21 +124,26 @@ class CalendarManager:
time_str = self._format_event_time(event) time_str = self._format_event_time(event)
date_str = self._format_event_date(event) date_str = self._format_event_date(event)
# Use display manager's font for wrapping # Use display manager's small font for date/time and calendar font for summary
font = self.display_manager.small_font 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 available_width = self.display_manager.matrix.width - 4 # Leave 2 pixel margin on each side
# Draw date and time on top line # Draw date and time on top line
datetime_str = f"{date_str} {time_str}" datetime_str = f"{date_str} {time_str}"
self.display_manager.draw_text(datetime_str, y=2, color=self.text_color, small_font=True) self.display_manager.draw_text(datetime_str, y=2, color=self.text_color, small_font=True)
# Wrap summary text for two lines # Wrap summary text for two lines using calendar font
title_lines = self._wrap_text(summary, available_width, font, max_lines=2) title_lines = self._wrap_text(summary, available_width, summary_font, max_lines=2)
# Draw summary lines # Draw summary lines
y_pos = 12 # Start position for summary (below date/time) y_pos = 12 # Start position for summary (below date/time)
for line in title_lines: 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 y_pos += 8 # Move down for next line
return True return True

View File

@@ -149,6 +149,18 @@ class DisplayManager:
self.small_font = ImageFont.truetype("assets/fonts/PressStart2P-Regular.ttf", 8) self.small_font = ImageFont.truetype("assets/fonts/PressStart2P-Regular.ttf", 8)
logger.info("Press Start 2P small font loaded successfully") 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 # Load 4x6 font as extra_small_font
try: try:
script_dir = os.path.dirname(os.path.abspath(__file__)) script_dir = os.path.dirname(os.path.abspath(__file__))
@@ -168,6 +180,7 @@ class DisplayManager:
# Fallback to default font # Fallback to default font
self.regular_font = ImageFont.load_default() self.regular_font = ImageFont.load_default()
self.small_font = self.regular_font self.small_font = self.regular_font
self.calendar_font = self.regular_font
# Ensure extra_small_font exists even if regular/small fail # Ensure extra_small_font exists even if regular/small fail
if not hasattr(self, 'extra_small_font'): if not hasattr(self, 'extra_small_font'):
self.extra_small_font = self.regular_font self.extra_small_font = self.regular_font