Skip to content

Rename Solarized → Solarium Daylight/Moonlight (Besley slab serif)#16

Merged
tqbf merged 1 commit into
mainfrom
tqbf/solarium-besley
May 2, 2026
Merged

Rename Solarized → Solarium Daylight/Moonlight (Besley slab serif)#16
tqbf merged 1 commit into
mainfrom
tqbf/solarium-besley

Conversation

@tqbf

@tqbf tqbf commented May 2, 2026

Copy link
Copy Markdown
Owner

Summary

The Solarized palette has always wanted a serif body face — its muted base1 / base01 olive-grey body and warm orange / yellow accents read as "designed document" but with SF Pro they sat in generic-modern territory. Replace with Besley (Owen Earl, Indestructible Type, OFL — slab-serif revival explicitly designed for sustained screen reading) and rename:

  • Solarized LightSolarium Daylight
  • Solarized DarkSolarium Moonlight

Schoonover's Solarized values are unchanged (base3 / base03 / base01 / base1 / blue / orange / yellow). The font swap is what we wanted; the palette already worked.

What ships

  • Six Besley weights vendored under mdv/Fonts/ (~500 KB total): Regular, Italic, SemiBold, SemiBoldItalic, Bold, BoldItalic. Registered alongside Alegreya and OpenDyslexic via the existing FontRegistration path. SemiBold variants resolve through Besley's typographic-family table (name ID 16) so SwiftUI's Font.custom("Besley").weight(.semibold) picks them cleanly.
  • MDVTheme.solariumDaylight + solariumMoonlight replace solarizedLight + solarizedDark in MDVTheme.all.
  • TYPOGRAPHY.md catalog rows + a Solarium deep-dive section documenting each typography knob.

Typography

Tuned for slab-serif body, balancing readability and density (per spec — neither Sevilla-style long-form-reading nor default-density operational):

Knob Value Rationale
bodyFontFamily .custom("Besley") Slab serif, screen-tuned, OFL. Tall x-height.
baseFontSize 16 (default) Besley's x-height is generous; no bump needed. Sevilla bumps to 17 for Alegreya's smaller x-height.
paragraphLineSpacingEm 0.20 (≈1.36×) Tight. Slab serifs have horizontal serifs that anchor each line; they take leading well below the cross-theme 0.30 default without crowding. Tighter than even Charcoal's operational 0.25.
articleMaxWidth 720pt (≈80ch) Between Sevilla's 620 and the 860 default. Slab serifs scan slightly wider than humanist serifs.
Heading scale 1.55 / 1.28 / 1.1 Down from 1.75/1.4/1.15 default. Slab serifs are visually dense at heading sizes; smaller scale reads as "article" not "magazine spread."
showH1Rule / showH2Rule true / false (defaults) Besley SemiBold + the H1 rule carry section breaks.
Vertical rhythm defaults (24/16, p 16) Doesn't need inflation; weight + rule already break sections.
strong color tier 1 (= body) for both variants Besley SemiBold has visual heft on its own. The old Solarized Dark used tier 2 (#C5CDC2) because SF Pro semibold was too soft on muted base1; Besley SemiBold doesn't need the lift. Same call Sevilla makes for Alegreya.

Test plan

  • swift build -c debug — clean
  • Both themes appear as "Solarium Daylight" / "Solarium Moonlight" in the theme menu (replacing the old Solarized entries)
  • Body renders in Besley Regular at 16pt; slab serifs visible
  • H1 / H2 / H3 render in Besley SemiBold via SwiftUI's typographic-family resolution
  • **bold emphasis** picks up SemiBold cleanly; *italic* uses Besley Italic with calligraphic letterforms; ***both*** uses SemiBoldItalic
  • Code blocks use system monospace (theme face does not bleed into code)
  • Inline code, tables, blockquote bar, links all render correctly
  • Both Daylight and Moonlight verified end-to-end via computer-use

🤖 Generated with Claude Code

The Solarized palette was always asking for a serif body face — the
muted base1 / base01 olive-grey body and the warm-orange / yellow
accents read as "designed document" colors but with SF Pro they sat in
generic-modern territory. Swapping in Besley (Owen Earl, Indestructible
Type, OFL — slab-serif revival explicitly designed for sustained screen
reading) gives the palette the typeface those colors always wanted.

Six Besley weights bundled: Regular, Italic, SemiBold, SemiBoldItalic,
Bold, BoldItalic (~500 KB total). Registered alongside Alegreya and
OpenDyslexic via the existing FontRegistration path.

Typography pass tuned for slab-serif body, balancing readability and
density (per spec — neither Sevilla-style long-form-reading nor
default-density operational):

- 16pt body (default — Besley's tall x-height handles it)
- 0.40em line spacing (≈1.55× — between sans default 0.30 and
  Sevilla's 0.55)
- 720pt measure (≈80ch — between Sevilla's 620 and the 860 default)
- 1.55 / 1.28 / 1.1 heading scale (down from default 1.75/1.4/1.15;
  slab serifs are visually dense at heading sizes)
- Default rhythm — Besley SemiBold + the H1 rule carry section breaks
- Strong drops to tier 1 (= body) for Moonlight too — was tier 2 with
  SF Pro semibold, but Besley SemiBold has the heft to carry mid-
  paragraph emphasis on its own. Same call Sevilla makes for Alegreya.

Solarized values unchanged otherwise. Schoonover's L*-balanced palette
already worked; the font was the only thing wrong.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@tqbf tqbf merged commit 14b3808 into main May 2, 2026
3 checks passed
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.

1 participant