feat(app): furigana in rich text

Text within a line can carry its reading now (`ruby` on the text's
attributes, `かんじ` on `漢字`), word by word, in lessons, example
sentences, notes and cards alike. Shown, the reading sits above the text,
smaller and centred, the text level with the line around it; while
editing, the text is dotted underneath and the caret moves through it as
text, as with formulas. The format bar's Furigana asks for the reading of
the text selected, starting from the one it has, and takes it away.

An Anki field's `<ruby>` keeps its reading as furigana now, each base its
own, instead of "漢(かん)"; Anki's `漢字[かんじ]` stays as written, as
telling it apart from other brackets is guesswork. The Markdown export
writes furigana as HTML's `<ruby>漢字<rt>かんじ</rt></ruby>`.

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 01:51:28 +02:00
commit 30dde3b8fa
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -2147,6 +2147,24 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get formatSubscript => 'Tiefgestellt';
@override
String get formatRuby => 'Furigana (eine Lesung über dem Text)';
@override
String get rubyTitle => 'Furigana';
@override
String get rubyReading => 'Lesung';
@override
String get rubyReadingHint => 'In Kana, z. B. かんじ';
@override
String get rubySave => 'Speichern';
@override
String get rubyRemove => 'Entfernen';
@override
String get vocabularyReading => 'Lesung';