keryx font¶
Manage the typefaces reels are drawn with — install them, see what resolves, and point a theme at one. Fonts are addressed by a key, never by a path (spec 0057).
keryx font list [--system]
keryx font show <key>
keryx font add <key> <file> [--user] [--licence <id>]
keryx font rm <key> [--user]
keryx font promote <key>
keryx font use <key> [--theme <keyword>] [--mono]
Add --output json for machine-readable output.
Why a key and not a path¶
A path is a property of one machine; a key is a property of the project. A theme
that names /Users/you/Library/Fonts/Brand.ttf renders correctly for exactly one
person. A theme that names brand renders correctly for anyone who has that font
in scope — and keryx can tell them when they do not.
The four scopes¶
A key resolves through four scopes, most specific first:
| Scope | Where it lives | Written by keryx |
|---|---|---|
| project | .keryx/fonts/ in the project |
font add |
| user | ~/.keryx/fonts/ |
font add --user, font promote |
| system | wherever the host installed it | never |
| embedded | inside the keryx binary | n/a |
keryx does not write to the host's font directories. Installing a font system-wide is the operating system's job and needs privileges keryx should not want.
The embedded scope is the floor¶
Four faces ship inside the binary — inter and jetbrains-mono (the defaults),
and dejavu-sans and dejavu-mono. Resolution cannot fail for want of a
font, so keryx draws text on a machine with nothing installed.
DejaVu is carried because every reel rendered before spec 0057 was drawn with it. Naming it pins the typeface a reel was designed in, rather than hoping the machine has the right one.
The embedded keys are reserved¶
A key naming an embedded face resolves from the binary, even when the host has a font of the same name. Your project and user scopes still override it.
This is deliberate. Before it, on a machine with DejaVu installed, dejavu-sans
resolved to the host's copy — which fontconfig matched at Regular weight,
where the embedded face is Bold. Pinning it to reproduce an old reel silently
changed the type.
What is offered is what can be drawn¶
font list only shows fonts keryx can actually render with. fontconfig enumerates
Type 1 and bitmap formats that keryx cannot parse; those are skipped rather than
advertised and then failing at use.
Supported formats: .ttf, .otf, .ttc.
Variable fonts are not supported. No font parser available to keryx reads variable-font axes, so a key names a static instance — a weight is a file, not a position on an axis.
Arguments do not appear in --help¶
keryx font show --help prints keryx font show [flags] and does not mention the
<key> argument. The commands take the arguments listed above; the usage line
does not currently state them.