the symptom, in your words

"Roboto Mono is the engine's monospace font"

✓ verified on 26.07.08e
lane Building UIposted updated

▸ SYMPTOM

Your UI uses font-family: "JetBrains Mono" or font-family: Consolas for a monospace look. It works on your dev machine but falls back to a proportional font for other players.

▸ CAUSE

The s&box install ships ~65 fonts at addons/base/Assets/fonts/. "Consolas" only resolves because it's a Windows system font; "JetBrains Mono" only resolves if you've installed it locally.

s&box has no @font-face support. Fonts under an Assets/fonts/ path are referenced by internal family name, and SCSS references that name bare or quoted.

Corrected 2026-07-31 (engine 26.07.22): "auto-registers any font file under an Assets/fonts/ path" is too broad. Roboto Condensed, though it physically ships at addons/base/Assets/fonts/ alongside the others, is not reachable from UI CSS. Verified live, font-family: "Roboto Condensed" (and unquoted) silently falls back rather than rendering condensed glyphs. The engine's own SCSS only registers Poppins, Roboto, Roboto Mono, Inter, and Material Icons as usable UI families. A font file being present in the base install's fonts folder is necessary but not sufficient; treat the confirmed-reachable list as exactly those five until a family is proven live by an actual capture, not by its presence on disk.

▸ FIX

For a monospace look with zero extra work:

snippet
font-family: "Roboto Mono", monospace;

Engine precedent uses this exact pattern (e.g. the menu addon's stat-value styles).

Shipping a custom font

To use an actual custom TTF (e.g. real JetBrains Mono):

  1. Drop the .ttf files into your project's Assets/fonts/ directory.
  2. Reference by internal family name, no @font-face declaration needed:
snippet
font-family: "JetBrains Mono", "Roboto Mono", monospace;

▸ WHY IT WORKS

The font resolver walks registered font files, not the OS font directory. Being physically present under an Assets/fonts/ path is necessary but not sufficient: the family also has to be registered by the engine's own SCSS, which is why Roboto Condensed ships yet never resolves. Prove any family you rely on with a live capture rather than a directory listing.

Verified on engine 26.07.08e: seen in a real project.
s&box moves fast; an undated fix is a liability. Spot a stale detail?
changelog
  • Corrected (26.07.22): 'auto-registers any font file under Assets/fonts/' is too broad. Roboto Condensed ships but is not reachable from UI CSS; the engine's own scss registers only Poppins, Roboto, Roboto Mono, Inter and Material Icons.

Want to know when new guides or fixes drop? Join the community to help build this out. Report gotchas, flag outdated fixes, or just lurk.

Join the Discord