53 lines
2.2 KiB
Bash
Executable File
53 lines
2.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Subsets and converts TTF system fonts to WOFF2 for web use.
|
|
# Requires: fonttools (pyftsubset) — `pip install fonttools brotli`
|
|
# Output: static/fonts/
|
|
|
|
set -euo pipefail
|
|
|
|
OUTDIR="$(dirname "$0")/../static/fonts"
|
|
mkdir -p "$OUTDIR"
|
|
|
|
SPECTRAL="/usr/share/fonts/ttf-spectral"
|
|
FIRA="/usr/share/fonts/TTF"
|
|
JBM="/usr/share/fonts/TTF"
|
|
|
|
# Unicode range: Latin, Latin Extended-A, General Punctuation, common symbols
|
|
UNICODES="U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD"
|
|
|
|
SPECTRAL_FEATURES="liga,dlig,smcp,c2sc,onum,lnum,pnum,tnum,frac,ordn,sups,subs,ss01,ss02,ss03,ss04,ss05,kern"
|
|
FIRA_FEATURES="smcp,liga,kern"
|
|
JBM_FEATURES="liga,kern,calt"
|
|
|
|
subset() {
|
|
local src="$1" dest="$2" features="$3"
|
|
echo " → $(basename "$dest")"
|
|
pyftsubset "$src" \
|
|
--output-file="$dest" \
|
|
--flavor=woff2 \
|
|
--layout-features="$features" \
|
|
--unicodes="$UNICODES" \
|
|
--no-hinting \
|
|
--desubroutinize
|
|
}
|
|
|
|
echo "Spectral..."
|
|
subset "$SPECTRAL/Spectral-Regular.ttf" "$OUTDIR/spectral-regular.woff2" "$SPECTRAL_FEATURES"
|
|
subset "$SPECTRAL/Spectral-Italic.ttf" "$OUTDIR/spectral-italic.woff2" "$SPECTRAL_FEATURES"
|
|
subset "$SPECTRAL/Spectral-SemiBold.ttf" "$OUTDIR/spectral-semibold.woff2" "$SPECTRAL_FEATURES"
|
|
subset "$SPECTRAL/Spectral-SemiBoldItalic.ttf" "$OUTDIR/spectral-semibold-italic.woff2" "$SPECTRAL_FEATURES"
|
|
subset "$SPECTRAL/Spectral-Bold.ttf" "$OUTDIR/spectral-bold.woff2" "$SPECTRAL_FEATURES"
|
|
subset "$SPECTRAL/Spectral-BoldItalic.ttf" "$OUTDIR/spectral-bold-italic.woff2" "$SPECTRAL_FEATURES"
|
|
|
|
echo "Fira Sans..."
|
|
subset "$FIRA/FiraSans-Regular.ttf" "$OUTDIR/fira-sans-regular.woff2" "$FIRA_FEATURES"
|
|
subset "$FIRA/FiraSans-SemiBold.ttf" "$OUTDIR/fira-sans-semibold.woff2" "$FIRA_FEATURES"
|
|
|
|
echo "JetBrains Mono..."
|
|
subset "$JBM/JetBrainsMono-Regular.ttf" "$OUTDIR/jetbrains-mono-regular.woff2" "$JBM_FEATURES"
|
|
subset "$JBM/JetBrainsMono-Italic.ttf" "$OUTDIR/jetbrains-mono-italic.woff2" "$JBM_FEATURES"
|
|
|
|
echo ""
|
|
echo "Done. Output:"
|
|
ls -lh "$OUTDIR"/*.woff2
|