rootfont: a macOS font manager that scores monospaced fonts for code
The native font manager for designers and programmers on macOS.
At a glance
- What is it?
- rootfont is a native SwiftPM app for browsing and activating fonts on macOS 14+, with a Programming workspace that grades monospaced fonts on ligatures, Powerline glyphs and language coverage. It is alpha software, and the build path assumes a full Xcode install.
- Who is it for?
- Adopt rootfont if you are on macOS 14+ with a full Xcode 15 install and you want a local, scriptable way to sort monospaced fonts by programming suitability before you commit one to your editor. Skip it if you need a stable release, work on Linux, or only have Command Line Tools, since the README states that building and testing outside Xcode is not supported.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 44 days ago.
- What is it written in?
- Mainly Swift, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 24, 2026, and from our analysis. They are not legal advice.
Editorial analysis
The problem rootfont targets: picking a coding font without guessing
Choosing a monospaced font for an editor is usually a visual decision made from a screenshot. rootfont tries to turn part of that into a measurable one. The v0.3.0-alpha release adds a Programming workspace that scopes the library to monospaced fonts and sorts them by programming fit by default, with sidebar filters named Recommended for code, Avoid for code, and Managed by rootfont. The audience is stated in the repository description: designers and programmers on macOS. That is narrower than a general font browser. The Programming workspace is the part that does not exist in most macOS font tools, and it is the reason to look at this project at all.
How the suitability score works, and what it does not measure
The scoring pipeline grades fonts S, A, B, C or NR across ten weighted factors: monospace baseline, glyph disambiguation, ligatures, stylistic flexibility, box drawing, Powerline, Nerd Font, variable font, language coverage, and weight variety. Each font gets a breakdown with per-factor progress bars, grade badges and Why popovers, and low-grade fonts show improvement hints. The weights are configurable in Settings through four presets (Default, Terminal Heavy, IDE Heavy, Minimalist) plus ten independent sliders. Scores are cached at ~/Library/Application Support/rootfont/scores.json and the cache is invalidated when font files change. The honest reading of that list is that it measures the presence and variety of glyph features, not whether you personally like the letterforms. Nerd Font and Powerline factors reward icon-patched builds, so a plain but well-drawn mono font can grade lower than a patched one you would never use in prose.
Comparing two fonts and previewing real code
The preview panel has a Font compare mode with side-by-side, overlay (opacity plus visibility), glyph zoom and outline-diff views. Between a baseline and a candidate font it reports a score delta, the top factor deltas and a language-coverage diff. A Sample / Code toggle switches the preview surface to mini syntax highlighting for 12 languages: Swift, TypeScript, JavaScript, Python, Rust, Go, Java, Kotlin, SQL, JSON, Shell and CSS. Snippets come from a SnippetCatalog with Semantic and Native strategies per language. This is the strongest part of the design. A diff between two mono fonts on the same code line tells you more about disambiguation than any badge. The weakness is that the code preview is a fixed catalog of languages and snippets; if your stack is not in that list, you are back to the sample-text view.
Installing rootfont and running it the first time
rootfont is a macOS-only SwiftPM project. The README states that building, running and testing on Linux, or with Command Line Tools alone, is not supported. Requirements are macOS 14+, Xcode 15+ with the macOS SDK, and Swift 6.0+ (Package.swift uses swift-tools-version: 6.0), with Swift 6.2+ recommended. First confirm you are using the Xcode toolchain rather than standalone Command Line Tools.
xcode-select -p
# Expected: /Applications/Xcode.app/Contents/DeveloperIf that prints /Library/Developer/CommandLineTools instead, the README gives this fix.
sudo xcode-select -s /Applications/Xcode.app/Contents/DeveloperThen verify the Swift version and that XCTest is importable, because swift test depends on XCTest from Xcode.
swift --version
xcrun swift -e 'import XCTest; print("XCTest OK")'Run the app from the checkout with swift run RootFontApp. Once it is open, switch the sidebar to Programming, apply the Recommended for code filter, and open a font's Why popover to see which of the ten factors dragged the grade down. To produce a distributable bundle instead, the README documents bash scripts/build-app.sh, which writes .build/app/rootfont.app with version, build number and git short SHA embedded in Info.plist.
Activation, install scope and editor config export
rootfont separates three font states: session activation, user-scope install to ~/Library/Fonts/rootfont/, and uninstall, with a reconcile pass at startup. That directory choice matters. Installing into ~/Library/Fonts/rootfont/ keeps rootfont-managed fonts out of your general user font folder, so removing rootfont does not leave you guessing which files it added. The editor config export is one click and covers VS Code, Cursor, Alacritty, Kitty, Warp and Zed. Preview header actions copy the PostScript name, open the font in Font Book, or open the managed-fonts folder. The gap is that the README does not document rollback for the managed-fonts folder itself, so if you uninstall the app you should check that directory yourself.
Alpha status, build friction and the wrong-tool cases
The repository is not archived and the last push was on 2026-08-16. The README states plainly that rootfont is in active alpha development, with deferred release work tracked in TODO.md, and the most recent release is v0.3.0-alpha. Treat that as the main constraint. The second constraint is the toolchain. A SendingRisksDataRace build failure in FontBrowserViewModel was fixed on master and tracked as issue #56, and the README tells you to open a new issue if you still hit it on the latest commit. That is a real signal about how narrow the tested configuration is. If you only have Command Line Tools, if you are on Linux or Windows, or if you need a signed, stable release for a team, rootfont is the wrong tool today. It is also the wrong tool if your goal is web font loading or CSS sizing; the name overlaps with the CSS :root font-size concept, and nothing here touches that.
How rootfont differs from Font Book and fontconfig-style tooling
Font Book is the macOS baseline: it installs, removes and previews fonts, and it is already on the machine. It has no programming-suitability model, no per-factor breakdown, and no editor config export. fontconfig, the usual Linux-side answer, resolves font matching for applications through configuration files rather than presenting a browsable, scored library, and it is not a macOS-native GUI app. rootfont's difference is the opinionated layer on top of the catalog: ten weighted factors, four presets, a compare view with score deltas, and one-click export to six editors. If you do not want that opinion, Font Book already does the install and preview job with no build step.
Licence, upgrade cost and what to check before adopting
rootfont is Apache-2.0, and the repository carries LICENSE, NOTICE and LICENSE_IMPLEMENTATION_SUMMARY.md alongside a license-check GitHub Actions workflow. Apache-2.0 permits commercial use and modification with the usual notice and patent terms, but this is not legal advice; read LICENSE and NOTICE yourself if you plan to redistribute a build. Upgrade cost is the part to weigh. There is no documented binary release channel in the repository, so every upgrade means pulling the source and rebuilding, and the toolchain requirements (Xcode 15+, Swift 6.0+, 6.2+ recommended) move with the project. CI runs on macos-15 with swift build, swift test, check-l10n.py and check-version.py, and the README cites roughly 80 tests across 16 suites covering scoring, activation and compare. The localization checks exist because the UI supports en, zh-Hans, zh-Hant, ja, ko, fr, de and es, so adding strings means touching those catalogs.
Editorial conclusion
Adopt rootfont if you are on macOS 14+ with a full Xcode 15 install and you want a local, scriptable way to sort monospaced fonts by programming suitability before you commit one to your editor. Skip it if you need a stable release, work on Linux, or only have Command Line Tools, since the README states that building and testing outside Xcode is not supported. Before relying on it, run swift test on your machine and check whether your preferred code font lands in the S/A/B/C/NR grades under the preset you actually use.
Frequently asked questions
Does rootfont run on Linux or Windows?
No. The README describes rootfont as a macOS-only SwiftPM project and states that building, running and testing on Linux, or with Command Line Tools alone, is not supported. The stated platform is macOS 14+.
What is the difference between the Library and Programming modules in rootfont?
The sidebar switches between Library and Programming. Programming mode scopes the list to monospaced fonts and sorts by programming fit by default, and it adds filters for Recommended for code, Avoid for code, and Managed by rootfont.
Where does rootfont store its score cache?
Scores are persisted at ~/Library/Application Support/rootfont/scores.json, and the README states the cache is invalidated on font file changes.
Which editors can rootfont export a font config for?
The one-click editor config copy covers VS Code, Cursor, Alacritty, Kitty, Warp and Zed. The export is described in the v0.3.0-alpha release notes.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/rootfont-rootfont)