levineuwirth.org/tools/subset-fonts.sh

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