From c18ca90a703f40e355856d1a7eb16ef878a63f57 Mon Sep 17 00:00:00 2001 From: Julian Noble Date: Mon, 13 Jul 2026 23:28:55 +1000 Subject: [PATCH] doc tooling: vendor punkdoc-mono web font (OFL subset of Cascadia Mono 2404.23) + -assets embed|link|none in punknative generator src/scriptapps/tools/fontprep/: pinned monospace web font for the punk-native html doc pipeline, closing the glyph-coverage gap the probe identified - unicode 16 octants (U+1CC00-1CEBF) and Symbols for Legacy Computing (U+1FB00-1FBFF) needed by ansicat/textblock rendering are absent from commonly-installed monospace fonts (even system Cascadia copies are commonly pre-2404 and lack them). - punkdoc-mono.woff2: glyph subset of Cascadia Mono v2404.23 VARIABLE ttf (wght axis 200-700 kept - true bold from one ~80KB file; 1561 cmap codepoints incl. full CP437 repertoire, box/blocks/geometric, braille, legacy computing + octants). Coverage verified 157/160 against the measured glyph inventory - identical to the full source font (misses are deliberate: em-space + fullwidth forms are converter-normalization/fallback territory). - renaming is REQUIRED by licence: Cascadia's SIL OFL 1.1 declares Reserved Font Name "Cascadia Code" and subsetting is modification. Name table is surgical: family records renamed, Microsoft copyright preserved verbatim (OFL requirement), trademark record removed (a renamed copy must not assert Microsoft's mark), OFL statement/url in licence records, provenance credit in the description record. - LICENSE-cascadia-OFL.txt (from the v2404.23 tag), punkdoc-unicodes.txt (whole-block ranges with headroom), make_punkdoc_mono.py (fonttools subset+ rename script), README.md (full provenance: source/output sha256s, exact command, regeneration steps). Python fonttools is one-time prep tooling only - the doc build never invokes it; generators just read the .woff2. Track licence in the G-063 inventory. punkargs_punknative.tcl: new -assets option consuming the vendored font: embed (default) = data-uri @font-face, fully self-contained page; link = copy punkdoc-mono.woff2 beside the output and reference relatively (shared+cached across a doc set); none = css stack only, with warn-and-degrade when the asset is missing. font-weight 200 700 descriptor, punkdoc-mono prepended to the fallback stack. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com --- .../tools/fontprep/LICENSE-cascadia-OFL.txt | 94 +++++++++++++++ src/scriptapps/tools/fontprep/README.md | 70 +++++++++++ .../tools/fontprep/make_punkdoc_mono.py | 109 ++++++++++++++++++ .../tools/fontprep/punkdoc-mono.woff2 | Bin 0 -> 79780 bytes .../tools/fontprep/punkdoc-unicodes.txt | 21 ++++ src/scriptapps/tools/punkargs_punknative.tcl | 57 ++++++++- 6 files changed, 345 insertions(+), 6 deletions(-) create mode 100644 src/scriptapps/tools/fontprep/LICENSE-cascadia-OFL.txt create mode 100644 src/scriptapps/tools/fontprep/README.md create mode 100644 src/scriptapps/tools/fontprep/make_punkdoc_mono.py create mode 100644 src/scriptapps/tools/fontprep/punkdoc-mono.woff2 create mode 100644 src/scriptapps/tools/fontprep/punkdoc-unicodes.txt diff --git a/src/scriptapps/tools/fontprep/LICENSE-cascadia-OFL.txt b/src/scriptapps/tools/fontprep/LICENSE-cascadia-OFL.txt new file mode 100644 index 00000000..b7f91076 --- /dev/null +++ b/src/scriptapps/tools/fontprep/LICENSE-cascadia-OFL.txt @@ -0,0 +1,94 @@ +Copyright (c) 2019 - Present, Microsoft Corporation, +with Reserved Font Name Cascadia Code. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/src/scriptapps/tools/fontprep/README.md b/src/scriptapps/tools/fontprep/README.md new file mode 100644 index 00000000..88948739 --- /dev/null +++ b/src/scriptapps/tools/fontprep/README.md @@ -0,0 +1,70 @@ +# fontprep - punkdoc-mono web font for the punk-native documentation pipeline + +`punkdoc-mono.woff2` is the pinned monospace web font consumed by the +punk-native html doc generation (`../punkargs_punknative.tcl` and its +successors). It exists because the ansi->html rendering of punk::args usage +tables, textblock output and cp437/ansi art (src/testansi) needs glyphs - +Unicode 16 octants (U+1CC00-1CEBF) and Symbols for Legacy Computing +(U+1FB00-1FBFF) in particular - that are absent from the monospace fonts +commonly installed on reader machines. Coverage was measured empirically: +see the glyph inventory probe notes below. + +## What it is + +A glyph subset of **Cascadia Mono v2404.23** (variable font, `wght` axis +200-700 retained so browsers render true bold from this single file), +renamed to **punkdoc-mono**. + +- Renaming is REQUIRED, not cosmetic: Cascadia's SIL OFL 1.1 licence declares + the Reserved Font Name "Cascadia Code", and a modified version (subsetting + is modification) must not use it. `punkdoc-mono` avoids the Cascadia name + entirely. The font's embedded name table carries the original Microsoft + copyright (nameID 0, preserved verbatim as the OFL requires), the OFL + licence statement/url (nameID 13/14), and a provenance description + (nameID 10). The original trademark record was removed (a renamed copy must + not assert Microsoft's trademark). +- Licence: SIL OFL 1.1 - full text in `LICENSE-cascadia-OFL.txt` (fetched from + the v2404.23 source tag). The OFL applies to the font only; it places no + conditions on punkshell (BSD) or on documents rendered with the font. + Track in the project licence inventory (G-063). +- No italic face is included: browsers synthesize oblique for italic spans + (advance widths are preserved, so terminal-grid alignment holds). + +## Provenance (reproducibility) + +- Source: https://github.com/microsoft/cascadia-code/releases/download/v2404.23/CascadiaCode-2404.23.zip + - release zip sha256: A911410626C0E09D03FA3FDDA827188FDA96607DF50FECC3C5FEE5906E33251B + - input file within zip: ttf/CascadiaMono.ttf (variable) + - input ttf sha256: 056F33BA2D9DA954750320EC6ECFB7D83CFB5F93AD593722170CD4498F5D4E95 +- Tooling: python fonttools 4.63.0 + brotli (one-time prep only - the doc + BUILD never invokes python; it just reads/copies/base64s the .woff2) +- Command: + `python make_punkdoc_mono.py CascadiaMono.ttf punkdoc-unicodes.txt ` +- Output punkdoc-mono.woff2 sha256: 3476B6C12B3306D25A787C01882B0F484C3E11C3E05A59969065B199056641A4 + (1561 cmap codepoints, 4319 glyphs, 79780 bytes) + +## Subset ranges + +`punkdoc-unicodes.txt` - whole blocks (with headroom) covering the demand +measured 2026-07-13 by the glyph inventory probe (scratch trial folder +argdoc2man-trial-2026-07-13: glyph_inventory.tcl over src/testansi decoded as +ansicat does + textblock::periodic + all textblock frametypes + +punk::args::usage = 160 unique non-ascii codepoints), plus the full CP437 +repertoire and braille (U+2800-28FF) for future plot rendering. +Verified: the subset covers 157/160 of the measured inventory - identical to +the full source font. The 3 misses are deliberate non-goals: em-space U+2003 +(converters should normalize exotic spaces to plain spaces - terminals treat +them as one cell) and fullwidth forms U+FF30/FF31 (inherently double-width; +CJK-font fallback territory). + +## Regenerating (when the glyph domain grows) + +1. Re-run the glyph inventory probe over the current content; if new + codepoints fall outside `punkdoc-unicodes.txt`, widen the ranges. +2. `pip install fonttools brotli` (any machine; a venv is fine) +3. Fetch the pinned Cascadia release (or a newer one - update shas here) +4. Run the command above; verify coverage (e.g. via + Windows.Media.GlyphTypeface against the inventory - see font_coverage.ps1 + in the trial scratch folder) and that name records contain no "Cascadia" + outside the nameID 10 provenance credit. +5. Commit the new .woff2 together with updated shas in this README. diff --git a/src/scriptapps/tools/fontprep/make_punkdoc_mono.py b/src/scriptapps/tools/fontprep/make_punkdoc_mono.py new file mode 100644 index 00000000..abd9d1a4 --- /dev/null +++ b/src/scriptapps/tools/fontprep/make_punkdoc_mono.py @@ -0,0 +1,109 @@ +#!/usr/bin/env python3 +"""make_punkdoc_mono.py - one-time font-prep for the punkshell doc pipeline. + +Subsets the Cascadia Mono VARIABLE font (weight axis kept, so browsers get +true bold from one file) to the punkdoc unicode ranges, renames the family to +'punkdoc-mono' (REQUIRED: Cascadia's OFL declares Reserved Font Name +'Cascadia Code' - a modified version must not use the reserved name), and +writes woff2 (for the web) + ttf (for cmap verification tooling). + +usage: python make_punkdoc_mono.py +""" +import sys +import os +from fontTools import version as fonttools_version +from fontTools.ttLib import TTFont +from fontTools.subset import Subsetter, Options + +SRC_FAMILY_NAMES = ["Cascadia Mono", "CascadiaMono", "Cascadia Code", "CascadiaCode"] +NEW_FAMILY = "punkdoc-mono" + +def parse_unicodes(path): + cps = set() + with open(path, encoding="utf-8") as f: + for line in f: + line = line.strip() + if not line or line.startswith("#"): + continue + if "-" in line: + lo, hi = line.split("-") + cps.update(range(int(lo, 16), int(hi, 16) + 1)) + else: + cps.add(int(line, 16)) + return cps + +# name records that carry the FAMILY NAME and must be renamed (OFL Reserved +# Font Name requirement). Copyright (0), designer/vendor credits (8,9,11,12) +# are preserved untouched - the OFL requires the copyright notice be retained. +FAMILY_NAME_IDS = (1, 3, 4, 6, 16, 17, 21, 22, 25) +OFL_ID13 = ("This Font Software is licensed under the SIL Open Font License, " + "Version 1.1.") +PROVENANCE_ID10 = ("punkdoc-mono is a glyph subset of Cascadia Mono v2404.23 " + "(c) Microsoft Corporation, renamed as required by the SIL " + "OFL 1.1 Reserved Font Name condition. Prepared for the " + "punkshell documentation pipeline.") + +def rename(font): + name = font["name"] + keep = [] + for rec in name.names: + # drop the trademark record entirely: the original text is about the + # Cascadia name (which this font no longer uses) and a renamed copy + # must not assert Microsoft's trademark over the new name + if rec.nameID == 7: + continue + if rec.nameID in FAMILY_NAME_IDS: + s = rec.toUnicode() + for old in SRC_FAMILY_NAMES: + s = s.replace(old, NEW_FAMILY) + s = s.replace(old.replace(" ", ""), NEW_FAMILY) + if rec.nameID == 6: + s = s.replace(" ", "") + rec.string = s + elif rec.nameID == 13: + rec.string = OFL_ID13 + keep.append(rec) + name.names = keep + # embedded provenance/description (mentioning the source font as credit is + # permitted - the RFN restriction is on naming the font, not attribution) + for platformID, platEncID, langID in ((3, 1, 0x409), (1, 0, 0)): + name.setName(PROVENANCE_ID10, 10, platformID, platEncID, langID) + +def main(): + src, unifile, outdir = sys.argv[1], sys.argv[2], sys.argv[3] + os.makedirs(outdir, exist_ok=True) + cps = parse_unicodes(unifile) + print(f"fonttools {fonttools_version}; requested codepoints: {len(cps)}") + + font = TTFont(src) + opts = Options() + opts.layout_features = ["*"] # keep default layout behaviour + opts.name_IDs = ["*"] # keep all name records (license notice ids too) + opts.name_legacy = True + opts.name_languages = ["*"] + opts.notdef_outline = True + opts.recalc_bounds = True + opts.recalc_average_width = True + opts.prune_unicode_ranges = True + subsetter = Subsetter(options=opts) + subsetter.populate(unicodes=cps) + subsetter.subset(font) + + covered = set() + for table in font["cmap"].tables: + covered.update(table.cmap.keys()) + print(f"glyphs in subset: {font['maxp'].numGlyphs}; cmap codepoints: {len(covered)}") + + rename(font) + + ttf_path = os.path.join(outdir, "punkdoc-mono.ttf") + font.save(ttf_path) + print(f"wrote {ttf_path} ({os.path.getsize(ttf_path)} bytes)") + + font.flavor = "woff2" + woff2_path = os.path.join(outdir, "punkdoc-mono.woff2") + font.save(woff2_path) + print(f"wrote {woff2_path} ({os.path.getsize(woff2_path)} bytes)") + +if __name__ == "__main__": + main() diff --git a/src/scriptapps/tools/fontprep/punkdoc-mono.woff2 b/src/scriptapps/tools/fontprep/punkdoc-mono.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..27087f104849fcb099e7269b453ddbaa874cbd39 GIT binary patch literal 79780 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 *N4y~32#wRLpiq+lYD^Jb@IN4|f4 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 literal 0 HcmV?d00001 diff --git a/src/scriptapps/tools/fontprep/punkdoc-unicodes.txt b/src/scriptapps/tools/fontprep/punkdoc-unicodes.txt new file mode 100644 index 00000000..98927a38 --- /dev/null +++ b/src/scriptapps/tools/fontprep/punkdoc-unicodes.txt @@ -0,0 +1,21 @@ +# punkdoc-mono subset ranges - whole blocks covering (with headroom) the +# glyph demand measured by glyph_inventory.tcl over src/testansi + +# textblock::periodic/frames + punk::args::usage (2026-07-13, 160 codepoints) +# plus the full CP437 repertoire and braille for future plot rendering. +0020-007E +00A0-00FF +0180-024F +0370-03FF +2000-206F +2070-209F +20A0-20CF +2190-21FF +2200-22FF +2300-23FF +2400-243F +2500-25FF +2600-26FF +2700-27BF +2800-28FF +1CC00-1CEBF +1FB00-1FBFF diff --git a/src/scriptapps/tools/punkargs_punknative.tcl b/src/scriptapps/tools/punkargs_punknative.tcl index f027b8e9..c4036a42 100644 --- a/src/scriptapps/tools/punkargs_punknative.tcl +++ b/src/scriptapps/tools/punkargs_punknative.tcl @@ -4,10 +4,18 @@ # synopsis conventions ([...] optionals, placeholders) - bypassing # doctools entirely (doctools stays Tcl-standard; no man-page output here). # -# usage: tclsh punkargs_punknative.tcl ?-boxmap none|light? +# usage: tclsh punkargs_punknative.tcl ?-boxmap none|light? ?-assets embed|link|none? # -boxmap none (default): faithful heavy box-drawing glyphs # -boxmap light: map heavy/mixed box chars to the light set (portability # fallback for viewers with only minimal mono fonts; _lightbox suffix) +# -assets embed (default): data-uri the pinned punkdoc-mono web font +# (fontprep/punkdoc-mono.woff2) into the page - fully self-contained +# single file; every glyph (incl. octants/legacy computing) renders +# identically on any machine (~106KB page overhead) +# -assets link: reference punkdoc-mono.woff2 relatively and copy it to +# - one cached font shared by a whole generated doc set +# -assets none: no font shipped; rely on the viewer's installed fonts +# via the css stack (octants/legacy-computing glyphs may be missing) # writes: /_punknative.html terminal-faithful rendering: # punk::args::usage ANSI output converted to styled HTML spans # (dark terminal theme, box-drawing tables, colours, italics) @@ -54,6 +62,7 @@ lassign $argv pkgname outdir #Verified 2026-07-13: heavy renders aligned in chrome + firefox with the #pre-level font stack. set boxmap none +set assets embed foreach {k v} [lrange $argv 2 end] { switch -- $k { -boxmap { @@ -63,8 +72,15 @@ foreach {k v} [lrange $argv 2 end] { } set boxmap $v } + -assets { + if {$v ni {embed link none}} { + puts stderr "-assets must be embed, link or none (got '$v')" + exit 2 + } + set assets $v + } default { - puts stderr "unknown option '$k' (known: -boxmap)" + puts stderr "unknown option '$k' (known: -boxmap -assets)" exit 2 } } @@ -292,15 +308,44 @@ puts "punk-native docgen: [llength $cmd_ids] command definitions for $pkgname $p # --------------------------------------------------------------------------- # html: terminal-faithful - ansi2html of punk::args::usage per command # --------------------------------------------------------------------------- +#pinned web font (see fontprep/README.md): guarantees every glyph in the punk +#domain - incl. unicode 16 octants and legacy computing blocks that no +#commonly-installed font provides. Variable (wght 200-700) so bold spans use +#real bold. OFL-subset of Cascadia Mono renamed punkdoc-mono (RFN condition). +set fontfile [file join [file dirname [file dirname [file normalize [info script]/__]]] fontprep punkdoc-mono.woff2] +set fontface "" +if {$assets ne "none"} { + if {![file exists $fontfile]} { + puts stderr "WARNING: -assets $assets requested but $fontfile not found - falling back to -assets none" + set assets none + } else { + if {$assets eq "embed"} { + set fd [open $fontfile rb] + set fontb64 [binary encode base64 [read $fd]] + close $fd + set fontsrc "data:font/woff2;base64,$fontb64" + } else { + #link mode: ship the font next to the page(s) - shared+cached + file copy -force $fontfile [file join $outdir punkdoc-mono.woff2] + set fontsrc "punkdoc-mono.woff2" + } + set fontface "@font-face {font-family:\"punkdoc-mono\"; src:url($fontsrc) format(\"woff2\"); font-weight:200 700; font-display:block;}\n" + } +} + set html "" append html "\n\n" append html "$pkgname $pkgversion - punk::args reference\n" append html "