Add a per-role font picker in Appearance settings. The two Material typeface roles can be set independently: brand (display/headline) and plain (title/body/label). Each can be the system default, a bundled font (Atkinson Hyperlegible, Lora, JetBrains Mono), or a .ttf/.otf the user loads from the device. The choice rebuilds the app-wide typography in MainActivity; a null/"system" choice leaves the Material default. Per the issue discussion the font-size and font-colour parts were dropped — Android's accessibility font scaling and the dynamic-colour theme already cover them. Custom files are copied into app-private storage and validated with android.graphics.fonts.Font.Builder before replacing the previous one, so a bad pick can't wedge global text rendering; a missing/unreadable file degrades to the system font. Each bundled font is previewed in its own face in the picker. OFL licences + attribution vendored under licenses/fonts/. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1013 B
1013 B
Bundled fonts
Calendula bundles the following fonts as optional user-selectable typefaces (Settings → Appearance → Fonts). Each is licensed under the SIL Open Font License 1.1; the full license text is included alongside this file.
| Font | Files (app/src/main/res/font/) |
Copyright | License |
|---|---|---|---|
| Atkinson Hyperlegible | atkinson_hyperlegible_regular.ttf, atkinson_hyperlegible_bold.ttf |
© 2020 Braille Institute of America, Inc. | OFL |
| Lora (variable) | lora.ttf |
© 2011 Cyreal | OFL |
| JetBrains Mono | jetbrains_mono_regular.ttf, jetbrains_mono_bold.ttf |
© 2020 The JetBrains Mono Project Authors | OFL |
The device's default typeface (Roboto on most Android builds) remains the default and is not bundled.
Fonts a user loads from their own device via "Choose file…" are copied into the app's private storage and are not redistributed.