Skip to content

fix(web): lighter scripture text; self-hosted Korean and Hindi fonts - #26

Merged
kckern merged 1 commit into
masterfrom
fix/web-typography-multilang
Nov 4, 2026
Merged

kckern merged 1 commit into
masterfrom
fix/web-typography-multilang

Conversation

@kckern

@kckern kckern commented Nov 1, 2026

Copy link
Copy Markdown
Owner

Goudy Scripture rendered far too heavy, Korean fell back to whatever system font each device had, and Hindi had no web font.

Changes

  • Removes Chrome's faux bold and stops browsers thickening Goudy Scripture.
  • Scripture text is now 1.25rem, down from 24px.
  • Korean: self-hosted SG Batang, a renamed OFL subset of KoPub Batang. Google's early-access files now return 404. KLB and KRREB had no Korean rule before.
  • Hindi: self-hosted Noto Serif Devanagari.
  • The body stack carries both with unicode-range, which covers parallel view. English pages make no extra font requests.
  • word-break: keep-all for Korean line breaks.

Checked

  • Unit tests: 1,072 pass.
  • Live pages with these CSS and font files swapped in, in Chromium and Firefox: dc42:12,52:9, krbom/1.ne.1, hibom/1.ne.1, Korean parallel. Chromium also rendered NWT, SEBOM, RSV, KLB, KRREB and KJV parallel.

Not checked

  • WebKit hung in Playwright on this machine, so Safari is untested.
  • The parity suite was not run (the local MySQL container is down). allow.json records the versions.css and style.css differences.

Licensing

KoPub comes from google/fonts ofl/kopubbatang, under OFL 1.1. KOPUS's download page says serving its KoPubWorld release from a server needs separate approval, so these files must not be replaced with that download. See apps/web/docs/fonts.md.

🤖 Generated with Claude Code

Goudy Scripture's outlines are about as heavy as Goudy Old Style Bold. On top
of that, Chrome got a faux-bold rule written for the lighter Sorts Mill Goudy,
and headings were thickened in every browser.

- Remove the Chrome faux-bold rule. The upright face now declares weights
  400-1000, so browsers stop synthesizing bold from it.
- Scripture text is 1.25rem (was 24px); text inside .passage scales with it.
- Korean asked for KoPub Batang at Google early-access URLs that now return
  404, so each device used a system font. KLB and KRREB had no rule at all.
  Serve 'SG Batang', a renamed OFL subset of KoPub Batang ("KoPub Batang" is a
  Reserved Font Name), about 225 KB per weight.
- Hindi had no web font. Serve Noto Serif Devanagari, about 50 KB per weight.
- Pages with no version class (parallel view) reach both through the body
  stack. unicode-range keeps English pages from downloading them.
- word-break: keep-all, so Korean lines break between words.
- scripts/build-fonts.py rebuilds the fonts; docs/fonts.md records the licences.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kckern
kckern merged commit 2836443 into master Nov 4, 2026
7 checks passed
@kckern
kckern deleted the fix/web-typography-multilang branch November 4, 2026 00:54
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