2.3 KiB
2.3 KiB
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.
- Generate or obtain licensed
.vlwfiles for sans-serif, serif, and monospace faces at the seven supported reader sizes: 1, 1.5, 2, 2.5, 3, 3.5, and 4. - 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>.txtlayout. - Change
Boardto 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. - 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.
- 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.
- Verify that chapter-title and
The Endcards 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.
- 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.
- 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.
- At runtime, compare the current word index against the next marked index; do not perform SD or dictionary lookups during word advancement.
- Combine an extra-delay class with existing punctuation and long-word timing using the strongest applicable delay, rather than multiplying every rule.