shaping: fall back to an installed monospace face when the generic misses #370
No reviewers
Labels
No labels
priority/P0
priority/P1
priority/P2
release/v0.1.0
status/blocked
status/planned
type/bug
type/design
type/test-gap
type/tracker
No milestone
No project
No assignees
1 participant
Due date
No due date set.
Dependencies
No dependencies set
Reference
natsukium/felis!370
Loading…
Reference in a new issue
No description provided.
Delete branch "client/issue-362-default-font"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What
A default-config
felis-clientnow opens on Debian and Ubuntu. Before, it failed withFont(NoFont)there. When fontdb'smonospacegeneric names a family that is not installed, felis tries a fixed list (DejaVu Sans Mono, Liberation Mono, Noto Sans Mono, Ubuntu Mono, Menlo, Consolas). If none of those is installed, it takes the first installed fixed-pitch family by name. The bold, italic and bold-italic faces come from whichever family was picked.NoFontnow happens only when no fixed-pitch face is installed at all.The release smoke no longer needs its
font.familyworkaround. install.md no longer asks you to name a font.fontconfigis removed fromnix/package.nixbecause nothing links or dlopens it.Why
fontdb reads fontconfig's XML itself, but it keeps only the first preferred family of the last
monospacealias it parses. On Ubuntu 24.04 that alias is in69-unifont.confand prefersFreeMono, which the host does not have. Sofamily_name(Monospace) == "FreeMono"and the lookup finds nothing, whilefc-match monospacefinds DejaVu Sans Mono. I confirmed this with a standalone fontdb 0.24 probe run in the container. The rejected alternatives (fc-match, linking libfontconfig) are recorded in text-shaping.md.How verified
nix build .#felis-distfrom this branch. It passes the closure classifier without fontconfig.tools/release/linux-archive-smoke.shagainst that archive inubuntu:24.04, with thefont.familyline removed. Step c opened a real Xvfb window with the default config, logged the fallback fromFreeMonotoDejaVu Sans Mono, and passed the frontend smoke (painted frame, 143 colors).NoFont;FreeMono, felis picks an installed fixed-pitch regular face, and bold is a real distinct face.just checkpasses.Closes #362