apply jet brains nerd font + image fix

what in the fahhh
This commit is contained in:
lda
2026-07-17 01:52:44 +07:00 Verified
parent b3d4b864fd
commit 70592cd2b8
9 changed files with 354 additions and 53 deletions
+111
View File
@@ -0,0 +1,111 @@
#!/usr/bin/env -S uv run --script
# /// script
# requires-python = ">=3.11"
# dependencies = [
# "brotli==1.2.0",
# "fonttools==4.63.0",
# ]
# ///
"""Rebuild Wakey's self-hosted terminal webfont from Nerd Fonts."""
from __future__ import annotations
import hashlib
import os
import shutil
import tarfile
import tempfile
import urllib.request
from pathlib import Path
from fontTools.ttLib import TTFont
NERD_FONTS_VERSION = "v3.4.0"
ARCHIVE_SHA256 = "ef552a3e638f25125c6ad4c51176a6adcdce295ab1d2ffacf0db060caf8c1582"
WOFF2_SHA256 = "50680a64466fbcc3eff68e00f84505f55681c86f8450c042416af5a8dbc1cce1"
FONT_FILE = "JetBrainsMonoNerdFontMono-Regular"
ARCHIVE_URL = (
"https://github.com/ryanoasis/nerd-fonts/releases/download/"
f"{NERD_FONTS_VERSION}/JetBrainsMono.tar.xz"
)
ROOT = Path(__file__).resolve().parent.parent
OUTPUT_DIR = ROOT / "ui/src/assets/fonts/jetbrains-mono-nerd"
def sha256(path: Path) -> str:
digest = hashlib.sha256()
with path.open("rb") as source:
for chunk in iter(lambda: source.read(1024 * 1024), b""):
digest.update(chunk)
return digest.hexdigest()
def verify_sha256(path: Path, expected: str) -> None:
actual = sha256(path)
if actual != expected:
raise RuntimeError(
f"checksum mismatch for {path}\nexpected: {expected}\nactual: {actual}"
)
def download(url: str, destination: Path) -> None:
request = urllib.request.Request(url, headers={"User-Agent": "wakey-font-preparer"})
with (
urllib.request.urlopen(request, timeout=60) as response,
destination.open("wb") as output,
):
shutil.copyfileobj(response, output)
def extract_member(archive: tarfile.TarFile, name: str, destination: Path) -> None:
source = archive.extractfile(name)
if source is None:
raise RuntimeError(f"missing {name} in Nerd Fonts archive")
with source, destination.open("wb") as output:
shutil.copyfileobj(source, output)
def install_file(source: Path, destination: Path) -> None:
"""Atomically replace an asset without exposing a partial file to Vite."""
temporary = destination.with_name(f".{destination.name}.tmp")
try:
shutil.copyfile(source, temporary)
os.chmod(temporary, 0o644)
temporary.replace(destination)
finally:
temporary.unlink(missing_ok=True)
def main() -> None:
OUTPUT_DIR.mkdir(parents=True, exist_ok=True)
with tempfile.TemporaryDirectory(prefix="wakey-terminal-font.") as temp:
work_dir = Path(temp)
archive_path = work_dir / "JetBrainsMono.tar.xz"
ttf_path = work_dir / f"{FONT_FILE}.ttf"
woff2_path = work_dir / f"{FONT_FILE}.woff2"
license_path = work_dir / "OFL.txt"
print(f"Downloading Nerd Fonts {NERD_FONTS_VERSION} JetBrainsMono archive")
download(ARCHIVE_URL, archive_path)
verify_sha256(archive_path, ARCHIVE_SHA256)
with tarfile.open(archive_path, "r:xz") as archive:
extract_member(archive, ttf_path.name, ttf_path)
extract_member(archive, license_path.name, license_path)
# FontTools otherwise stamps the current time into the head table,
# making equivalent rebuilds produce different WOFF2 files.
font = TTFont(ttf_path, recalcTimestamp=False)
font.flavor = "woff2"
font.save(woff2_path)
verify_sha256(woff2_path, WOFF2_SHA256)
install_file(woff2_path, OUTPUT_DIR / woff2_path.name)
install_file(license_path, OUTPUT_DIR / license_path.name)
print(f"Prepared {OUTPUT_DIR / f'{FONT_FILE}.woff2'}")
if __name__ == "__main__":
main()