Nishi Family › Compare › Sovereign Typography vs the Font Toolchain
Nishi Compare · measured, not asserted
Sovereign Typography vs the Font Toolchain
Nishi vs the field — every Nishi cell is measured against real organ source at emit time; each gap names the watch contract that will close it.
A zero-dependency parametric font generator -- in-house glyphs, a complete stroke toolkit, real self-validating TTFs across Latin/Han/Hangul/Katakana -- vs FreeType, HarfBuzz, fontTools, and Noto. HONEST: young on coverage + shaping; genuinely alone on sovereignty (everyone else is built ON these tools).
Overview
The purpose, declared position and evidence coverage of this domain. Source presence and completed acceptance are different measures.
Where we are. Measured 2026-08-19. Original in-house glyphs, a complete stroke toolkit, a parametric weight generator, a self-validating TTF emitter, a box-AA rasterizer, data-URI embedding, four scripts from one engine and a legibility census are present; zero-toolchain sovereignty is the exceed. Absent: WOFF2, single-file variable fonts, hinting, shaping and pan-Unicode coverage (about 40 glyphs today against 101k Han alone -- named honestly as a multi-year mountain). 2026-09-02: the domain gained its READ half -- nx_ttf_fontlib (R5) parses and rasterizes professional faces with every metric read from the file (gate 23/23 on Liberation Sans and Microsoft Arial, 95 of 95 ASCII advances agreeing through our parser) and the browser paints through it; the emit half (R0 WOFF2, R1 variable) is unchanged and its Brotli codec is now declared shared with the browser's web-font loading so there can only ever be one.
Where we need to go. Be web-ready and legible small on our own toolchain, then shape complex scripts and climb coverage block by block with the permille published -- never copying a glyph, never depending on the toolchain everyone else is built on.
Latest recorded release
2026-09-02 · R5
Liberation family + OFL LICENSE landed on the NAS under knowledge/fonts/ via nx_untar (magic-detected ustar); the gate's Liberation half passes 12/12 on the NAS; its house-font half awaits nx_font_full on the NAS (queued).
Release entries describe recorded changes; they do not establish that every capability passed evaluation.
10 of 16 capabilities measured|2 of them measured exceeds|6 open|coverage 625/1000|adoption 3 full / 7 partial
Evidence profile — what the gaps on this board actually are
Measured by nx_swcompare_evidence, read back by nx_evprofile_lib. Every figure is a count with its denominator — there is deliberately no score, no grade and no percentage anywhere in this band, because a stored scalar is a field a seat can edit and a counted partition is not.
evidence|grounded 9/9|unsupported 0|gates green 1/1|proven able to fail 0/1|never bitten 1|green at 0/0 0|open gaps 5|of them unnamed 0|of them proof withheld 0|flips ready 0
proven able to fail counts the gates that have a RECORDED RED — nx_gate_bite mutated the gate subject, rebuilt it, watched the gate go red, and that record is inside the shared TTL. never bitten is its complement over the same denominator: those gates ran and were green, and nothing has ever shown them able to detect anything, so their green is a statement about this run and not about the gate. green at 0/0 is a separate and much weaker observation — the gate printed GREEN on a zero denominator, so its own tooth counter says it examined nothing. A gate can be green, non-zero, and still never bitten; that is the common case and it is now visible instead of implied.
partition: grounded + unsupported = 9 vs present 9 · named + unnamed + withheld = 5 vs open 5 · both reconcile
liar-kill conj=GPQN · all four conjuncts held
graded document: BUILDROOT tree, 3805 bytes · gates map: PRIMARY · stamped 14d 23h ago · STALE against the shared TTL of 604800s — this is evidence about a build nobody can vouch for now · source ../knowledge/status/evstamp_typography.verdict
| Gap class | What it is, and the work it names |
|---|---|
| STALE | This profile is older than the shared TTL, or its clock ran backwards. It is reported as unusable rather than as fresh, because being wrong in the direction of refusing is the safe direction. |
nx_swcompare_evidence typography itself and are not carried on the stamp, so this page names the classes and the producer names the rows. That split is stated rather than hidden: a count without a worklist is not actionable, and this band is honest about which half of that it is.Production map
Follow the dependencies, declared acceptance criteria and recorded priorities. Inspect source binding before treating a rank as executable work.
Ranking source binding: PLAN_MATRIX_BOUND_ONLY. Recorded priorities require current acceptance evidence and resource checks before execution.
Ranking matches the captured plan and matrix only. Latest execution outcome, research freshness, accepted delivery and investment return are unverified.
Recorded priority estimates
Order from nx_compare_rank (nx_dr_ocm: (deficit + cost-of-delay + option + enables) x sponsor x self-sufficiency x momentum / cost). FINISH rows are rungs whose symbol is present but whose organ is short of full adoption: listed before new work by this heuristic. Priority is not measured delivery cost or execution readiness. Stamp: # asof=1789541587 domain=typography target_version=0.1 rungs=7 done=1 open=6 finish=0 ranker=nx_dr_ocm
| # | Stage | Rung | Priority | Derivation |
|---|---|---|---|---|
| #1 | 0.1 | WOFF2 emit (R0) fw_encode | 266 | v=4 m=1 c=15 |
| #2 | 0.1 | Single-file variable font (R1) fv_gvar | 150 | v=3 m=1 c=20 |
| #3 | later | Shaping conformance against the third-party oracle (R6) fs_shape_tests | 1285 | v=9 m=1 c=7 |
| #4 | later | Shaping GSUB and GPOS (R3) fs_shape | 333 | v=5 m=1 c=15 |
| #5 | later | TrueType hinting (R2) fh_hint | 200 | v=5 m=1 c=25 |
| #6 | later | Coverage by Unicode block (R4) gen_unicode_block | 50 | v=2 m=1 c=40 |
Declared roadmap — contract, acceptance, executor, effort
| Rung | Closes with | Definition of done (pre-declared) | Executor | Est. |
|---|---|---|---|---|
| WOFF2 emit (R0) | fw_encode | A WOFF2 container around the self-validating TTF with a sovereign Brotli codec -- ONE codec, whose decoder is the browser's web-font rung BR28 (bwf_load), so emit and load cannot disagree; a browser loads it through the existing data-URI embed and the decoded sfnt checksums to 0xB1B0AFBA | Organ | 1.5 u |
| Single-file variable font (R1) | fv_gvar | fvar and gvar tables carrying the weight axis from ONE stroke definition; a browser renders light through bold from one file; instances match the discrete emits byte-for-byte at the named weights | Organ | 2 u |
| TrueType hinting (R2) | fh_hint | Autohint-class instructions for small sizes; legibility at 9 to 12 px measured by the legibility census improves by a PRE-DECLARED margin over unhinted | Organ | 2.5 u |
| Shaping GSUB and GPOS (R3) | fs_shape | Kerning, ligatures and contextual substitution tables emitted and a sovereign shaper applying them; Arabic joining on a banked word set matches HarfBuzz glyph sequences | Organ | 3 u |
| Coverage by Unicode block (R4) after R3 | gen_unicode_block | A per-block generator extending the stroke engine across scripts with measured coverage permille of Unicode 17 per block; the mountain is climbed block by block and the number is published, never rounded up | Organ | 4 u |
| TrueType READ engine -- our fonts and everyone's, parsed and rasterized by our own code (R5) | tf_adv_em1000 | DONE 2026-09-02 (actual 1 u): nx_ttf_fontlib reads sfnt, cmap format-4 on both the idDelta and the glyphIdArray path, glyf including composite glyphs, hmtx, hhea and the kern table, with EVERY metric read from the file -- the first cut assumed unitsPerEm 1000 and ascender 760 (true only of our emitted house font) and would have halved every professional face silently. Gate 23/23 GREEN on Liberation Sans 2.1.5 and Microsoft Arial (95 of 95 ASCII advances agree through our parser) plus a runtime-synthesised cmap; adopted by the browser render core the same day (browser rung BR26). The domain now owns BOTH halves of the toolchain it replaces: emit (R2, the keystone) and read. | Organ | 1 u |
| Shaping conformance against the third-party oracle (R6) after R3 | fs_shape_tests | The unicode-org text-rendering-tests suite (shaping and positioning cases with expected output -- the oracle HarfBuzz, CoreText and DirectWrite grade against) run through the sovereign shaper with pass and fail per script published; done when the Latin and Arabic cases report counts on the page and a planted wrong glyph order is caught. The browser's shaping rung BR4 grades against the same suite so there is one oracle for both boards. | Organ | 1.5 u |
Milestones
| Milestone | Rungs | Cumulative |
|---|---|---|
| M0 · Web-ready | R0,R1,R5 | 4.5 u |
| M1 · Legible small | R2 | 6 u |
| M2 · World scripts | R3,R4,R6 | 14.5 u |
Inspect a rung and its prerequisites
Declared nodes 7. Rank input binding: PLAN_MATRIX_BOUND_ONLY. Dependency order is authored. Implementation, acceptance evidence, authority and resource readiness are unverified. No action is recommended or dispatched here.
Plan SHA-256 cc77e8fc91a5f0e82b708512631863b55bf9fe004932361fb8dc6bea56d230ea. Target rows 0; role rows 0. Existing risks and release worklog retain their own scope; no node completion is inferred.
Use Enter or Space on a rung to inspect its contract. Prerequisite links locate another rung in this list; open its summary to inspect it. Estimates are authored effort, not forecasts.
R0 — WOFF2 emit
Prerequisites: None declared; this does not establish execution eligibility.
Contract:
fw_encodeAcceptance: A WOFF2 container around the self-validating TTF with a sovereign Brotli codec -- ONE codec, whose decoder is the browser's web-font rung BR28 (bwf_load), so emit and load cannot disagree; a browser loads it through the existing data-URI embed and the decoded sfnt checksums to 0xB1B0AFBA
Authored effort: 1.5. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.
R1 — Single-file variable font
Prerequisites: None declared; this does not establish execution eligibility.
Contract:
fv_gvarAcceptance: fvar and gvar tables carrying the weight axis from ONE stroke definition; a browser renders light through bold from one file; instances match the discrete emits byte-for-byte at the named weights
Authored effort: 2. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.
R2 — TrueType hinting
Prerequisites: None declared; this does not establish execution eligibility.
Contract:
fh_hintAcceptance: Autohint-class instructions for small sizes; legibility at 9 to 12 px measured by the legibility census improves by a PRE-DECLARED margin over unhinted
Authored effort: 2.5. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.
R3 — Shaping GSUB and GPOS
Prerequisites: None declared; this does not establish execution eligibility.
Contract:
fs_shapeAcceptance: Kerning, ligatures and contextual substitution tables emitted and a sovereign shaper applying them; Arabic joining on a banked word set matches HarfBuzz glyph sequences
Authored effort: 3. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.
R4 — Coverage by Unicode block
Prerequisites: R3 (acceptance unverified)
Contract:
gen_unicode_blockAcceptance: A per-block generator extending the stroke engine across scripts with measured coverage permille of Unicode 17 per block; the mountain is climbed block by block and the number is published, never rounded up
Authored effort: 4. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.
R5 — TrueType READ engine -- our fonts and everyone's, parsed and rasterized by our own code
Prerequisites: None declared; this does not establish execution eligibility.
Contract:
tf_adv_em1000Acceptance: DONE 2026-09-02 (actual 1 u): nx_ttf_fontlib reads sfnt, cmap format-4 on both the idDelta and the glyphIdArray path, glyf including composite glyphs, hmtx, hhea and the kern table, with EVERY metric read from the file -- the first cut assumed unitsPerEm 1000 and ascender 760 (true only of our emitted house font) and would have halved every professional face silently. Gate 23/23 GREEN on Liberation Sans 2.1.5 and Microsoft Arial (95 of 95 ASCII advances agree through our parser) plus a runtime-synthesised cmap; adopted by the browser render core the same day (browser rung BR26). The domain now owns BOTH halves of the toolchain it replaces: emit (R2, the keystone) and read.
Authored effort: 1. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.
R6 — Shaping conformance against the third-party oracle
Prerequisites: R3 (acceptance unverified)
Contract:
fs_shape_testsAcceptance: The unicode-org text-rendering-tests suite (shaping and positioning cases with expected output -- the oracle HarfBuzz, CoreText and DirectWrite grade against) run through the sovereign shaper with pass and fail per script published; done when the Latin and Arabic cases report counts on the page and a planted wrong glyph order is caught. The browser's shaping rung BR4 grades against the same suite so there is one oracle for both boards.
Authored effort: 1.5. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.
Learning and practice paths
No structured learning path is declared for this plan. Existing research, roadmap and worklog remain available above.
Capability comparisons
Compare the field, search individual capabilities and open their source and adoption evidence. Documented presence does not establish comparative quality.
Position map — centrality and distinctiveness
The four-quadrant map the field uses for brand strategy (Dawar and Bagga, HBR June 2015), re-derived from this matrix on every publish. Centrality is the share of the category's feature mass a player covers, each feature weighted by how many hold it; distinctiveness is the average lead over each rival on the rows the player holds; breadth is the depth-weighted share of the whole matrix (the bubble); depth is how deeply the rows held are held; momentum is the day-over-day move off the spine (green rising, red falling, grey until day two); the dashed path runs first day → previous day → today. Dividers are the category means. Axes are fitted to the field of play, so read the tick numerals, not the frame. Rival marks are documented presence, so a rival's position reads the record, never its quality. The picture grades its own readability below; the table beside it is the same data for a screen reader or a second method.
knowledge/compare/typography.cdmap (cut|x|y, cube|x|y|z); absent = the HBR defaultsbubble area = breadth · ring = momentum (green rising, red falling, grey until day two) · dashed = category means · axes fitted to the field of play: centrality 400–1000, distinctiveness 240–400 of 0–1000 permil (the full range put every player in one corner)
readability of the 2D cut, self-graded by the layout ruler: label overlaps 0 · labels over marks 0 · off-canvas 0 · unresolved labels 0 · mark overlaps 0 (a fact of the data: two players that close are that close) · data spread 589 permil of the plot · quadrant words unseated 0
text contrast, measured with wcag2-ratio (floors from contrast.conf), light theme: labels 16.24 (floor 4.50) · notes 16.24 (floor 4.50) · quadrant words 5.89 (floor 4.50) · tick numerals 5.89 (floor 4.50) · axis titles 5.59 (floor 4.50) · dark theme: labels 13.78 (floor 4.50) · quadrant words 5.55 (floor 4.50) · axis titles 5.97 (floor 4.50) · dark classes under their floor 0 (one figure serves both themes: a dark shortfall is a token to fix, never a class to hide) · classes refused under their floor 0 (a refused class is not drawn; the scale classes are measured, never hidden) · export: SVG PNG (receipt, rendered by the estate's own rasteriser from this page)
readability of the 3D cube, self-graded by the layout ruler: label overlaps 0 · labels over marks 0 · off-canvas 0 · unresolved labels 0 · mark overlaps 0 (a fact of the data: two players that close are that close) · data spread 375 permil of the plot
10 panels over 5 registered axes, every pair once (the lower axis on x, the higher on y) · each panel fitted to its own field of play, first and last tick numerals shown · no labels in a small cut, the legend names the colours; the grade below reports the mark terms only (MM summed over the panels, spread averaged)
readability of the small multiples, self-graded by the layout ruler: label overlaps 0 · labels over marks 0 · off-canvas 0 · unresolved labels 0 · mark overlaps 3 (a fact of the data: two players that close are that close) · data spread 506 permil of the plot
| Player | Quadrant | centrality | distinctiveness | breadth | depth | momentum | Rows held | Days on spine | First seen |
|---|---|---|---|---|---|---|---|---|---|
| Nishi | Unconventional | 666 | 366 | 458 | 733 | 0 since 2026-09-15 | 10 | 2 | 2026-09-15 |
| FreeType | Mainstream | 770 | 277 | 458 | 814 | 0 since 2026-09-15 | 9 | 2 | 2026-09-15 |
| HarfBuzz | Unconventional | 500 | 347 | 333 | 888 | 0 since 2026-09-15 | 6 | 2 | 2026-09-15 |
| fontTools | Mainstream | 875 | 287 | 520 | 757 | 0 since 2026-09-15 | 11 | 2 | 2026-09-15 |
| Noto | Mainstream | 854 | 312 | 541 | 722 | 0 since 2026-09-15 | 12 | 2 | 2026-09-15 |
| Day | Matrix rows reviewed | Players recorded |
|---|---|---|
| 2026-09-15 | 16 | 5 |
| 2026-09-16 | 16 | 5 |
players 5|matrix rows 16|feature mass 48|centrality mean 733|distinctiveness mean 317|axes 5|spine days 2 (shown 2)|rows written today 0|readability defects 2D 0 cube 0|spine knowledge/status/cdmap/typography.spine
comparewatch- plane row flips with it. A dark tag means the organ file EXISTS but does not declare the contracted symbol: something shipped there under another name, and until the contract is repointed to the real entry point (the plan rung and this row) or the function is renamed, that capability is invisible to this board — a build lost to darkness, named so it is not. The flip is necessary, not sufficient: it proves the symbol exists, never that the capability is good. The bar is the rung's pre-declared done-rule, proven by its gate — a symbol shipped without the behaviour behind it is a defect, and the flip is exactly what makes that defect visible instead of quiet. Competitor marks record documented capability presence — presence, not depth or scale. Adoption is measured too: every measured row carries where its organ stands on the estate's ladder (source → built → promoted → registered → invoked; libraries by importer reach minus validation importers; gates by the execution surfaces that run them). A row is fully adopted only at the top of its ladder; anything short is tagged partial with the exact remedy, so a build nobody promoted can no longer read as shipped. Census stamps: importers asof 1789497476, gate census asof 1789498715 (unix seconds; -1 = census absent).Capability matrix — measured against source
◉ leads / measured exceed● present◐ partial○ absent · click any capability for its evidence
| Capability | Nishi | FreeType | HarfBuzz | fontTools | Noto |
|---|---|---|---|---|---|
In-house original glyphs (no license)Measured exceed:nf_glyph in runtime/nx_nishi_font_core.nx, verified at emit. Nishi designs its own glyphs in-house (no glyph copied, no license); FreeType/HarfBuzz render others' fonts, fontTools manipulates them, Noto is a font -- none GENERATE original letterforms sovereignly Adoption: LIB-WIRED importers=14 nonval=14 — fully adopted (top of its ladder).Pros Nishi leads, a measured exceed; ahead of FreeType, HarfBuzz, fontTools, Noto; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth) | ◉ | ○ | ○ | ○ | ○ |
Complete stroke toolkit (H/V/diagonal/curve)Measured:ellipse exists in runtime/nx_font_curve.nx, verified at emit. Every shape a letterform needs, from primitives; the reference tools consume outlines, they don't compose glyphs from strokes rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: SOURCE-ONLY — PARTIAL: source exists, never compiled: /api/build it.Pros Nishi has it, measured on disk; ahead of HarfBuzzCons not adopted yet: source exists, never compiled: /api/build it | ● | ● | ○ | ● | ● |
Parametric weight-axis generatorMeasured:emit_ttf exists in runtime/nx_font_gen.nx, verified at emit. fontTools + Metafont do parametric/variable design as Best [metafont]; Nishi generates light/regular/bold from ONE stroke definition (weight = stroke radius) -- parity in kind, young Adoption: SOURCE-ONLY — PARTIAL: source exists, never compiled: /api/build it.Pros Nishi has it, measured on disk; ahead of FreeType, HarfBuzzCons behind fontTools (leads); not adopted yet: source exists, never compiled: /api/build it | ● | ○ | ○ | ◉ | ● |
Real self-validating TTF emitterMeasured:csum exists in runtime/nx_font_ttf_emit.nx, verified at emit. fontTools is the reference sfnt writer [fonttools]; Nishi emits a valid sfnt (all tables, big-endian, per-table checksums) that SELF-VALIDATES by re-parsing its own bytes (whole-file checksum == 0xB1B0AFBA) [opentype-otff] -- correct, minimal Adoption: REGISTERED-DARK — PARTIAL: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked).Pros Nishi has it, measured on disk; ahead of HarfBuzzCons behind fontTools (leads); not adopted yet: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked) | ● | ● | ○ | ◉ | ● |
Anti-aliased rasterizerMeasured:nf_blit_glyph_mem exists in runtime/nx_nishi_font_core.nx, verified at emit. FreeType is the Best rasterizer (hinting, subpixel, LCD) [freetype-hinting]; Nishi has a 4x supersample box-AA raster for its own renderer -- present, far behind on hinting/subpixel Adoption: LIB-WIRED importers=14 nonval=14 — fully adopted (top of its ladder).Pros Nishi has it, measured on disk; ahead of HarfBuzz; fully adopted on the estate ladderCons behind FreeType (leads) | ● | ◉ | ○ | ● | ● |
TrueType READ engine -- parse + rasterize real fonts (sfnt, cmap, glyf, composites, hmtx, kern)Measured:tf_adv_em1000 exists in runtime/_hdl_build/nx_ttf_fontlib.nx, verified at emit. FreeType is THE reader and rasterizer (Best) and HarfBuzz reads the same tables to shape (Best); fontTools parses and writes them (Yes); Noto is a font, not a reader. Nishi reads sfnt, cmap format-4 on both paths, glyf with composites, hmtx, hhea and the kern table, every metric READ from the file (gate 23/23 GREEN 2026-09-02 on Liberation Sans and Microsoft Arial -- 95 of 95 ASCII advances agree through our parser), nonzero-winding 4x4 supersampled AA, per-size glyph cache, and hands advances plus pair kern to the browser (browser rung BR26). No hinting, no subpixel, ASCII-only glyph cache so far -- named, not hidden. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=5 nonval=4 — fully adopted (top of its ladder).Pros Nishi has it, measured on disk; ahead of Noto; fully adopted on the estate ladderCons behind FreeType (leads), HarfBuzz (leads) | ● | ◉ | ◉ | ● | ○ |
data-URI @font-face web embedMeasured:font-face exists in runtime/nx_font_web_embed.nx, verified at emit. Standard web-font embedding; Nishi base64s its own .ttf into an @font-face data-URI (zero external load) -- parity rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: SOURCE-ONLY — PARTIAL: source exists, never compiled: /api/build it.Pros Nishi has it, measured on diskCons not adopted yet: source exists, never compiled: /api/build it | ● | ● | ● | ● | ● |
Multi-script (Latin+Han+Hangul+Katakana)Measured:gen_hangul exists in runtime/nx_font_universal.nx, verified at emit. HarfBuzz shapes + Noto covers all scripts as Best; Nishi generates 4 scripts from ONE stroke engine (breadth proof, not coverage) -- young rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: SOURCE-ONLY — PARTIAL: source exists, never compiled: /api/build it.Pros Nishi has it, measured on diskCons behind HarfBuzz (leads), Noto (leads); not adopted yet: source exists, never compiled: /api/build it | ● | ● | ◉ | ● | ◉ |
Legibility census + pioneer benchmarkMeasured:row exists in runtime/nx_font_legib_census.nx, verified at emit. Nishi measures its own legibility across screen tiers + benchmarks vs the field; the reference tools don't self-grade type quality -- a sovereign measurement axis Adoption: SOURCE-ONLY — PARTIAL: source exists, never compiled: /api/build it.Pros Nishi has it, measured on disk; ahead of FreeType, HarfBuzz, fontTools, NotoCons not adopted yet: source exists, never compiled: /api/build it | ● | ○ | ○ | ○ | ○ |
Zero-toolchain sovereigntyMeasured exceed:main in runtime/nx_font_ttf_emit.nx, verified at emit. THE exceed: Noto is built ON fontTools+HarfBuzz; EVERYONE depends on the toolchain. Nishi generates + emits + embeds fonts with ZERO external dependency -- an axis no one else has Adoption: REGISTERED-DARK — PARTIAL: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked).Pros Nishi leads, a measured exceed; ahead of FreeType, HarfBuzz, fontTools, NotoCons not adopted yet: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked) | ◉ | ○ | ○ | ○ | ○ |
Single-file variable font (fvar/gvar)Open — watchingruntime/nx_font_variable.nx : fv_gvar, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. fontTools/Noto ship single-file variable fonts as Best; Nishi emits discrete weights, not one gvar file yet -- honest gap rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind themPros none measured yetCons behind fontTools (leads), Noto; open contract, nothing on disk yet | ○ | ○ | ○ | ◉ | ● |
Complex-script shaping (GSUB/GPOS)Open — watchingruntime/nx_font_shape.nx : fs_shape, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. HarfBuzz is THE shaping engine (Arabic joining, Indic reorder, kerning) [harfbuzz]; Nishi has none -- the biggest gap for Arabic/IndicPros none measured yetCons behind HarfBuzz (leads), Noto; open contract, nothing on disk yet | ○ | ○ | ◉ | ○ | ● |
Shaping conformance against the third-party oracle (R6)Open — watchingruntime/nx_font_shape.nx : fs_shape_tests, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. WATCH fs_shape_tests: the unicode-org text-rendering-tests suite (shaping and positioning cases with expected output -- the oracle HarfBuzz, CoreText and DirectWrite grade against) run through the sovereign shaper with pass and fail per script published; one oracle shared with the browser board (rung BR4). FreeType and HarfBuzz are graded against it (Best); fontTools and Noto exercise it indirectly (Yes). rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind themPros none measured yetCons behind FreeType (leads), HarfBuzz (leads), fontTools, Noto; open contract, nothing on disk yet | ○ | ◉ | ◉ | ● | ● |
WOFF2 compressionOpen — watchingruntime/nx_font_woff2.nx : fw_encode, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. Standard web compression [woff2]; Nishi emits raw TTF only -- honest gapPros none measured yetCons behind FreeType, HarfBuzz, fontTools, Noto; open contract, nothing on disk yet | ○ | ● | ● | ● | ● |
TrueType hintingOpen — watchingruntime/nx_font_hint.nx : fh_hint, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. FreeType/autohint is Best; Nishi has no hinting -- gap for small sizes [truetype-ref]Pros none measured yetCons behind FreeType (leads), fontTools, Noto; open contract, nothing on disk yet | ○ | ◉ | ○ | ● | ● |
Full pan-Unicode coverageDARK —runtime/nx_font_universal.nx EXISTS but does not declare gen_unicode_block: something shipped at this path under another name, and this mark would read open forever. Repoint the contract to the real entry point (the plan rung AND this row) or rename the function; the flip follows on the next beat, and the comparewatch- plane row reads DARK until then. Noto is THE coverage reference [noto] (Unicode 17 = 101k+ Han alone) [unicode17]; Nishi has ~40 glyphs = a multi-year mountain, honestly namedPros none measured yetCons behind Noto (leads); open contract, nothing on disk yet | ○ | ○ | ○ | ○ | ◉ |
Delivery and evidence
Inspect risks, technical debt, rendered observations, experiments and references. Read scope and limitations alongside every result.
Release history and work log
| When | Rung | Kind | Entry |
|---|---|---|---|
| 2026-09-02 | R5 | land | nx_ttf_fontlib now reads every metric from the file (upem, hhea, cmap glyphIdArray path, composites, kern); gate 23/23 on Liberation Sans and Microsoft Arial (95/95 advances agree through our parser), bite-proven; adopted by the browser render core the same day (BR26). |
| 2026-09-02 | R5 | measure | Hand-baked oracle advances proven equal to floor(hmtx*1000/upem) for all 95 ASCII chars and retired: the file is the ruler. |
| 2026-09-02 | R5 | land | Liberation family + OFL LICENSE landed on the NAS under knowledge/fonts/ via nx_untar (magic-detected ustar); the gate's Liberation half passes 12/12 on the NAS; its house-font half awaits nx_font_full on the NAS (queued). |
| 2026-09-02 | R6 | lesson | One shaping oracle for both boards: the unicode-org text-rendering-tests suite is the third-party referee for R3/R6 and browser BR4, mirrored and pinned in browser.refs. |
| 2026-09-02 | R5 | measure | The engine rasterizes any cmap-mapped codepoint (tf_glyph_cp over the shared tf_raster): the browser probe page renders accented Latin, Greek, Cyrillic, em dash and arrow from Liberation outlines with bold and italic slots, measure gate 20/20 with a covered/uncovered codepoint pair (browser BR30). Unmapped scripts still fold to nothing; the notdef cell is queued under browser BR39. |
Person · product · place — not yet measured for this domain
knowledge/compare/typography.ppp (rows surface|nishi or c1..c4|label|url|connect naming OUR live surface and each rival's front door), run nx_ppp_probe domain typography, and this section fills itself on the next beat: the same ruler on both sides — privacy and CX (third-party hosts, tracker classes, cookies, security headers), design and longevity (design hygiene, computed WCAG contrast, render-blocking resources, unsized media, script weight, theme and motion queries), findability (landmarks, skip link, on-site search, breadcrumb, headings, internal links).The field — discovered, not chosen
Rows written by nx_field_discover from typography.seeds: the industry's own lists (Wikipedia wikitext, GitHub topics, awesome lists) read mechanically, every candidate counted across seeds. The matrix columns above are a SEAT'S pick; this band is the population they were picked from, and the stats line measures one against the other. A rival here is a lead, never a verdict — it earns a column when its capabilities are read and pinned.
field|seeds=4|scanned=4|fetched=4|reused=0|failed=0|named=4|candidates=4|mentions=4|capped=0
rival|FreeType|1|1|col0-freetype|https://freetype.org/freetype2/docs/hinting/text-rendering-general.html|named
rival|HarfBuzz|1|1|col1-harfbuzz|https://harfbuzz.github.io/|named
rival|fontTools|1|1|col2-fonttools|https://fonttools.readthedocs.io/en/latest/|named
rival|Noto|1|1|col3-noto|https://notofonts.github.io/|named
| Rank | Rival | Seeds | Mentions | First seed | Kind | Link |
|---|---|---|---|---|---|---|
| 1 | FreeType | 1 | 1 | col0-freetype | named | https://freetype.org/freetype2/docs/hinting/text-rendering-general.html |
| 2 | HarfBuzz | 1 | 1 | col1-harfbuzz | named | https://harfbuzz.github.io/ |
| 3 | fontTools | 1 | 1 | col2-fonttools | named | https://fonttools.readthedocs.io/en/latest/ |
| 4 | Noto | 1 | 1 | col3-noto | named | https://notofonts.github.io/ |
field candidates 4|shown 4 of 4|matrix columns in the field 4 of 4|discovered rivals with no column 0|malformed rows 0 (counted, never rendered)|read-capped 0
Gaps from the record — what the estate does that no board carries
The record census (nx_goalmap record) reads the invoked-tool population and every plan queue row and files each organ or directive that NO matrix, plan or gates row names. A row here is a callout the boards missed: adjudicate it onto a board or declare it infrastructure. Census state BLIND (age 74446 s), sources read 4 of 7 declared — a BLIND census is a FLOOR: unread sources can only add rows.
| kind | name | board | source | evidence |
|---|
rows shown 0|this board's directives 0|estate-wide un-boarded organs 492 (listed in full on /compare/ecosystem)|census rows 611|malformed 0 (counted, never rendered)
References
- [freetype-hinting] The FreeType Project. On Slight Hinting, Proper Text Rendering, Stem Darkening and LCD Filters (FreeType 2.6.2 documentation): native vs auto-hinting, stem darkening, LCD subpixel filters, linear alpha blending and gamma. publisher · read in our library
knowledge/fetched/cmp_typography_freetype-hint.html· pinh043573d8c7f3695ee9c139b19f7cf6c2325a7869e89a14850ec4d5a933198dc6· accessed 2026-08-18 · vendor-docGrounds: The FreeType column: "Anti-aliased rasterizer" (FreeType is Best: hinting, subpixel, LCD) and "TrueType hinting" (FreeType/autohint is Best) -- the documented rasterizer features our 4x supersample box-AA raster is honestly graded far behind. - [harfbuzz] HarfBuzz project. HarfBuzz Manual (version 14.3.1): the text shaping library that converts Unicode input into positioned glyphs for any writing system, driving OpenType GSUB/GPOS and AAT layout, with FreeType/CoreText/DirectWrite integration. publisher · read in our library
knowledge/fetched/cmp_typography_harfbuzz.html· pinhe522a30b49a6066944e84191b82e889dd4b2154f59f9ba73f0d4a2c815f1285f· accessed 2026-08-18 · vendor-docGrounds: The HarfBuzz column: "Complex-script shaping (GSUB/GPOS)" (HarfBuzz is THE shaping engine -- Arabic joining, Indic reorder, kerning) and the shaping half of "Multi-script (Latin+Han+Hangul+Katakana)"; our nx_font_shape is _ABSENT_ against exactly this manual. - [fonttools] fontTools project. fontTools documentation: the Python family of libraries and utilities for manipulating fonts -- ttLib sfnt reader/writer, ttx, subsetting, merging, and variable-font building from designspace files (MIT). publisher · read in our library
knowledge/fetched/cmp_typography_fonttools.html· pinh26d5317f50eb39055d82187287cdb3175d3d89a10cdfe7d16fb393e723427d1e· accessed 2026-08-18 · vendor-docGrounds: The fontTools column: "Real self-validating TTF emitter" (fontTools is the reference sfnt writer), "Parametric weight-axis generator" and "Single-file variable font (fvar/gvar)" (fontTools builds variable fonts as Best) -- the toolchain our zero-dependency emit_ttf is measured against. - [noto] Noto Fonts project (Google). Noto dashboard: a collection of high-quality fonts in sans, serif, mono and other styles covering more than 1,000 languages and over 150 writing systems, from Latin, Arabic, Chinese and Cyrillic to Linear B and Zanabazar Square. publisher · read in our library
knowledge/fetched/cmp_typography_noto.html· pinhd69df9a725a55719408be7592c72ca76152fabd0d11f3d98791b0ebdaddd7d14· accessed 2026-08-18 · vendor-docGrounds: The Noto column: "Full pan-Unicode coverage" (Noto is THE coverage reference) and the coverage half of "Multi-script (Latin+Han+Hangul+Katakana)"; the 150-plus-script number is the mountain the row honestly names against our ~40 glyphs. - [opentype-otff] Microsoft Typography. OpenType Specification 1.9.1, The OpenType Font File (otff): big-endian sfnt table directory, required tables (cmap head hhea hmtx maxp name OS/2 post), per-table checksums and the head checksumAdjustment computed so the whole-font checksum equals 0xB1B0AFBA; GSUB/GPOS layout tables and the fvar/gvar/avar variation tables. publisher · read in our library
knowledge/fetched/cmp_typography_otspec-otff.html· pinh28f41ba0bce538c72c4141f574e9cf7e868dd88819e7e86eb626b80d6ab5e959· accessed 2026-08-18 · published-standardGrounds: "Real self-validating TTF emitter" -- the row's "whole-file checksum == 0xB1B0AFBA", big-endian tables and per-table checksums are this section of the standard verbatim; also the definition behind "Single-file variable font (fvar/gvar)" and "Complex-script shaping (GSUB/GPOS)". - [truetype-ref] Apple Inc. TrueType Reference Manual: the TrueType font format, glyph outlines, the instruction set used for hinting, and the sfnt table catalogue (including Apple-specific tables). publisher · read in our library
knowledge/fetched/cmp_typography_ttref.html· pinh045e8fe3ed94276de32e463a11b75ba4cdebc91f1d0cbb2fc9c5605d4f3da8a1· accessed 2026-08-18 · published-standardGrounds: "TrueType hinting" -- the row's gap is the TrueType instruction set this manual defines (fpgm/prep/glyf instructions), which nx_font_hint does not emit; and the outline format nx_font_ttf_emit writes. - [woff2] W3C. WOFF File Format 2.0. W3C Recommendation, 08 August 2024 edition: Brotli-compressed, content-aware preprocessed font packaging for lower network bandwidth. publisher · read in our library
knowledge/fetched/cmp_typography_woff2.html· pinh65dfdde1efb57bf123526b9c15a4025ecc78158426a28fefdb396ecf4fc26dc8· accessed 2026-08-18 · published-standardGrounds: "WOFF2 compression" -- the standard web-font compression every incumbent supports and nx_font_woff2 does not implement (raw TTF data-URI only), the honest gap the row names. - [unicode17] The Unicode Consortium. Unicode 17.0.0, released 9 September 2025: 159,801 characters (4,803 new), and CJK Unified Ideographs Extension J with 4,298 ideographs pushing the CJK ideograph count past 100,000. publisher · read in our library
knowledge/fetched/cmp_typography_unicode17.html· pinh245e1a6f30f5c10a11836c315bef19a9c6c4695df5d96c62811ddf62af16031a· accessed 2026-08-18 · published-standardGrounds: "Full pan-Unicode coverage" -- the row's "Unicode 17 = 101k+ Han alone" is this release page's own statement (over 100,000 CJK ideographs after Extension J), the size of the coverage mountain the row names. - [metafont] Knuth, D. E. METAFONT (CTAN package page, version 2.71828182, 2021; Knuth License): a programmatic, parametric specification of a font producing bitmaps and TeX metrics -- the original parametric type-design system. publisher · read in our library
knowledge/fetched/cmp_typography_metafont.html· pinh1da2bcf8d9082793885eeabdf77be885b227ebe55cc96d97b15d07d432a34563· accessed 2026-08-18 · vendor-docGrounds: "Parametric weight-axis generator" -- the row's "fontTools + Metafont do parametric/variable design as Best": Metafont is the precedent for generating a family from one stroke definition, which is exactly what nx_font_gen does with weight = stroke radius (parity in kind, young).
generated by nx_swcompare_matrix (sovereign NishiLang organ) from knowledge/compare/typography.matrix · source checks show implementation presence; runtime and user-outcome evidence are reported separately · JavaScript supports page controls