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
+1
View File
@@ -587,6 +587,7 @@ export const deTranslation = {
languageNb: 'Norwegisch',
languageRu: 'Russisch',
font: 'Schriftart',
fontHintOpenDyslexic: 'Legasthenie-freundlich · keine RU/ZH-Unterstützung',
theme: 'Design',
appearance: 'Darstellung',
servers: 'Server',
+1
View File
@@ -590,6 +590,7 @@ export const enTranslation = {
languageRu: 'Russian',
languageEs: 'Spanish',
font: 'Font',
fontHintOpenDyslexic: 'Dyslexia-friendly · no RU/ZH support',
theme: 'Theme',
appearance: 'Appearance',
servers: 'Servers',
+1
View File
@@ -580,6 +580,7 @@ export const esTranslation = {
languageRu: 'Ruso',
languageEs: 'Español',
font: 'Fuente',
fontHintOpenDyslexic: 'Compatible con dislexia · sin soporte RU/ZH',
theme: 'Tema',
appearance: 'Apariencia',
servers: 'Servidores',
+1
View File
@@ -577,6 +577,7 @@ export const frTranslation = {
languageNb: 'Norvégien',
languageRu: 'Russe',
font: 'Police',
fontHintOpenDyslexic: 'Adapté à la dyslexie · sans prise en charge RU/ZH',
theme: 'Thème',
appearance: 'Apparence',
servers: 'Serveurs',
+1
View File
@@ -577,6 +577,7 @@ export const nbTranslation = {
languageNb: 'Norsk',
languageRu: 'Russisk',
font: 'Skrifttype',
fontHintOpenDyslexic: 'Dyslexivennlig · ingen RU/ZH-støtte',
theme: 'Tema',
appearance: 'Utseende',
servers: 'Tjenere',
+1
View File
@@ -576,6 +576,7 @@ export const nlTranslation = {
languageNb: 'Noors',
languageRu: 'Russisch',
font: 'Lettertype',
fontHintOpenDyslexic: 'Dyslexie-vriendelijk · geen RU/ZH-ondersteuning',
theme: 'Thema',
appearance: 'Weergave',
servers: 'Servers',
+1
View File
@@ -611,6 +611,7 @@ export const ruTranslation = {
languageRu: 'Русский',
languageRu2: 'Русский 2',
font: 'Шрифт',
fontHintOpenDyslexic: 'Подходит для дислексии · без поддержки RU/ZH',
theme: 'Тема',
appearance: 'Оформление',
servers: 'Серверы',
+1
View File
@@ -571,6 +571,7 @@ export const zhTranslation = {
languageNb: '挪威',
languageRu: '俄语',
font: '字体',
fontHintOpenDyslexic: '阅读障碍友好 · 不支持俄文/中文',
theme: '主题',
appearance: '外观',
servers: '服务器',