Conversation
The Anthropic brand faces captured in ~/colors (Sans, Serif, Mono, Anthropicons;
the anthropic.com "Web" 26.043.1 variable cuts, 14 files pinned by sha256) become
the fleet's own font suite, installed exactly the way the Apple faces are: one
0444 tarball per package on nas:/mnt/fast/fonts/anthropic/, requireFile-pinned
in pkgs/anthropic-{mono-nerd,ui,webfonts}.nix, seeded nightly by
update-center-seed. No font byte enters this repo (.gitignore now rejects them).
pkgs/fontbuilder is the press, a self-contained package that ships the recipe
and no bytes (`nix run .#fontbuilder -- <capture> <out>`, ~4 min): instance the
variable Mono to 12 statics, normalize names and style bits, completeness-merge
Greek/Cyrillic/math/braille from JetBrains Mono, DejaVu Sans Mono and Maple Mono
NF (every grafted glyph carries its donor as a name suffix), ligaturize from
Fira Code 3.001, re-seat each ligature against Anthropic's own strokes, Nerd-
patch last (--complete --mono --makegroups 4, 3.5.1), restore the ten PUA
glyphs the patcher overwrites, and canonicalize head+FFTM so two runs are
byte-identical (--verify-repro proved it on all 12+5+7 artifacts and the three
tarballs). The Sans/Serif stay variable (wght+opsz) with the doubled-"Web"
names, the missing italic bit on the variable row, the Serif wght-300 default
and the STAT " Italic" doubling repaired; the webfonts land under
share/webfonts via home.packages and a fontconfig glob reject, because
fontconfig here indexes woff2 and would contend with the TTFs.
Measured on the pressed faces: 13,440-13,444 codepoints per terminal face,
every advance 1200, braille 256/256, calt 136 lookups, nameID16
"AnthropicMono Nerd Font Mono" (28 of 31 chars), fc-scan spacing 100 on all
12 (the Light Italic source instanced to 90 before the phantom-delta repair).
Mono tarball 2,571,132 B. Acceptance suite in pkgs/fontbuilder/tests (kitty's
own resolver, shaping from the exact face, coverage, alignment, archive shape,
no live fontconfig side effects) passes on this press.
update-center-seed.nix now carries full archive paths (two vendor dirs), an
eval-time font-vs-font GC-root-name guard and a shell-time font-vs-node guard
(a tarball named tally.tar.zst used to clobber seeds/tally silently).
Docs: docs/fonts/{README,anthropic-suite,nas-and-bootstrap}.md and
pkgs/fontbuilder/README.md. Personal use only, per Tom's ruling; the faces
have no published licence and are never redistributed.
This commit installs the packages only; the consumers (kitty, fontconfig
generics, GTK) move in the next commit, after the review window.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… suite Approved by Tom in the review window (kitty spawned on the live niri session with the built packages through a private fontconfig; the process mapped the four AnthropicMonoNerdFontMono faces and nothing from Liga SFMono). kitty.conf names the family in the family="…" style="…" form, the only one whose result depends neither on the monospace alias nor on nameID4 surviving a patcher release (kitty looks bare strings up verbatim and falls through to fc_match silently; measured table in the file). Bold stays SemiBold. fonts.fontconfig.defaultFonts puts Anthropic Sans / Serif / AnthropicMono Nerd Font Mono first with the outgoing families second, so a failed build degrades to yesterday's rendering rather than DejaVu. GTK font-name, document-font-name and monospace-font-name move together at the same sizes. sf-pro and sfmono-liga stay installed; the revert is this kitty block plus defaultFonts, together, and a switch. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
fontTools reads the glyph header xMin/xMax as -12/1212 on every terminal face while a BoundsPen over the drawn contours gives -11/1213; both are the same Nerd box-art outline, and the assertion (x0 <= 0, x1 >= 1200) holds either way. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…one retry resolve/shape/geometry/a12 take the driver's uniform '<out> --src <dir>' form and --allow-partial for smoke builds (resolve.py declines to judge the four roles on a subset; shape.py skips absent faces). shape.py spawned ~45 kitty processes through one shared JSON path and once believed an empty result: each probe now writes its own file and an empty spawn is retried once. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
The Anthropic brand faces captured in
~/colorsbecome the fleet's font suite, installed exactly like the Apple faces: three 0444 tarballs onnas:/mnt/fast/fonts/anthropic/(README + SHA256SUMS, already uploaded and verified there),requireFile-pinned inpkgs/anthropic-{mono-nerd,ui,webfonts}.nix, seeded nightly. No font byte enters this repo.pkgs/fontbuilderis the press (recipe only, no bytes):nix run .#fontbuilder -- ~/colors/waves/capture <out>reproduces the exact tarballs byte for byte (--verify-reproproved it on every artifact). Stage table, never-pass flags and the reproducibility argument are inpkgs/fontbuilder/README.md; the material, its defects, the naming arithmetic, the donor table and the ligature alignment are indocs/fonts/anthropic-suite.md; the runbook isdocs/fonts/nas-and-bootstrap.md.Two commits: the first installs the packages, the second switches kitty, the fontconfig generics and the GTK keys (approved in a review window spawned from the built packages).
Measured on the pressed faces
AnthropicMono Nerd Font Mono, 13,440–13,444 codepoints each, every advance 1200, braille 256/256, calt 136 lookupsAnthropic Sans/Anthropic Serifvariable (wght 300–800, opsz 16–48),Anthropiconspinnedanthropic-fonts.cssunder/etc/profiles/per-user/tom/share/webfonts/and~/.local/share/webfontspkgs/fontbuilder/tests/{accept,resolve,shape,a12}.pyall 0 failures on this pressBootstrap notes
scp root@nas:/mnt/fast/fonts/anthropic/<file> . && nix-store --add-fixed sha256 <file>.nix flake checkis not a gate here (it fails on the untouched tree); the three hosttoplevel.drvPathevals pass.defaultFonts.🤖 Generated with Claude Code