client: default config fails with Font(NoFont) on Debian and Ubuntu #362
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#362
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Found while smoking the Linux release archive (#360, PR #361) in an
ubuntu:24.04container withfonts-dejavu-coreandfontconfig-configinstalled.With the default configuration,
felis-clientfails to open withFont(NoFont).fc-match monospaceon the same host resolves to DejaVu Sans Mono, so the host's fontconfig rules do resolve the generic; felis's own resolution (fontdbwith itsfontconfigfeature, which parses the fontconfig XML itself and applies its own matching) does not, against Debian's rule set. Naming a face ([font] family = "DejaVu Sans Mono") makes the same binary paint normally.Effect: a default-config felis is unusable on Debian and Ubuntu, and likely on other distributions whose fontconfig aliases route
monospacethrough rulesfontdb's parser does not apply. On NixOS the generic resolves, which is why nobody saw it.The archive smoke works around it by writing that config line before the GUI step (
tools/release/linux-archive-smoke.sh), and install.md names a monospace font as a host requirement. Both are stopgaps.Options, not yet weighed:
fc-matchwhenfontdbfinds nothing (adds a runtime dependency on fontconfig's CLI);DejaVu Sans Mono,Liberation Mono,Noto Sans Mono,Ubuntu Mono,Menlo,Consolas), the wayfont.fallbackalready works for symbol fonts;nix/package.nixstill lists fontconfig inbuildInputsfor no reason today).Acceptance: a default-config
felis-clientopens on a stock Ubuntu 24.04 withfonts-dejavu-coreinstalled, and the archive smoke's config workaround is removed.