feat(settings): OpenDyslexic font option for dyslexic readers (#507)

* feat(settings): OpenDyslexic font option for dyslexic readers

Next step on the accessibility track. The first pass was on the colour
side — WCAG contrast audits across every theme and dedicated colour-
vision-deficiency variants for the protanopia / deuteranopia / tritan-
opia palettes. Typography is the other axis: some users with dyslexia
find a font with a heavier weighted baseline and asymmetric glyph
shapes (b/d, p/q never mirror, italic forms differentiated rather
than slanted-regular) easier to track than a typical sans.

Adds OpenDyslexic to the existing Fontsource font picker. SIL OFL
licensed, freely redistributable, and the de-facto open-source
standard for this use case. Non-variable axis, ships as four discrete
weight/style files (regular, bold, italic, bold-italic) — the Settings
picker grew an optional `hint` field on font entries so this one row
can carry a "dyslexia-friendly · no RU/ZH support" subtitle without
bloating the other 14 entries.

Latin + Latin-extended only. Cyrillic and CJK locales (RU, ZH) fall
back to the system font when this is selected; the subtitle calls out
that limitation upfront. i18n: hint string in all 8 locales
(settings.fontHintOpenDyslexic).

Accessibility is intentional product positioning here — it's an
underserved corner of the Subsonic-client ecosystem.

* chore(nix): sync npmDepsHash with package-lock.json

* docs: changelog entry for PR #507

Logs the OpenDyslexic font option in v1.46.0 "## Added".

* docs(settings): contributor entry for PR #507

Adds the OpenDyslexic accessibility bullet to Psychotoxical's
contributions list.

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
This commit is contained in:
Frank Stellmacher
2026-05-07 22:15:38 +02:00
committed by GitHub
parent bd56177e2c
commit f520f7951a
15 changed files with 56 additions and 5 deletions
+11
View File
@@ -24,6 +24,12 @@
@import '@fontsource-variable/jetbrains-mono/wght-italic.css';
@import '@fontsource-variable/golos-text';
@import '@fontsource-variable/unbounded';
/* OpenDyslexic non-variable font with discrete weights/styles. Latin only,
no Cyrillic / no CJK. Selected via Settings as a dyslexia-friendly option. */
@import '@fontsource/opendyslexic/400.css';
@import '@fontsource/opendyslexic/700.css';
@import '@fontsource/opendyslexic/400-italic.css';
@import '@fontsource/opendyslexic/700-italic.css';
/* ─── Catppuccin Mocha Variables ─── */
:root,
@@ -6516,6 +6522,11 @@ input[type="range"]:hover::-webkit-slider-thumb {
--font-display: 'Unbounded Variable', sans-serif;
}
[data-font='opendyslexic'] {
--font-sans: 'OpenDyslexic', system-ui, sans-serif;
--font-display: 'OpenDyslexic', sans-serif;
}
/*
Middle Earth Epic Fantasy / Cinematic
*/