tds3p-rsvp-reader/TODO.md

48 lines
2.3 KiB
Markdown

# TODO
## Add anti-aliased reader fonts
The current reader uses TFT_eSPI's bitmap FreeSans, FreeSerif, and FreeMono
fonts. They are compact and fast, but their edges remain jagged at large sizes.
Use TFT_eSPI smooth-font (`.vlw`) assets for the reading view and font-setting
previews.
1. Generate or obtain licensed `.vlw` files for sans-serif, serif, and
monospace faces at the seven supported reader sizes: 1, 1.5, 2, 2.5, 3,
3.5, and 4.
2. Place the files in a dedicated SD-card directory, for example
`/fonts/<style>-<size>.vlw`; document these required files alongside the
existing `/books/<book>/<chapter>.txt` layout.
3. Change `Board` to load the selected smooth font from SD when a font setting
is applied, and fall back to the current bitmap font if the file is absent
or cannot be loaded.
4. Continue to clear only the union of the old and new word bounds. Smooth
glyphs should be drawn with an explicit black background so anti-aliased
edge pixels blend correctly without redrawing the status bar or dead space.
5. Measure load time, RAM use, and word-to-word rendering latency on the
T-Display-S3-Pro. Keep the cached active font in memory and avoid SD reads
during normal word advances.
6. Verify that chapter-title and `The End` cards use the same selected smooth
font and remain aligned with normal words.
## Preprocess unfamiliar-word timing
Avoid dictionary lookups while reading. The existing chapter sidecars already
carry sparse italic/bold metadata and reserve a timing-modifier field. Extend
the desktop preprocessor to populate that field before books are copied to the
SD card.
1. Store only marked words: delta-encoded word indexes plus a small extra-delay
class (for example, 25%, 50%, or 100%). This keeps metadata sparse rather
than recording timing for every token.
2. Have the preprocessor inspect the whole book to flag first appearances of
uncommon words, likely proper nouns, non-English terms, and user-supplied
vocabulary. Keep language models and dictionaries on the desktop, not the
device.
3. At runtime, compare the current word
index against the next marked index; do not perform SD or dictionary lookups
during word advancement.
4. Combine an extra-delay class with existing punctuation and long-word timing
using the strongest applicable delay, rather than multiplying every rule.