mirror of
https://github.com/hanzoai/font.git
synced 2026-11-02 23:42:52 +00:00
Zen draws no Arabic, so an Arabic page fell to whatever face the browser picked. Two variable companions over Zen's own weight axis, cut to the Arabic blocks, now ship in fonts/arabic. Each is declared under its own family with an Arabic unicode-range, and the default under Zen and Zen Mono too, so font-family: Zen sets Arabic and a page with no Arabic on it requests nothing new. They are not ours and keep their names, notices and vendor; identity.py checks them for exactly that, from the table arabic.py builds them from, pinned by commit and checksum. next.mjs refuses a default whose weight range is not Zen's: faces composite only when their descriptors match, and a companion that wins the weight match sends Latin to the system sans.
39 lines
3.7 KiB
CSS
39 lines
3.7 KiB
CSS
/* Zen — the Hanzo type family, as plain CSS. Generated by scripts/next.mjs.
|
|
Do not edit.
|
|
|
|
Every other entry in this package is a next/font binding, so the faces were
|
|
reachable only from a Next app. A font is not a framework feature: this file
|
|
is @font-face and nothing else, so Vite, Tauri, Astro, a plain <link> and any
|
|
bundler load the same faces from the same package.
|
|
|
|
Import it once at your root: import '@hanzo/font/css'
|
|
|
|
The two text families are variable over wght 100-900, so one file covers
|
|
every weight. Pixel is five separate shapes rather than a weight axis.
|
|
|
|
Arabic comes from companions that are not ours, in fonts/arabic:
|
|
Noto Kufi Arabic, Noto Sans Arabic. Each is declared under its own
|
|
family, and the default under 'Zen' and 'Zen Mono' too, for the Arabic blocks
|
|
only: a page with no Arabic on it never requests one. */
|
|
|
|
@font-face{font-family:'Zen';src:url('./fonts/zen-sans/Zen-Variable.woff2') format('woff2');font-weight:100 900;font-style:normal;font-display:swap}
|
|
@font-face{font-family:'Zen';src:url('./fonts/zen-sans/Zen-Italic-Variable.woff2') format('woff2');font-weight:100 900;font-style:italic;font-display:swap}
|
|
@font-face{font-family:'Zen';src:url('./fonts/arabic/NotoKufiArabic-Variable.woff2') format('woff2');font-weight:100 900;font-style:normal;font-display:swap;unicode-range:U+0600-06FF, U+0750-077F, U+FB50-FDFF, U+FE70-FEFC}
|
|
@font-face{font-family:'Zen Mono';src:url('./fonts/zen-mono/ZenMono-Variable.woff2') format('woff2');font-weight:100 900;font-style:normal;font-display:swap}
|
|
@font-face{font-family:'Zen Mono';src:url('./fonts/zen-mono/ZenMono-Italic-Variable.woff2') format('woff2');font-weight:100 900;font-style:italic;font-display:swap}
|
|
@font-face{font-family:'Zen Mono';src:url('./fonts/arabic/NotoKufiArabic-Variable.woff2') format('woff2');font-weight:100 900;font-style:normal;font-display:swap;unicode-range:U+0600-06FF, U+0750-077F, U+FB50-FDFF, U+FE70-FEFC}
|
|
@font-face{font-family:'Noto Kufi Arabic';src:url('./fonts/arabic/NotoKufiArabic-Variable.woff2') format('woff2');font-weight:100 900;font-style:normal;font-display:swap;unicode-range:U+0600-06FF, U+0750-077F, U+FB50-FDFF, U+FE70-FEFC}
|
|
@font-face{font-family:'Noto Sans Arabic';src:url('./fonts/arabic/NotoSansArabic-Variable.woff2') format('woff2');font-weight:100 900;font-style:normal;font-display:swap;unicode-range:U+0600-06FF, U+0750-077F, U+FB50-FDFF, U+FE70-FEFC}
|
|
@font-face{font-family:'Zen Pixel Circle';src:url('./fonts/zen-pixel/ZenPixel-Circle.woff2') format('woff2');font-style:normal;font-display:swap}
|
|
@font-face{font-family:'Zen Pixel Grid';src:url('./fonts/zen-pixel/ZenPixel-Grid.woff2') format('woff2');font-style:normal;font-display:swap}
|
|
@font-face{font-family:'Zen Pixel Line';src:url('./fonts/zen-pixel/ZenPixel-Line.woff2') format('woff2');font-style:normal;font-display:swap}
|
|
@font-face{font-family:'Zen Pixel Square';src:url('./fonts/zen-pixel/ZenPixel-Square.woff2') format('woff2');font-style:normal;font-display:swap}
|
|
@font-face{font-family:'Zen Pixel Triangle';src:url('./fonts/zen-pixel/ZenPixel-Triangle.woff2') format('woff2');font-style:normal;font-display:swap}
|
|
|
|
/* Bound as custom properties too, so a consumer can hand a family to a design
|
|
system without spelling its name — and so a CSS-only consumer reads the same
|
|
two properties the next/font bindings generate. Dropping this block is what
|
|
1.9.0 did, and it turned every `var(--font-zen-sans)` in a non-Next app into
|
|
an invalid value, i.e. the OS default, silently. */
|
|
:root{--font-zen-sans:'Zen';--font-zen-mono:'Zen Mono';--font-zen-arabic:'Noto Kufi Arabic';--font-zen-pixel-circle:'Zen Pixel Circle';--font-zen-pixel-grid:'Zen Pixel Grid';--font-zen-pixel-line:'Zen Pixel Line';--font-zen-pixel-square:'Zen Pixel Square';--font-zen-pixel-triangle:'Zen Pixel Triangle'}
|