From 9e516b96cce69797d9ecd4a7556e9e29e814145b Mon Sep 17 00:00:00 2001 From: John O'Keefe Date: Sat, 29 Aug 2026 15:25:52 -0400 Subject: [PATCH] docs(android): require reader settings parity with the web reader The web reader's font roster (Literata default, plus seven self-hosted variable fonts), typography controls, chrome/reading theme split, fx brightness/contrast/invert stack, tap zones, and highlight palette are the reference design for the Android reader - only the mobile presentation differs. Document the mapping to the synced reader_settings model so the app reuses it instead of inventing a parallel one. --- docs/developer/android-app.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs/developer/android-app.md b/docs/developer/android-app.md index 56d94a6..d47baed 100644 --- a/docs/developer/android-app.md +++ b/docs/developer/android-app.md @@ -96,6 +96,18 @@ Planned reading features: - Zoom and pan; aggressive preloading of adjacent pages - Webtoon / continuous vertical mode: post-v1 +### Reader settings parity with the web reader + +The web reader (`web/src/reader/`) is the reference implementation for reading ergonomics — its font selection, reading themes, and highlight system are considered well-designed; only its desktop-oriented presentation is being replaced on mobile. The Android reader should reuse the same settings model (stored in the `reader_settings` table and synced via the settings endpoint) rather than inventing a parallel one: + +- **Fonts**: the same roster of variable fonts, self-hosted under `/static/fonts/` — Literata (default), Crimson Pro, Source Serif 4, EB Garamond, Libertinus Serif, Noto Serif, Charis SIL, IBM Plex Serif (`FONT_MAP` in `web/src/reader/reader.ts`) +- **Typography**: `font_size` (default 18), `line_height` (1.6), `margin_width`, `double_page_spread` +- **Themes**: `chrome_theme` (default `tokyo-night`) for app chrome vs `reading_theme`/`reading_mode` for the page surface, plus the fx stack (`fx_brightness`, `fx_contrast`, `fx_invert`) +- **Navigation**: `tap_zones_enabled` + `tap_zone_size`, `reading_direction`, `progress_mode` +- **Highlights**: per-annotation color (default `#ffd54f`), matching the web palette + +Settings chosen on one device should follow the user everywhere — mobile changes write back through the same sync. + --- ## 🍎 iOS Posture