Files
font/fonts/ZenMono/webfonts/ZenMono-SemiBoldItalic.woff2
zeekay 9bb1a93a39 license: the built faces carry the upstream notice, like the exports already did
LICENSE.txt at the root lists both holders — Vercel/basement.studio for Geist
and Hanzo AI for Zen — and packages/zen/scripts/name.py writes both onto the
hand-exported Pixel cuts, its docstring stating the reason: OFL §2 binds each
copy of the Font Software to the notice, and a .woff2 served to a browser is a
copy travelling alone.

The fontmake-built families took the other path. Their fields come from the
Glyphs sources through scripts/set-fontinfo.py, and that wrote our line only —
so Zen and Zen Mono, the two faces every Hanzo surface actually loads, shipped
without the notice the licence beside them carries. Same repo, two answers, and
the wrong one was on the faces in production.

set-fontinfo.py now writes both, so a rebuild produces it directly.
packages/zen/scripts/notice.py repairs the binaries already built and
committed; it is idempotent and reports what it changed. 199 of 219 faces
gained the line — the 20 that did not are the Pixel cuts name.py had already
handled.

Family, uniqueID, version, manufacturer, designer and the vendor URLs are
untouched: those are ours, and §3 reserves nothing here — the upstream block
declares no Reserved Font Name.
2026-08-25 12:40:52 -07:00

54 KiB