GenZui (源萃, げんずい) is a Japanese type family with hentaigana, historical kana and Unicode 18.0 additions.
| 源萃明朝 GenZui Serif | 源萃ゴシック GenZui Sans | |
|---|---|---|
| Style | Japanese serif on Noto Serif JP | Japanese sans-serif on Noto Sans JP |
| Release | Regular and Bold 0.118 · 17,271 characters | Regular and Bold 0.105 · 17,096 characters |
| Specimen | genzui.mkpo.li/serif | genzui.mkpo.li/sans |
| TTF | GenZuiSerif-Regular.ttf · GenZuiSerif-Bold.ttf | GenZuiSans-Regular.ttf · GenZuiSans-Bold.ttf |
| Package | ZIP | ZIP |
Home · Design gallery · Font comparison · Releases
Both fonts are free for personal and commercial use under SIL OFL 1.1. Open the TTF and select Install, then choose GenZui Serif / 源萃明朝 or GenZui Sans / 源萃ゴシック in your app. Each complete package adds WOFF2, an offline specimen, installation instructions and licences. The two fonts install side by side.
For rare kanji, GenZui Sans Han / 源萃ゴシック漢字 is a separate download: two Regular files that add every CJK ideograph, radical and stroke in Unicode 18 that GenZui Sans lacks. Install them beside GenZui Sans and list GenZui Sans first. See GenZui Sans Han for its sources.
Browser fallback depends on the website and browser settings. Browser setup covers historical-kana fallback.
<link rel="stylesheet" href="https://genzui.mkpo.li/v0.118/genzui.css">
<link rel="stylesheet" href="https://genzui.mkpo.li/sans-v0.105/genzui-sans.css">.serif-sample { font-family: "GenZui Serif", serif; }
.sans-sample { font-family: "GenZui Sans", sans-serif; }With GenZui Sans Han, load its genzui-sans-han.css after the Sans stylesheet
and add the family after GenZui Sans. Each file declares its unicode-range, so
a browser fetches it only for pages that use its characters:
.sans-sample { font-family: "GenZui Sans", "GenZui Sans Han", sans-serif; }Both faces include:
- 286 hentaigana.
- All seven Unicode 18.0 kana additions: .
- Ten encoded kana ligatures, including 𪜈 TOMO, 𬻿 katakana NARI, 𬼀 SHITE and 𬼂 hiragana NARI. Type them as their own characters; ordinary kana sequences are never rewritten into ligatures, because those depend on the word and the hand.
- Small kana, the 16 Katakana Phonetic Extensions used for Ainu, and older kana forms.
- 13 Minnan tone letters, with overline and dot-below support.
The Minnan specimen shows tone placement, combining marks, ruby and both WU forms. Vertical tone placement supports one to four fullwidth kana at default advance and zero letter spacing; longer groups or custom spacing need application-level positioning.
Every assigned character in Unicode 18.0’s Hiragana, Katakana, Katakana Phonetic Extensions, Kana Supplement, Kana Extended-A, Kana Extended-B and Small Kana Extension blocks is present. The Hiragana and Katakana script properties and script extensions together cover all 763 characters, including halfwidth kana, enclosed kana, squared katakana and shared marks. Audits: Serif 0.118 · Sans 0.103. These are encoding checks; historical variants and arbitrary combining-mark sequences need separate typographic assessment.
Shared ideographs keep Japanese regional forms. Chinese and Korean coverage follows each face’s Noto base, with 卄 from the matching Noto CJK font. Releases carry Noto's 14,682 Adobe-Japan1 variation sequences. Source builds of both faces add 5,138 Moji_Joho, Hanyo-Denshi, KRName, CAAPH and MSARG sequences that select one of those glyphs; IVD notes. Both families have Regular and Bold.
- 27 Funatsu Okinawan forms and eight raised katakana, on 26 documented PUA bases. Voiced forms and YI/YE use combining dakuten wherever possible. The Okinawan composer on the Serif page, the input notes and the mapping registry document the keyboard.
- 21 historical kana constructions from Noto components and original drawing.
181 of the 255 구결자 that 한/글 places at U+F67E–U+F77C are drawn from each Serif face's own glyph of the ideograph they reproduce; the other 74 are not yet drawn. PUA assignments need a matching font on the reading side. The registry is data/gugyeol/forms.json.
In GenZui Serif, 𛄟 U+1B11F has a curved descent by default. Stylistic set 1
(ss01, “Hooked WU”) selects the hooked alternate without changing the
character encoding.
.hooked-wu {
font-feature-settings: "ss01" 1;
}| Source | Contribution |
|---|---|
| Noto Serif JP | Japanese subset of Noto Serif CJK; 16,726 encoded characters and kana components |
| Noto Serif Hentaigana | 286 hentaigana and four other historical forms |
| FRB Taiwanese Kana | 13 Minnan tone letters and two combining marks |
| Noto Serif CJK JP | 卄 (twenty), absent from the JP subset, from the same family’s full CJK font with Japanese default forms; also the twin ideograph for 6 of the 181 drawn 구결자, where the twin is absent from Noto Serif JP |
| GenZui constructions | 21 historical kana constructions, SQUARE PAATU, ten transcription symbols and 26 Okinawan PUA characters, from Noto components and original drawing |
| 구결 registry | 181 구결자, each drawn from the face’s own glyph of its twin ideograph, or from Noto Serif CJK JP where that twin is absent |
| Source | Contribution |
|---|---|
| Noto Sans JP, weights 400 and 700 | 16,732 encoded characters, with the original outlines, metrics and Japanese layout |
| Noto Sans Hentaigana | 286 hentaigana from calibrated instances at weight axis 410 (Regular) and 770 (Bold), and four archaic kana from the Regular instance and axis 780 (Bold). The unreleased sans companion of Noto Serif Hentaigana, designed by Kazuhiro Yamada (nipponia) and compiled here from source |
| GenSeki Hentaigana Gothic 1.201 Regular and Bold | 20 historical kana, small kana and ligatures. Its README credits and the ligatures 𪜈 𬻿 𬼀 𬼂 to Sukima Gothic; its name record credits the other kana to GenSeki Gothic |
| Noto Sans CJK JP Regular and Bold | U+5344 卄 |
| FRB Taiwanese Kana | 13 Minnan tone letters and two combining marks; Bold blends them toward GenZui’s Bold masters |
| GenZui constructions | Alternate WI from Noto Sans JP strokes, squared PAATU and the transcription symbols |
A separate download that fills in every CJK ideograph GenZui Sans lacks. Each character takes the first source that has it.
| Source | Contribution |
|---|---|
| Noto Sans CJK JP Regular | 16,546 ideographs in the Source Han Sans design, Japanese forms |
| Sukima Gothic 11.41 Main and Sub | 37,005 ideographs, Japanese forms on the Genshin Gothic / Source Han Sans 1.002 base |
| Plangothic P1 and P2 2.9.5795 | 35,703 characters, mostly extension ideographs, on Source Han Sans CN, Chinese Mainland forms |
The design gallery shows GenZui’s own constructions in horizontal and vertical text. Research notes record glyph references and construction details. The font survey covers other hentaigana fonts, including GenSeki Hentaigana Gothic. GenZui Sans records its stem matching, refits and a provenance check of the hentaigana. The Sans specimen traces each source back to the fonts it came from.
Related project: Kureedo / クレード, a Klee One derivative with historical katakana and Ainu kana.
Python 3.12 is supported. Source fonts and Unicode data are pinned by URL and
SHA-256 in sources/manifest.json and sources/sans-manifest.json.
The variation-sequence table data/ivd/aliases.tsv is derived from the files
in sources/ivd-manifest.json by scripts/ivd.py derive.
Each face has its own virtual environment; the Sans instance compiler needs a
newer fontTools than the Serif environment.
python3 -m venv .venv
.venv/bin/python -m pip install -r requirements.lock
.venv/bin/python scripts/sources.py
.venv/bin/python scripts/repertoire.py
.venv/bin/python scripts/serif.py
.venv/bin/python scripts/check_serif.py
.venv/bin/python scripts/bold.py
.venv/bin/python scripts/check_bold.py
node scripts/check_okinawan_input.cjs
.venv/bin/python scripts/check_serif_browsers.py
.venv/bin/python scripts/package_serif.pyOutputs are in build/serif/. The checks cover the historical and
transcription inventory, preservation of upstream glyphs and metrics, Japanese
layout, marks, Minnan tones, WU variants, the Okinawan forms and TTF/WOFF2
parity. scripts/check_coverage.py checks the pinned Unicode Script and
Script_Extensions properties. scripts/check_serif_browsers.py runs from WSL
and checks both faces in headless Windows Chrome, Vivaldi and Firefox, whose
paths it reads from ~/.config/genzui/windows-browsers.json
({"chrome.exe": {"path": "C:\\..."}, "vivaldi.exe": {...}, "firefox.exe": {...}}).
Release packaging requires that report for the exact font bytes, then writes
the ZIP.
A sentence-ready subset of GenZui Serif: 27 Funatsu forms, eight raised katakana, ordinary kana, Latin letters, numbers and punctuation. Regular and Bold have 805 encoded characters with the full family’s outlines, metrics and shaping. The complete GenZui Serif fonts include the same Okinawan forms.
.venv/bin/python scripts/okinawan_subset.py
.venv/bin/python scripts/check_okinawan_subset.py
.venv/bin/python scripts/okinawan_subset.py --packageOutputs are in build/okinawan/; index.html contains editable sentences.
The separate package is dist/GenZuiSerifOkinawan-0.118.zip.
python3 -m venv .venv-sans
.venv-sans/bin/python -m pip install -r requirements-sans.lock
.venv-sans/bin/python scripts/sans.py
.venv-sans/bin/python scripts/sans_bold.py
.venv-sans/bin/python scripts/check_sans.py
.venv-sans/bin/python scripts/check_sans_bold.py
PLAYWRIGHT_MODULE=/path/to/node_modules/playwright node scripts/check_sans_browser.cjs
.venv-sans/bin/python scripts/package_sans.pyThe general source build writes build/sans/ and includes unshipped 구결자 work.
The 0.105 release balances selected Okinawan forms and the 286 hentaigana
against native Sans kana. It builds on immutable Sans 0.103; use the
release procedure.
The build guide
covers the stem-matched hentaigana instances, the GenSeki refits, the Bold
drawings, the browser check and packaging to dist/.
GenZui Sans Okinawan provides Regular/Bold sentence-ready subsets with 805 encoded characters. Sans 0.105 includes the same forms in the full family. See its build and proof guide.
GenZui Sans P / 源萃ゴシックP is derived from the built Sans faces. It applies
the font's palt widths by default for applications that ignore the feature
and is packaged separately:
.venv-sans/bin/python scripts/sans_p.py
.venv-sans/bin/python scripts/check_sans_p.py
.venv-sans/bin/python scripts/package_sans_p.pyIt writes build/sans/GenZuiSansP-* and dist/GenZuiSansP-0.103.zip.
Build GenZui Sans Regular first. Sukima Gothic is downloaded from BOOTH with a
signed-in account; place sukima-gothic_ver11.41.zip in build/sans-work/han/.
The other sources are fetched and checked against sources/han-manifest.json.
.venv-sans/bin/python scripts/sans_han.py
.venv-sans/bin/python scripts/check_sans_han.py
.venv-sans/bin/python scripts/package_sans_han.pyOutputs are in build/sans-han/; the package is dist/GenZuiSansHan-0.100.zip.
The Han notes describe the source order and the
file split.
GenZui Serif Kugyol and GenZui Sans Kugyol are cut from the built Serif and Sans faces to exactly the 181 구결자 those faces draw at U+F67E–U+F77C, plus SPACE and IDEOGRAPHIC SPACE. Outlines, metrics, and licensing metadata match the parent face; only the repertoire is reduced. Use them as a compact 구결 fallback font where the full GenZui faces are unnecessary.
.venv/bin/python scripts/kugyol.py
.venv/bin/python scripts/check_kugyol.pyBoth parents must be built from the current sources with all 181 forms. The published Sans 0.103 fonts predate this repertoire and cannot serve as the Sans Kugyol parent. Outputs, including a
contact-sheet proof.png, are in build/kugyol/.
After both faces are packaged, generate the public site:
bun install --frozen-lockfile
bun run release:build
.venv/bin/python scripts/check_release.pyThe public site is written to build/release/ and serves a family landing at
/, GenZui Serif at /serif and GenZui Sans at /sans, with fonts from the
versioned release folders. Edit site/, templates/ and
scripts/release_site.py / scripts/sans_site.py.
build/site/ holds the offline development specimen with glyph comparisons.
Deployment notes describe the Cloudflare configuration.
/compare sets GenZui beside other kana and hentaigana fonts. The fonts are
pinned in sources/compare-manifest.json; Sukima Gothic needs a BOOTH login, so
pass a local copy of its archive. Measuring is a separate step; the page build
reads only the committed results. Other fonts are not shipped on the site: their
glyphs appear as images rendered from the pinned files, in
research/font-comparison-images/, with each font's credit beside them.
.venv/bin/python scripts/compare_sources.py --sukima PATH/sukima-gothic_ver11.41.zip
.venv/bin/python scripts/compare_fonts.py # writes research/font-comparison*.json
.venv/bin/python scripts/compare_site.py # writes build/site/compare.html- Font outlines and font binaries: SIL OFL 1.1.
- Project scripts and installer: MIT.
- Unicode data: Unicode licence.
- Historical comparison material from Jigmo: CC0 1.0; see Jigmo's licence.
- Historical printed specimens: public-domain scans, with bibliographic references.
NOTICE.txt credits the source projects. Original notices
accompany the fonts and remain under sources/upstream/. Jigmo supplied the
NARI outline in comparison fonts through 0.102; the released NARI is a GenZui
drawing. Further details are in the licensing notes.