Font customization#150
Merged
Merged
Conversation
matstech
reviewed
May 10, 2026
d52447e to
ef072b4
Compare
matstech
requested changes
May 17, 2026
This also implements a caching mechanism to avoid reloading all fonts every time. The cache can be invalidated with the `refresh` boolean. The implementation also uses different files based on the build target to list the correct folders based on the underlying os. A new dependency to read font metadata was added.
Prefer user system settings instead, and scale the whole interface from the frontend's zoom level. Maybe in a future commit we could add the persistence of the zoom level to the saved app config
- add dedicated component for appearance pane - add reusable anchored dropdowns - fix codemirror font settings - avoid unnecessary writes in stores
…fresh system fonts button
this implementation completely replaces the golang.org/x/image package because it has an issue with variable fonts is using the `ParseCollectionReaderAt` and `ParseReaderAt` functions.
d8a4a15 to
abe2121
Compare
…y footprint" This reverts commit abe2121.
2ea20e7 to
89e9a83
Compare
This fork is used as a temporary solution until it's merged upstream. We should monitor [the issue we opened](golang/go#79489) and eventually the related PR. Co-authored-by: matstech <matteo.stabile2@gmail.com>
89e9a83 to
d8eca4f
Compare
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.
Summary 💡
This PR adds system fonts retrieval to be used by the frontend, to enable users to change their preferred font for the general interface and for monospaced inputs.
Closes: #115
Description 📝
This implementation reads fonts from system folders (which are selected based on the build target), deduplicates all font families for the same font, and classifies them (monospace or not).
This also implements a caching mechanism to avoid reloading all fonts every time. The cache can be invalidated with the
refreshboolean in go function's invocations.It adds three new configuration parameters. The font family ones are backwards compatible: if missing, treat as default (font families as defined by the frontend by default).
A new go dependency (golang.org/x/image v0.39.0) to read font metadata was added.
I took the opportunity to rework the Appearance pane of the Settings modal: the color schemes where too big and wording around theme and colors was misleading. I refactored it to use dropdowns inside groups of cohesive settings:
Breaking Changes 💔
The zoom configuration setting is NOT backwards-compatible: it substitutes the previous LocalStorage-based implementation.
Tests performed 🧪