"""Convert the browser's bundled WOFF2 fonts to PDF-embeddable TTF files.""" from pathlib import Path import sys from fontTools.ttLib import TTFont FONT_SPECS = ( ("outfit", "outfit-latin-400-normal.woff2", "outfit-400.ttf"), ("outfit", "outfit-latin-700-normal.woff2", "outfit-700.ttf"), ("plus-jakarta-sans", "plus-jakarta-sans-latin-400-normal.woff2", "plus-jakarta-sans-400.ttf"), ("plus-jakarta-sans", "plus-jakarta-sans-latin-700-normal.woff2", "plus-jakarta-sans-700.ttf"), ( "plus-jakarta-sans", "plus-jakarta-sans-latin-400-italic.woff2", "plus-jakarta-sans-400-italic.ttf", ), ( "plus-jakarta-sans", "plus-jakarta-sans-latin-700-italic.woff2", "plus-jakarta-sans-700-italic.ttf", ), ("allura", "allura-latin-400-normal.woff2", "allura-400.ttf"), ("caveat", "caveat-latin-400-normal.woff2", "caveat-400.ttf"), ( "dancing-script", "dancing-script-latin-400-normal.woff2", "dancing-script-400.ttf", ), ("great-vibes", "great-vibes-latin-400-normal.woff2", "great-vibes-400.ttf"), ("sacramento", "sacramento-latin-400-normal.woff2", "sacramento-400.ttf"), ) def main(source_root: Path, output_root: Path) -> None: output_root.mkdir(parents=True, exist_ok=True) for package, source_name, output_name in FONT_SPECS: source = source_root / package / "files" / source_name if not source.is_file(): raise FileNotFoundError(source) font = TTFont(source) font.flavor = None font.save(output_root / output_name) if __name__ == "__main__": if len(sys.argv) != 3: raise SystemExit("usage: convert_frontend_fonts.py SOURCE_ROOT OUTPUT_ROOT") main(Path(sys.argv[1]), Path(sys.argv[2]))