mirror of
https://github.com/storytold/figcraft.git
synced 2026-11-02 16:29:34 -06:00
* text: use craft-font-catalog on Unix On Linux and BSD distributions that do not follow traditional FHS layout (such as NixOS and Guix), or systems using custom font configurations, fonts are not located under `/usr/share/fonts` or `/usr/local/share/fonts`. Instead, font directories are declared in `/etc/fonts/fonts.conf` and its included configuration files (such as `/etc/fonts/conf.d`), or under `$XDG_DATA_DIRS/fonts`. `figcraft-text` already depends on `craft-font-catalog`, which provides `craft_font_catalog::font_dirs`: - Preserves all existing directory sources (`/usr/share/fonts`, `/usr/local/share/fonts`, and user font directories). - Adds Flatpak host directories (`/run/host/fonts`), `$XDG_DATA_DIRS`, and fontconfig directory trees (`/etc/fonts/fonts.conf`). - Deduplicates the combined list via `craft_font_catalog::dedup_dirs` using canonical paths, ensuring equivalent directories and symlinks are not redundantly scanned. Use `craft_font_catalog::font_dirs` in `system_font_dirs()` on Unix, and retain `unix_user_font_dirs` under `#[cfg(test)]` for its unit tests. * text: walk each system font folder once Fontconfig usually lists folders the scan already has (/usr/share/fonts); the list is deduplicated so their faces aren't indexed twice (CodeRabbit on #1765). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * text: scan the catalog's full Unix font folder list fontconfig_dirs alone dropped /usr/share/fonts, ~/.fonts and the XDG folders when no fontconfig configuration exists; font_dirs keeps them, adds what fontconfig names, and deduplicates, as the PR description intended. The local user-folder helper it replaces is removed with its tests (the catalog applies the same XDG rules). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Brandon Thomas <echelon@gmail.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>