Files
font/readme.md
zeekay b42e53b52a font: one name for the family, and nothing shipped that a consumer cannot use
"Zen Sans" appears nowhere in the binaries — the name table says Zen, zen.css
declares Zen, the binding is Zen — so the prose that called it Zen Sans was the
only place the name existed. The readme, the package readme, the specimen
description and the keyword list now say what the font says.

packages/zen/font/ is deleted: five .d.ts files re-exporting the root, in a
directory the exports map does not mention and nothing resolves through. It is
the layout of the package this was forked from, and it had been shipping.

`files` now bounds the tarball to what a consumer resolves — dist, the root
types, the licence and the readme. scripts/ is how the package is BUILT, and
six build scripts were being downloaded by every install.

The types are documented, and documented with facts a caller needs and cannot
infer: which family each binding declares and which custom property it sets.
The doc that was there before came with the fork — it described a "Zen Sans"
family, a ZenSansNonVariable export and a deprecation ladder belonging to
another package's history.

Every copyright the licence requires is untouched: LICENSE.txt lists both
holders, and every one of the 219 faces carries both notices in its own name
table, which is what OFL §2 asks of a copy travelling alone.
2026-08-28 08:17:01 -07:00

2.6 KiB
Raw Permalink Blame History

Zen

The word Zen set twice — in Zen at a thin display weight, and beside it in Zen Pixel's triangle cut — over the line "Sans · Mono · Pixel" and, in Zen Mono, "one variable file · 100–900 · font.hanzo.ai". The word Zen set twice — in Zen at a thin display weight, and beside it in Zen Pixel's triangle cut — over the line "Sans · Mono · Pixel" and, in Zen Mono, "one variable file · 100–900 · font.hanzo.ai".

Zen, Zen Mono & Zen Pixel

Zen is the Hanzo typeface. Sans is a geometric sans-serif in the Swiss line — one variable file across weight 100–900, drawn for headlines, wordmarks and text alike. Mono is its fixed-width companion, cut for code editors, terminals and diagrams. Pixel is a display family of five cuts — Square, Grid, Circle, Triangle, Line — one alphabet drawn five ways.

Installing

Fonts to install on a machine are in fonts/: otf/ and ttf/ for the static cuts, variable/ for the one-file version of each family, webfonts/ for .woff2. make build regenerates all of it from sources/.

For a web or app surface, take the package instead — it carries the faces, the stylesheet and the presets:

pnpm add @hanzo/font
import '@hanzo/font/css'          // the faces
import '@hanzo/font/presets.css'  // the presets

Then name the role rather than the face: var(--font-sans), var(--font-mono). Full instructions are in the package README, and font.hanzo.ai is the live specimen.

Building

CI builds the fonts on every push — look under Actions for the latest. To build on your own machine:

  • make build produces the font files.
  • make test runs Fontspector's quality checks.
  • make proof writes HTML proofs.

crates/zen is the type tooling behind the presets — it reads outlines, measures optical white between pairs, and fits one setting to a target shape. It compiles to a native binary and to wasm from the same source, which is what lets the specimen page run the fitter live.

License

This Font Software is licensed under the SIL Open Font License, Version 1.1, in LICENSE.txt, which ships beside the binaries. The license is also available with a FAQ at https://scripts.sil.org/OFL

Repository layout

Structured as Unified Font Repository v0.3, adjusted for the Google Fonts build workflow.