From dfecc6f8a0d95e72d8120c60bf3a02fb3e280f0b Mon Sep 17 00:00:00 2001 From: Chuck <33324927+ChuckBuilds@users.noreply.github.com> Date: Wed, 13 Aug 2025 21:23:37 -0500 Subject: [PATCH] loading fonts va absolute paths --- src/display_manager.py | 22 +++++++--------------- src/nba_managers.py | 13 +++++-------- src/nfl_managers.py | 13 +++++-------- src/nhl_managers.py | 11 ++++------- src/odds_ticker_manager.py | 8 +++----- src/stock_manager.py | 9 +++------ src/youtube_display.py | 4 +--- 7 files changed, 28 insertions(+), 52 deletions(-) diff --git a/src/display_manager.py b/src/display_manager.py index 09216684..ba198bd6 100644 --- a/src/display_manager.py +++ b/src/display_manager.py @@ -98,11 +98,9 @@ class DisplayManager: self.draw = ImageDraw.Draw(self.image) logger.info(f"Image canvas created with dimensions: {self.matrix.width}x{self.matrix.height}") - # Initialize font with Press Start 2P using an absolute path so services don't fall back + # Initialize font with Press Start 2P try: - script_dir = os.path.dirname(os.path.abspath(__file__)) - ps2p_path = os.path.abspath(os.path.join(script_dir, "../assets/fonts/PressStart2P-Regular.ttf")) - self.font = ImageFont.truetype(ps2p_path, 8) + self.font = ImageFont.truetype("assets/fonts/PressStart2P-Regular.ttf", 8) logger.info("Initial Press Start 2P font loaded successfully") except Exception as e: logger.error(f"Failed to load initial font: {e}") @@ -292,21 +290,17 @@ class DisplayManager: def _load_fonts(self): """Load fonts with proper error handling.""" try: - # Load Press Start 2P font using absolute path to avoid fallback when run under systemd - script_dir = os.path.dirname(os.path.abspath(__file__)) - ps2p_path = os.path.abspath(os.path.join(script_dir, "../assets/fonts/PressStart2P-Regular.ttf")) - self.regular_font = ImageFont.truetype(ps2p_path, 8) + # Load Press Start 2P font + self.regular_font = ImageFont.truetype("assets/fonts/PressStart2P-Regular.ttf", 8) logger.info("Press Start 2P font loaded successfully") # Use the same font for small text (currently same size; adjust size here if needed) - self.small_font = ImageFont.truetype(ps2p_path, 8) + self.small_font = ImageFont.truetype("assets/fonts/PressStart2P-Regular.ttf", 8) logger.info("Press Start 2P small font loaded successfully") # Load 5x7 BDF font for calendar events try: - script_dir = os.path.dirname(os.path.abspath(__file__)) - relative_font_path = os.path.join(script_dir, "../assets/fonts/5x7.bdf") - self.calendar_font_path = os.path.abspath(relative_font_path) + self.calendar_font_path = "assets/fonts/5x7.bdf" logger.info(f"Attempting to load 5x7 font from: {self.calendar_font_path}") if not os.path.exists(self.calendar_font_path): @@ -332,9 +326,7 @@ class DisplayManager: # Load 4x6 font as extra_small_font try: - script_dir = os.path.dirname(os.path.abspath(__file__)) - relative_font_path = os.path.join(script_dir, "../assets/fonts/4x6-font.ttf") - font_path = os.path.abspath(relative_font_path) + font_path = "assets/fonts/4x6-font.ttf" logger.info(f"Attempting to load 4x6 TTF font from: {font_path} at size 6") self.extra_small_font = ImageFont.truetype(font_path, 6) logger.info(f"4x6 TTF extra small font loaded successfully from {font_path}") diff --git a/src/nba_managers.py b/src/nba_managers.py index 1d53f10b..27c7ee23 100644 --- a/src/nba_managers.py +++ b/src/nba_managers.py @@ -193,14 +193,11 @@ class BaseNBAManager: """Load fonts used by the scoreboard.""" fonts = {} try: - # Try to load the Press Start 2P font first using absolute paths - script_dir = os.path.dirname(os.path.abspath(__file__)) - ps2p = os.path.abspath(os.path.join(script_dir, "../assets/fonts/PressStart2P-Regular.ttf")) - font_4x6 = os.path.abspath(os.path.join(script_dir, "../assets/fonts/4x6-font.ttf")) - fonts['score'] = ImageFont.truetype(ps2p, 10) - fonts['time'] = ImageFont.truetype(ps2p, 8) - fonts['team'] = ImageFont.truetype(ps2p, 8) - fonts['status'] = ImageFont.truetype(font_4x6, 6) + # Try to load the Press Start 2P font first + fonts['score'] = ImageFont.truetype("assets/fonts/PressStart2P-Regular.ttf", 10) + fonts['time'] = ImageFont.truetype("assets/fonts/PressStart2P-Regular.ttf", 8) + fonts['team'] = ImageFont.truetype("assets/fonts/PressStart2P-Regular.ttf", 8) + fonts['status'] = ImageFont.truetype("assets/fonts/4x6-font.ttf", 6) logging.info("[NBA] Successfully loaded Press Start 2P font for all text elements") except IOError: logging.warning("[NBA] Press Start 2P font not found, trying 4x6 font.") diff --git a/src/nfl_managers.py b/src/nfl_managers.py index 63d68cc8..186d4137 100644 --- a/src/nfl_managers.py +++ b/src/nfl_managers.py @@ -182,14 +182,11 @@ class BaseNFLManager: # Renamed class """Load fonts used by the scoreboard.""" fonts = {} try: - script_dir = os.path.dirname(os.path.abspath(__file__)) - ps2p = os.path.abspath(os.path.join(script_dir, "../assets/fonts/PressStart2P-Regular.ttf")) - font_4x6 = os.path.abspath(os.path.join(script_dir, "../assets/fonts/4x6-font.ttf")) - fonts['score'] = ImageFont.truetype(ps2p, 10) - fonts['time'] = ImageFont.truetype(ps2p, 8) - fonts['team'] = ImageFont.truetype(ps2p, 8) - fonts['status'] = ImageFont.truetype(font_4x6, 6) # Using 4x6 for status - fonts['detail'] = ImageFont.truetype(font_4x6, 6) # Added detail font + fonts['score'] = ImageFont.truetype("assets/fonts/PressStart2P-Regular.ttf", 10) + fonts['time'] = ImageFont.truetype("assets/fonts/PressStart2P-Regular.ttf", 8) + fonts['team'] = ImageFont.truetype("assets/fonts/PressStart2P-Regular.ttf", 8) + fonts['status'] = ImageFont.truetype("assets/fonts/4x6-font.ttf", 6) # Using 4x6 for status + fonts['detail'] = ImageFont.truetype("assets/fonts/4x6-font.ttf", 6) # Added detail font logging.info("[NFL] Successfully loaded fonts") except IOError: logging.warning("[NFL] Fonts not found, using default PIL font.") diff --git a/src/nhl_managers.py b/src/nhl_managers.py index 5be5ff33..e6f16ec4 100644 --- a/src/nhl_managers.py +++ b/src/nhl_managers.py @@ -162,13 +162,10 @@ class BaseNHLManager: """Load fonts used by the scoreboard.""" fonts = {} try: - script_dir = os.path.dirname(os.path.abspath(__file__)) - ps2p = os.path.abspath(os.path.join(script_dir, "../assets/fonts/PressStart2P-Regular.ttf")) - font_4x6 = os.path.abspath(os.path.join(script_dir, "../assets/fonts/4x6-font.ttf")) - fonts['score'] = ImageFont.truetype(ps2p, 12) - fonts['time'] = ImageFont.truetype(ps2p, 8) - fonts['team'] = ImageFont.truetype(ps2p, 8) - fonts['status'] = ImageFont.truetype(font_4x6, 6) + fonts['score'] = ImageFont.truetype("assets/fonts/PressStart2P-Regular.ttf", 12) + fonts['time'] = ImageFont.truetype("assets/fonts/PressStart2P-Regular.ttf", 8) + fonts['team'] = ImageFont.truetype("assets/fonts/PressStart2P-Regular.ttf", 8) + fonts['status'] = ImageFont.truetype("assets/fonts/4x6-font.ttf", 6) logging.info("[NHL] Successfully loaded Press Start 2P font for all text elements") except IOError: logging.warning("[NHL] Press Start 2P font not found, trying 4x6 font.") diff --git a/src/odds_ticker_manager.py b/src/odds_ticker_manager.py index ea366cc5..e1a323c6 100644 --- a/src/odds_ticker_manager.py +++ b/src/odds_ticker_manager.py @@ -185,12 +185,10 @@ class OddsTickerManager: def _load_fonts(self) -> Dict[str, ImageFont.FreeTypeFont]: """Load fonts for the ticker display.""" try: - script_dir = os.path.dirname(os.path.abspath(__file__)) - ps2p = os.path.abspath(os.path.join(script_dir, "../assets/fonts/PressStart2P-Regular.ttf")) return { - 'small': ImageFont.truetype(ps2p, 6), - 'medium': ImageFont.truetype(ps2p, 8), - 'large': ImageFont.truetype(ps2p, 10) + 'small': ImageFont.truetype("assets/fonts/PressStart2P-Regular.ttf", 6), + 'medium': ImageFont.truetype("assets/fonts/PressStart2P-Regular.ttf", 8), + 'large': ImageFont.truetype("assets/fonts/PressStart2P-Regular.ttf", 10) } except Exception as e: logger.error(f"Error loading fonts: {e}") diff --git a/src/stock_manager.py b/src/stock_manager.py index 82785460..fb9833d5 100644 --- a/src/stock_manager.py +++ b/src/stock_manager.py @@ -428,14 +428,11 @@ class StockManager: fallback = Image.new('RGBA', (32, 32), (0, 0, 0, 0)) draw = ImageDraw.Draw(fallback) try: - # Resolve font path absolutely to avoid fallback under systemd; fall back to PS2P if missing - script_dir = os.path.dirname(os.path.abspath(__file__)) - font_path = os.path.abspath(os.path.join(script_dir, "../assets/fonts/OpenSans-Regular.ttf")) + # Try to load OpenSans font first, fall back to PS2P if missing try: - font = ImageFont.truetype(font_path, 16) + font = ImageFont.truetype("assets/fonts/OpenSans-Regular.ttf", 16) except Exception: - ps2p = os.path.abspath(os.path.join(script_dir, "../assets/fonts/PressStart2P-Regular.ttf")) - font = ImageFont.truetype(ps2p, 8) + font = ImageFont.truetype("assets/fonts/PressStart2P-Regular.ttf", 8) except: font = ImageFont.load_default() diff --git a/src/youtube_display.py b/src/youtube_display.py index 54884e87..d827c970 100644 --- a/src/youtube_display.py +++ b/src/youtube_display.py @@ -38,9 +38,7 @@ class YouTubeDisplay: def _initialize_display(self): """Initialize display components.""" - script_dir = os.path.dirname(os.path.abspath(__file__)) - ps2p = os.path.abspath(os.path.join(script_dir, "../assets/fonts/PressStart2P-Regular.ttf")) - self.font = ImageFont.truetype(ps2p, 8) + self.font = ImageFont.truetype("assets/fonts/PressStart2P-Regular.ttf", 8) try: self.youtube_logo = Image.open("assets/youtube_logo.png") except Exception as e: