versatiles-fonts
| Version | 2026.144.1443 |
| Repo | superproject |
Pre-rendered SDF glyph PBFs for the 10 VersaTiles font families, installed locally for MapLibre GL JS label rendering. Installs the versatiles-org/versatiles-fonts release bundle (fonts.tar.gz — all 10 families: Fira Sans, Lato, Libre Baskerville, Merriweather Sans, Noto Sans, Nunito, Open Sans, PT Sans, Roboto, Source Sans 3) into /opt/versatiles-fonts as signed-distance-field PBFs laid out per MapLibre’s {fontstack}/{range}.pbf glyph-URL convention. Serving the glyphs locally lets the shortbread MapLibre cell render labels without hitting tiles.versatiles.org as a runtime font CDN; the bundle is re-exported by versatiles-frontend at /fonts/.
Acceptance plan
Section titled “Acceptance plan”This candy’s plan: — the runnable spec charly check executes against a live deployment. check: steps are idempotent probes; run: steps change state.
| Intent | Step |
|---|---|
run |
mkdir=/opt/versatiles-fonts |
run |
command=set -euo pipefail ASSET=$(curl -fsSL “https://api.github.com/repos/versatiles-org/versatiles-fonts/releases/latest” \ | jq -r ‘.assets[].browser_download_url’ \ | grep -E ‘/fonts.tar.gz$’ \ | head -1) if [ -z “$ASSET” ]; then echo “ERROR: could not find fonts.tar.gz on versatiles-fonts latest release” >&2 curl -fsSL “https://api.github.com/repos/versatiles-org/versatiles-fonts/releases/latest” \ | jq -r ‘.assets[].name’ >&2 exit 1 fi TMPDIR=$(mktemp -d) cd “$TMPDIR” curl -fsSL “$ASSET” -o fonts.tar.gz tar -xzf fonts.tar.gz -C /opt/versatiles-fonts cd / rm -rf “$TMPDIR” |
check |
the install directory /opt/versatiles-fonts exists |
check |
at least one signed-distance-field glyph PBF was unpacked from the release tarball |
check |
the default MapLibre font Noto Sans Regular is present |
check |
glyphs follow MapLibre’s {range}.pbf naming so the base 0-255.pbf range file exists |
agent-check |
a MapLibre GL JS client can fetch any installed family’s glyph ranges via the standard {fontstack}/{range}.pbf glyph-URL template |
check |
package=curl |
check |
package=jq |