Skip to content

Switch interface face to IBM Plex Sans and clean up font wiring - #5641

Merged
norman-abramovitz merged 2 commits into
cloudfoundry:developfrom
nabramovitz:norm/font/ibm-plex
Jul 16, 2026
Merged

Switch interface face to IBM Plex Sans and clean up font wiring#5641
norman-abramovitz merged 2 commits into
cloudfoundry:developfrom
nabramovitz:norm/font/ibm-plex

Conversation

@nabramovitz

Copy link
Copy Markdown
Contributor

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-sans token led with Inter, which was never
vendored, 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, 99 font-semibold) — so 228 of 256 weight-utility
uses 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/I are all distinct.

Mono token and woff2-only cleanup

The --font-mono token led with JetBrains Mono, never vendored, so all 29
font-mono uses fell through to the system monospace, while four component
styles hardcoded Source Code Pro off the token. This adds IBM Plex Mono — the
matched sibling of the interface face — and points --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.

Lato, Roboto, the stratos-icons font and Material Icons each carried
eot/svg/ttf/woff fallbacks from a 2019 "best support" bundle serving
IE6–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-mono content (GUIDs, commit hashes) renders IBM Plex
Mono; both icon fonts still render from their woff2-only faces.

Closes #5639

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 norman-abramovitz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM Mostly repo cleanup

@norman-abramovitz
norman-abramovitz merged commit e6d42e9 into cloudfoundry:develop Jul 16, 2026
21 checks passed
@nabramovitz
nabramovitz deleted the norm/font/ibm-plex branch July 16, 2026 18:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Cleanup font usage issues

2 participants