Switch interface face to IBM Plex Sans and clean up font wiring - #5641
Merged
norman-abramovitz merged 2 commits intoJul 16, 2026
Merged
Conversation
The body font was declared 'Inter', 'Lato' but Inter was never vendored, so every machine without Inter installed rendered Lato — and Lato ships no 500 or 600. Those are the two weights the templates ask for most (142 font-medium, 99 font-semibold), and both fell back to a face that says nothing: medium rendered as normal, semibold as bold. 228 of 256 weight-utility uses did not render what they named. IBM Plex Sans ships all seven faces from Thin to Bold, so Tailwind's weight names resolve 1:1 to a real face with no remapping. The five rungs the code uses -- light, normal, medium, semibold, bold -- are now five distinct faces. The family has no 800 or 900, so font-extrabold and font-black resolve to Bold; neither is used. woff2 only: the eot/svg/ttf/woff sets on Lato and Roboto date from a 2019 webfont-helper bundle and serve IE6-9 and iOS 4, which this app cannot run in. Lato and Roboto are left in place as theming faces, not removed, so the interface font stays a future operator choice. Source Code Pro and the icon fonts are untouched. Refs cloudfoundry#5639
The mono token led with 'JetBrains Mono', which was never vendored, so every font-mono use fell through to the system monospace while four component styles hardcoded 'Source Code Pro' off the token. Vendor IBM Plex Mono — the matched sibling of the shipped IBM Plex Sans — and point --font-mono at it, so the mono pairs with the interface face by design and the hardcoded uses now reference the token. Source Code Pro stays vendored as a parked mono candidate, the way Lato and Roboto are kept. Drop the eot/svg/ttf/woff fallbacks from Lato, Roboto, the stratos-icons font and Material Icons. They came from a 2019 "best support" bundle and serve IE6-9 and iOS 4; every browser this app supports has taken woff2 since 2016. woff2 is now the only format anywhere in the font wiring. Closes cloudfoundry#5639
norman-abramovitz
approved these changes
Jul 16, 2026
norman-abramovitz
left a comment
Contributor
There was a problem hiding this comment.
LGTM Mostly repo cleanup
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.
Reworks the interface font wiring, which had accumulated dead and fictional
references across past migrations. Two commits.
Interface face → IBM Plex Sans
The body rule and
--font-sanstoken led withInter, which was nevervendored, so the app rendered differently depending on whether a machine had
Inter installed. The fallback, Lato, ships no 500 or 600 — the two most-used
weights (142
font-medium, 99font-semibold) — so 228 of 256 weight-utilityuses silently rendered the wrong weight, and every class was legal and correctly
spelled so it was invisible by reading. IBM Plex Sans ships all seven faces
(100–700), so Tailwind's weight names resolve one-to-one to a real face with no
remapping, and
1/l/Iare all distinct.Mono token and woff2-only cleanup
The
--font-monotoken led withJetBrains Mono, never vendored, so all 29font-monouses fell through to the system monospace, while four componentstyles hardcoded
Source Code Prooff the token. This adds IBM Plex Mono — thematched sibling of the interface face — and points
--font-monoat it, so themono pairs with the interface face by design and the hardcoded uses now
reference the token. Source Code Pro stays vendored as a parked mono candidate,
the way Lato and Roboto are kept.
Lato, Roboto, the stratos-icons font and Material Icons each carried
eot/svg/ttf/wofffallbacks from a 2019 "best support" bundle servingIE6–9 and iOS 4. Every browser this app supports has taken woff2 since 2016, so
those formats are dropped and woff2 is now the only format anywhere in the font
wiring (42 dead files removed).
Verification
Lint clean, production build bundles all faces, full unit suite passes. Verified
live in the running app: body renders Plex Sans with medium/semibold/bold as
distinct faces;
font-monocontent (GUIDs, commit hashes) renders IBM PlexMono; both icon fonts still render from their woff2-only faces.
Closes #5639