Update documentation and scripts for font addition process; introduce uv run add-font CLI command for streamlined font management. Enhance formula generation with improved class name formatting and validation steps. Remove outdated font formula files.

This commit is contained in:
Matt Troutman 2026-02-09 22:04:01 -06:00
parent 69d8156b09
commit 56b64d0b34
No known key found for this signature in database
266 changed files with 1187 additions and 8145 deletions

View file

@ -0,0 +1,41 @@
"""Tests for font folder structure: required subdirs and at least one font file per font."""
import pytest
from tests.conftest import FONT_FILES_DIR, REQUIRED_SUBDIRS, WEB_EXTENSIONS, get_font_dir_names
# Top-level names to ignore (e.g. .DS_Store; cleanup script removes these)
IGNORED_TOPLEVEL = {".DS_Store"}
@pytest.mark.parametrize("font_name", get_font_dir_names())
def test_font_has_required_subdirs_only(font_name):
"""Each font folder has exactly ttf/, otf/, web/, other_files/ and no other top-level items (except ignored)."""
font_dir = FONT_FILES_DIR / font_name
assert font_dir.is_dir(), f"Font dir missing: {font_dir}"
names = [p.name for p in font_dir.iterdir() if p.name not in IGNORED_TOPLEVEL]
for required in REQUIRED_SUBDIRS:
assert required in names, f"{font_name}: missing subdir {required}/"
# All must be directories (the four subdirs)
for name in names:
assert (font_dir / name).is_dir(), f"{font_name}: unexpected file or non-dir at top level: {name}"
assert len(names) == 4, f"{font_name}: expected exactly 4 subdirs, got {names}"
@pytest.mark.parametrize("font_name", get_font_dir_names())
def test_font_has_at_least_one_font_file_or_other(font_name):
"""Each font folder has at least one font file (ttf/otf/web) or content in other_files."""
font_dir = FONT_FILES_DIR / font_name
has_ttf = any((font_dir / "ttf").glob("*.ttf"))
has_otf = any((font_dir / "otf").glob("*.otf"))
web_dir = font_dir / "web"
has_web = any(
f.suffix.lower() in WEB_EXTENSIONS
for f in web_dir.glob("*")
if f.is_file()
)
other_dir = font_dir / "other_files"
has_other = any(other_dir.iterdir()) if other_dir.exists() else False
assert has_ttf or has_otf or has_web or has_other, (
f"{font_name}: no font files in ttf/, otf/, or web/ and no content in other_files/"
)