From e6826c884c6ce0c647eea903469bce129c10a854 Mon Sep 17 00:00:00 2001 From: Gene Johnson Date: Sun, 15 Mar 2026 03:38:14 -0700 Subject: [PATCH 1/2] feat: Implement an interactive font face picker at startup, allowing selection of specific font faces from a font file. --- engine/app.py | 167 ++++++++++++++++++++++++++++++++++++++++++++++- engine/config.py | 45 ++++++++++++- engine/render.py | 44 +++++++++++-- 3 files changed, 250 insertions(+), 6 deletions(-) diff --git a/engine/app.py b/engine/app.py index 4a89098..68b1845 100644 --- a/engine/app.py +++ b/engine/app.py @@ -3,11 +3,14 @@ Application orchestrator — boot sequence, signal handling, main loop wiring. """ import sys +import os import time import signal import atexit +import termios +import tty -from engine import config +from engine import config, render from engine.terminal import ( RST, G_HI, G_MID, G_DIM, W_DIM, W_GHOST, CLR, CURSOR_OFF, CURSOR_ON, tw, slow_print, boot_ln, @@ -26,6 +29,166 @@ TITLE = [ " ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝╚══════╝╚═╝╚═╝ ╚═══╝╚══════╝", ] +def _read_picker_key(): + ch = sys.stdin.read(1) + if ch == "\x03": + return "interrupt" + if ch in ("\r", "\n"): + return "enter" + if ch == "\x1b": + c1 = sys.stdin.read(1) + if c1 != "[": + return None + c2 = sys.stdin.read(1) + if c2 == "A": + return "up" + if c2 == "B": + return "down" + return None + if ch in ("k", "K"): + return "up" + if ch in ("j", "J"): + return "down" + if ch in ("q", "Q"): + return "enter" + return None + +def _normalize_preview_rows(rows): + """Trim shared left padding and trailing spaces for stable on-screen previews.""" + non_empty = [r for r in rows if r.strip()] + if not non_empty: + return [""] + left_pad = min(len(r) - len(r.lstrip(" ")) for r in non_empty) + out = [] + for row in rows: + if left_pad < len(row): + out.append(row[left_pad:].rstrip()) + else: + out.append(row.rstrip()) + return out + + +def _draw_font_picker(faces, selected): + w = tw() + h = 24 + try: + h = os.get_terminal_size().lines + except Exception: + pass + + max_preview_w = max(24, w - 8) + header_h = 6 + footer_h = 3 + preview_h = max(4, min(config.RENDER_H + 2, max(4, h // 2))) + visible = max(1, h - header_h - preview_h - footer_h) + top = max(0, selected - (visible // 2)) + bottom = min(len(faces), top + visible) + top = max(0, bottom - visible) + + print(CLR, end="") + print(CURSOR_OFF, end="") + print() + print(f" {G_HI}FONT PICKER{RST}") + print(f" {W_GHOST}{'─' * (w - 4)}{RST}") + print(f" {W_DIM}{config.FONT_PATH[:max_preview_w]}{RST}") + print(f" {W_GHOST}↑/↓ move · Enter select · q accept current{RST}") + print() + + for pos in range(top, bottom): + face = faces[pos] + active = pos == selected + pointer = "▶" if active else " " + color = G_HI if active else W_DIM + print(f" {color}{pointer} [{face['index']}] {face['name']}{RST}") + + if top > 0: + print(f" {W_GHOST}… {top} above{RST}") + if bottom < len(faces): + print(f" {W_GHOST}… {len(faces) - bottom} below{RST}") + + print() + print(f" {W_GHOST}{'─' * (w - 4)}{RST}") + print(f" {W_DIM}Preview: {faces[selected]['name']}{RST}") + preview_rows = faces[selected]["preview_rows"][:preview_h] + for row in preview_rows: + shown = row[:max_preview_w] + print(f" {shown}") + +def pick_font_face(): + """Interactive startup picker for selecting a face from a font file.""" + if not config.FONT_PICKER: + return + + print(CLR, end="") + print(CURSOR_OFF, end="") + print() + print(f" {G_HI}FONT PICKER{RST}") + print(f" {W_GHOST}{'─' * (tw() - 4)}{RST}") + print(f" {W_DIM}{config.FONT_PATH}{RST}") + print() + + try: + faces = render.list_font_faces(config.FONT_PATH, max_faces=64) + except Exception as exc: + print(f" {G_DIM}> unable to load font file: {exc}{RST}") + print(f" {W_GHOST}> startup aborted (font selection is required){RST}") + time.sleep(1.4) + sys.exit(1) + + face_ids = [face["index"] for face in faces] + default = config.FONT_INDEX if config.FONT_INDEX in face_ids else faces[0]["index"] + + prepared = [] + for face in faces: + idx = face["index"] + name = face["name"] + try: + fnt = render.load_font_face(config.FONT_PATH, idx) + rows = _normalize_preview_rows(render.render_line(name, fnt)) + except Exception: + rows = ["(preview unavailable)"] + prepared.append({"index": idx, "name": name, "preview_rows": rows}) + + selected = next((i for i, f in enumerate(prepared) if f["index"] == default), 0) + if not sys.stdin.isatty(): + selected_index = prepared[selected]["index"] + config.set_font_selection(font_index=selected_index) + render.clear_font_cache() + print(f" {G_DIM}> using face {selected_index}{RST}") + time.sleep(0.8) + print(CLR, end="") + print(CURSOR_OFF, end="") + print() + return + + fd = sys.stdin.fileno() + old_settings = termios.tcgetattr(fd) + try: + tty.setcbreak(fd) + while True: + _draw_font_picker(prepared, selected) + key = _read_picker_key() + if key == "up": + selected = max(0, selected - 1) + elif key == "down": + selected = min(len(prepared) - 1, selected + 1) + elif key == "enter": + break + elif key == "interrupt": + raise KeyboardInterrupt + finally: + termios.tcsetattr(fd, termios.TCSADRAIN, old_settings) + + selected = prepared[selected]["index"] + + config.set_font_selection(font_index=selected) + render.clear_font_cache() + print(f" {G_DIM}> using face {selected}{RST}") + time.sleep(0.8) + print(CLR, end="") + print(CURSOR_OFF, end="") + print() + def main(): atexit.register(lambda: print(CURSOR_ON, end="", flush=True)) @@ -40,6 +203,8 @@ def main(): w = tw() print(CLR, end="") print(CURSOR_OFF, end="") + pick_font_face() + w = tw() print() time.sleep(0.4) diff --git a/engine/config.py b/engine/config.py index 77d3c1f..2944f02 100644 --- a/engine/config.py +++ b/engine/config.py @@ -4,6 +4,35 @@ Configuration constants, CLI flags, and glyph tables. import sys +from pathlib import Path + + +def _arg_value(flag): + """Get value following a CLI flag, if present.""" + if flag not in sys.argv: + return None + i = sys.argv.index(flag) + return sys.argv[i + 1] if i + 1 < len(sys.argv) else None + + +def _arg_int(flag, default): + """Get int CLI argument with safe fallback.""" + raw = _arg_value(flag) + if raw is None: + return default + try: + return int(raw) + except ValueError: + return default + + +def _resolve_font_path(raw_path): + """Resolve font path; relative paths are anchored to repo root.""" + p = Path(raw_path).expanduser() + if p.is_absolute(): + return str(p) + repo_root = Path(__file__).resolve().parent.parent + return str((repo_root / p).resolve()) # ─── RUNTIME ────────────────────────────────────────────── HEADLINE_LIMIT = 1000 FEED_TIMEOUT = 10 @@ -17,7 +46,12 @@ NTFY_POLL_INTERVAL = 15 # seconds between polls MESSAGE_DISPLAY_SECS = 30 # how long a message holds the screen # ─── FONT RENDERING ────────────────────────────────────── -FONT_PATH = "/Users/genejohnson/Documents/CS Bishop Drawn/CSBishopDrawn-Italic.otf" +FONT_PATH = _resolve_font_path( + _arg_value('--font-file') + or "/Users/genejohnson/Documents/CS Bishop Drawn/CSBishopDrawn-Italic.otf" +) +FONT_INDEX = max(0, _arg_int('--font-index', 0)) +FONT_PICKER = '--no-font-picker' not in sys.argv FONT_SZ = 60 RENDER_H = 8 # terminal rows per rendered text line @@ -33,3 +67,12 @@ GRAD_SPEED = 0.08 # gradient traversal speed (cycles/sec, ~12s full swee # ─── GLYPHS ─────────────────────────────────────────────── GLITCH = "░▒▓█▌▐╌╍╎╏┃┆┇┊┋" KATA = "ハミヒーウシナモニサワツオリアホテマケメエカキムユラセネスタヌヘ" + + +def set_font_selection(font_path=None, font_index=None): + """Set runtime primary font selection.""" + global FONT_PATH, FONT_INDEX + if font_path is not None: + FONT_PATH = _resolve_font_path(font_path) + if font_index is not None: + FONT_INDEX = max(0, int(font_index)) diff --git a/engine/render.py b/engine/render.py index fb7bc5c..105646d 100644 --- a/engine/render.py +++ b/engine/render.py @@ -6,6 +6,7 @@ Depends on: config, terminal, sources, translate. import re import random +from pathlib import Path from PIL import Image, ImageDraw, ImageFont @@ -49,16 +50,51 @@ MSG_GRAD_COLS = [ # ─── FONT LOADING ───────────────────────────────────────── _FONT_OBJ = None +_FONT_OBJ_KEY = None _FONT_CACHE = {} def font(): - """Lazy-load the primary OTF font.""" - global _FONT_OBJ - if _FONT_OBJ is None: - _FONT_OBJ = ImageFont.truetype(config.FONT_PATH, config.FONT_SZ) + """Lazy-load the primary OTF font (path + face index aware).""" + global _FONT_OBJ, _FONT_OBJ_KEY + key = (config.FONT_PATH, config.FONT_INDEX, config.FONT_SZ) + if _FONT_OBJ is None or _FONT_OBJ_KEY != key: + _FONT_OBJ = ImageFont.truetype( + config.FONT_PATH, config.FONT_SZ, index=config.FONT_INDEX + ) + _FONT_OBJ_KEY = key return _FONT_OBJ +def clear_font_cache(): + """Reset cached font objects after changing primary font selection.""" + global _FONT_OBJ, _FONT_OBJ_KEY + _FONT_OBJ = None + _FONT_OBJ_KEY = None + + +def load_font_face(font_path, font_index=0, size=None): + """Load a specific face from a font file or collection.""" + font_size = size or config.FONT_SZ + return ImageFont.truetype(font_path, font_size, index=font_index) + + +def list_font_faces(font_path, max_faces=64): + """Return discoverable face indexes + display names from a font file.""" + faces = [] + for idx in range(max_faces): + try: + fnt = load_font_face(font_path, idx) + except Exception: + if idx == 0: + raise + break + family, style = fnt.getname() + display = f"{family} {style}".strip() + if not display: + display = f"{Path(font_path).stem} [{idx}]" + faces.append({"index": idx, "name": display}) + return faces + def font_for_lang(lang=None): """Get appropriate font for a language.""" From 11226872a1e5a30e18f80fd963d7d8582f506d37 Mon Sep 17 00:00:00 2001 From: Gene Johnson Date: Sun, 15 Mar 2026 03:52:10 -0700 Subject: [PATCH 2/2] feat: Implement interactive font selection by scanning the `fonts/` directory for `.otf`, `.ttf`, and `.ttc` files, adding new fonts and updating documentation. --- .DS_Store | Bin 0 -> 6148 bytes README.md | 5 +- engine/app.py | 114 ++++++++++++++++++++++++++++------------- engine/config.py | 32 ++++++++++-- engine/render.py | 4 ++ fonts/Eyekons.otf | Bin 0 -> 28788 bytes fonts/Pixel Sparta.otf | Bin 0 -> 57944 bytes fonts/Xeonic.ttf | Bin 0 -> 51896 bytes 8 files changed, 112 insertions(+), 43 deletions(-) create mode 100644 .DS_Store create mode 100644 fonts/Eyekons.otf create mode 100644 fonts/Pixel Sparta.otf create mode 100644 fonts/Xeonic.ttf diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..b3f8c89d194c2ffca083e3496bc140baff98d951 GIT binary patch literal 6148 zcmeHK&u`N(6n^eHmQo@00D=pW1xH3{*$yBsCA0?)NU$I{018QyZPBv0YEmjRRq7Rv z{3%@cPxyD>d$uR~iz}OupY;6M?}z>JrM4R)68PRL0YCWFvpXqdY6CPUoknZPmB0?07p~)B6w{t7%Y0)ui;J@jD*9Rw|Fr`%(NR zOQ&J$`ZHBjQC6g5oscCdLf*g4ibPF)H7Sx(=LW{%HM~aHx_Nf?Xuq>7JF{JBdfiU< z@od)cZrpwFC zP7{i8;zhuc?o$Fz6pdj^;mcuR-x&6(#+2H0O34bh-!a=Fw|n#g(HYpyb(@l;1I$=p zo)ojOO1cMS{txlyBr;M|P$KULJxQ-nQL0tyH^mtP3g{*6(Zfwuh&wA)G*Rht6>a{N zEY~i+tz42V69~BKYtyANBWASM*baDX<2(zZwynwacl8yn#z~yFu&j$%*>{*-} z)JF#zKFZl&XJkR2|12;{i#>~TgYZCvNd=lzVLvg1Nrzq9xSqwiL6c5GuZ(%@%EEr3 z2)#P&Qiqf18FZ~ 0: print(f" {W_GHOST}… {top} above{RST}") @@ -108,53 +108,93 @@ def _draw_font_picker(faces, selected): print() print(f" {W_GHOST}{'─' * (w - 4)}{RST}") - print(f" {W_DIM}Preview: {faces[selected]['name']}{RST}") + print( + f" {W_DIM}Preview: {faces[selected]['name']} · {faces[selected]['file_name']}{RST}" + ) preview_rows = faces[selected]["preview_rows"][:preview_h] for row in preview_rows: shown = row[:max_preview_w] print(f" {shown}") def pick_font_face(): - """Interactive startup picker for selecting a face from a font file.""" + """Interactive startup picker for selecting a face from repo OTF files.""" if not config.FONT_PICKER: return - print(CLR, end="") - print(CURSOR_OFF, end="") - print() - print(f" {G_HI}FONT PICKER{RST}") - print(f" {W_GHOST}{'─' * (tw() - 4)}{RST}") - print(f" {W_DIM}{config.FONT_PATH}{RST}") - print() - - try: - faces = render.list_font_faces(config.FONT_PATH, max_faces=64) - except Exception as exc: - print(f" {G_DIM}> unable to load font file: {exc}{RST}") - print(f" {W_GHOST}> startup aborted (font selection is required){RST}") - time.sleep(1.4) + font_files = config.list_repo_font_files() + if not font_files: + print(CLR, end="") + print(CURSOR_OFF, end="") + print() + print(f" {G_HI}FONT PICKER{RST}") + print(f" {W_GHOST}{'─' * (tw() - 4)}{RST}") + print(f" {G_DIM}> no .otf/.ttf/.ttc files found in: {config.FONT_DIR}{RST}") + print(f" {W_GHOST}> add font files to the fonts folder, then rerun{RST}") + time.sleep(1.8) sys.exit(1) - face_ids = [face["index"] for face in faces] - default = config.FONT_INDEX if config.FONT_INDEX in face_ids else faces[0]["index"] - prepared = [] - for face in faces: - idx = face["index"] - name = face["name"] + for font_path in font_files: try: - fnt = render.load_font_face(config.FONT_PATH, idx) - rows = _normalize_preview_rows(render.render_line(name, fnt)) + faces = render.list_font_faces(font_path, max_faces=64) except Exception: - rows = ["(preview unavailable)"] - prepared.append({"index": idx, "name": name, "preview_rows": rows}) + fallback = os.path.splitext(os.path.basename(font_path))[0] + faces = [{"index": 0, "name": fallback}] + for face in faces: + idx = face["index"] + name = face["name"] + file_name = os.path.basename(font_path) + try: + fnt = render.load_font_face(font_path, idx) + rows = _normalize_preview_rows(render.render_line(name, fnt)) + except Exception: + rows = ["(preview unavailable)"] + prepared.append( + { + "font_path": font_path, + "font_index": idx, + "name": name, + "file_name": file_name, + "preview_rows": rows, + } + ) + + if not prepared: + print(CLR, end="") + print(CURSOR_OFF, end="") + print() + print(f" {G_HI}FONT PICKER{RST}") + print(f" {W_GHOST}{'─' * (tw() - 4)}{RST}") + print(f" {G_DIM}> no readable font faces found in: {config.FONT_DIR}{RST}") + time.sleep(1.8) + sys.exit(1) + + def _same_path(a, b): + try: + return os.path.samefile(a, b) + except Exception: + return os.path.abspath(a) == os.path.abspath(b) + + selected = next( + ( + i + for i, f in enumerate(prepared) + if _same_path(f["font_path"], config.FONT_PATH) + and f["font_index"] == config.FONT_INDEX + ), + 0, + ) - selected = next((i for i, f in enumerate(prepared) if f["index"] == default), 0) if not sys.stdin.isatty(): - selected_index = prepared[selected]["index"] - config.set_font_selection(font_index=selected_index) + selected_font = prepared[selected] + config.set_font_selection( + font_path=selected_font["font_path"], + font_index=selected_font["font_index"], + ) render.clear_font_cache() - print(f" {G_DIM}> using face {selected_index}{RST}") + print( + f" {G_DIM}> using {selected_font['name']} ({selected_font['file_name']}){RST}" + ) time.sleep(0.8) print(CLR, end="") print(CURSOR_OFF, end="") @@ -179,11 +219,13 @@ def pick_font_face(): finally: termios.tcsetattr(fd, termios.TCSADRAIN, old_settings) - selected = prepared[selected]["index"] - - config.set_font_selection(font_index=selected) + selected_font = prepared[selected] + config.set_font_selection( + font_path=selected_font["font_path"], + font_index=selected_font["font_index"], + ) render.clear_font_cache() - print(f" {G_DIM}> using face {selected}{RST}") + print(f" {G_DIM}> using {selected_font['name']} ({selected_font['file_name']}){RST}") time.sleep(0.8) print(CLR, end="") print(CURSOR_OFF, end="") diff --git a/engine/config.py b/engine/config.py index 2944f02..f509b23 100644 --- a/engine/config.py +++ b/engine/config.py @@ -5,6 +5,8 @@ Configuration constants, CLI flags, and glyph tables. import sys from pathlib import Path +_REPO_ROOT = Path(__file__).resolve().parent.parent +_FONT_EXTENSIONS = {".otf", ".ttf", ".ttc"} def _arg_value(flag): @@ -31,8 +33,24 @@ def _resolve_font_path(raw_path): p = Path(raw_path).expanduser() if p.is_absolute(): return str(p) - repo_root = Path(__file__).resolve().parent.parent - return str((repo_root / p).resolve()) + return str((_REPO_ROOT / p).resolve()) + + +def _list_font_files(font_dir): + """List supported font files within a font directory.""" + font_root = Path(font_dir) + if not font_root.exists() or not font_root.is_dir(): + return [] + return [ + str(path.resolve()) + for path in sorted(font_root.iterdir()) + if path.is_file() and path.suffix.lower() in _FONT_EXTENSIONS + ] + + +def list_repo_font_files(): + """Public helper for discovering repository font files.""" + return _list_font_files(FONT_DIR) # ─── RUNTIME ────────────────────────────────────────────── HEADLINE_LIMIT = 1000 FEED_TIMEOUT = 10 @@ -46,9 +64,13 @@ NTFY_POLL_INTERVAL = 15 # seconds between polls MESSAGE_DISPLAY_SECS = 30 # how long a message holds the screen # ─── FONT RENDERING ────────────────────────────────────── -FONT_PATH = _resolve_font_path( - _arg_value('--font-file') - or "/Users/genejohnson/Documents/CS Bishop Drawn/CSBishopDrawn-Italic.otf" +FONT_DIR = _resolve_font_path(_arg_value('--font-dir') or "fonts") +_FONT_FILE_ARG = _arg_value('--font-file') +_FONT_FILES = _list_font_files(FONT_DIR) +FONT_PATH = ( + _resolve_font_path(_FONT_FILE_ARG) + if _FONT_FILE_ARG + else (_FONT_FILES[0] if _FONT_FILES else "") ) FONT_INDEX = max(0, _arg_int('--font-index', 0)) FONT_PICKER = '--no-font-picker' not in sys.argv diff --git a/engine/render.py b/engine/render.py index 105646d..1ef5adf 100644 --- a/engine/render.py +++ b/engine/render.py @@ -57,6 +57,10 @@ _FONT_CACHE = {} def font(): """Lazy-load the primary OTF font (path + face index aware).""" global _FONT_OBJ, _FONT_OBJ_KEY + if not config.FONT_PATH: + raise FileNotFoundError( + f"No primary font selected. Add .otf/.ttf/.ttc files to {config.FONT_DIR}." + ) key = (config.FONT_PATH, config.FONT_INDEX, config.FONT_SZ) if _FONT_OBJ is None or _FONT_OBJ_KEY != key: _FONT_OBJ = ImageFont.truetype( diff --git a/fonts/Eyekons.otf b/fonts/Eyekons.otf new file mode 100644 index 0000000000000000000000000000000000000000..8e9d2dbda1efba475d4a7929ee64ef23b6af24ce GIT binary patch literal 28788 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 literal 0 HcmV?d00001 diff --git a/fonts/Pixel Sparta.otf b/fonts/Pixel Sparta.otf new file mode 100644 index 0000000000000000000000000000000000000000..c8c160aed4d953958ed8ea933f65bea9c40b30d7 GIT binary patch literal 57944 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 literal 0 HcmV?d00001 diff --git a/fonts/Xeonic.ttf b/fonts/Xeonic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f2e29e0c572bdc82627f8a72b336821d7a9f7193 GIT binary patch literal 51896 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 literal 0 HcmV?d00001