feat(app): stroke order for kanji and kana, from KanjiVG

KanjiVG's strokes come with the app (assets/kanjivg/, CC BY-SA 3.0, its
notice in the licence list): 94 gzipped files, one per 256 code points,
2.7 MB in all, a file read the first time a character of it is asked for
(StrokeRepository, app-wide beside the maps). The strokes are SVG path
data, read with path_parsing (the Flutter team's, pure Dart, already in
the build through flutter_svg), so the model can flatten them into points
without dart:ui, as checking handwriting will.

A character's sheet traces its strokes in order over those to come, with
its stroke count, meanings, readings, level and the components KanjiVG
splits it into, each a tap away. It opens from a studied character's
answer (Stroke order) and from a character found in the dictionary.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MMm7usAo6q9ZZRoPkWjoxi
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-10-09 15:35:00 +02:00
commit ed5bb3f6b1
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -76,6 +76,8 @@ dependencies:
material_ui: ^1.5.0
package_info_plus: ^10.2.2
path: ^1.9.1
# SVG path data, for the strokes KanjiVG draws characters with.
path_parsing: ^1.1.0
path_provider: ^2.1.6
# Modern Anki packages are zstd-compressed, every frame without its content
# size, which upstream's v1.0.0 refuses. Our fork decodes them, pinned to a
@ -150,6 +152,8 @@ flutter:
# The bundled fonts' licences, for the licence list (see assets/fonts/ATTRIBUTION.md).
- assets/fonts/OFL-NotoSans.txt
- assets/fonts/OFL-NotoSansCJK.txt
# How kanji and kana are written, from KanjiVG (see assets/kanjivg/ATTRIBUTION.md).
- assets/kanjivg/
# The app's own fonts, the same on every device and never fetched: Noto Sans for
# Latin, Greek and Cyrillic; behind it Noto Sans JP, SC, TC and KR for Japanese,