feat(ui-lvgl): European fonts and phone-style keyboard

Fonts: Noto Sans generated with lv_font_conv (ui-lvgl/fonts/generate.sh,
OFL) replaces ASCII-only Montserrat: European Latin (Latin-1, Extended-A/B),
Greek, Cyrillic + supplement, typographic punctuation, currency, LVGL
symbols + globe; 12/14/16/20 px, clock 40 px digits only (RLE, so
LV_USE_FONT_COMPRESSED is on).

Keyboard (ui-lvgl/Keyboard.h): one layout per script (Latin QWERTY,
Cyrillic, Greek) picked by the same keyboard_main/alt_alphabet prefs as
ui-new, globe key to switch, hold a key for its variants in a popup above
it, one-shot shift, symbols page; compose limit counted in UTF-8 bytes.
First Settings screen (Keyboard: Main / Additional).

Long-press variants and UTF-8 case mapping move to ui-core/KeyboardData.h
and are shared with ui-new, whose Hold-Enter accents gain Romanian,
Turkish, Hungarian, Baltic and Icelandic letters (and ș/ț, Ukrainian /
Serbian letters now capitalise).

Verified on L2 hardware.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Jakub
2026-09-25 00:08:15 +02:00
co-authored by Claude Opus 5.5
parent cd926b7e45
commit bf1e6fcaa0
16 changed files with 47899 additions and 75 deletions
+7 -6
View File
@@ -21,10 +21,11 @@ namespace theme {
static const int STATUS_H = 22; // top status bar
static const int ROW_H = 44; // list row (touch target)
// Type
#define THEME_FONT_SMALL (&lv_font_montserrat_12)
#define THEME_FONT_BODY (&lv_font_montserrat_14)
#define THEME_FONT_TITLE (&lv_font_montserrat_16)
#define THEME_FONT_LARGE (&lv_font_montserrat_20)
#define THEME_FONT_CLOCK (&lv_font_montserrat_40)
// Type -- Noto Sans, generated by fonts/generate.sh (declared in lv_conf.h).
// ui_font_40 holds digits / ':' / '-' only (clock).
#define THEME_FONT_SMALL (&ui_font_12)
#define THEME_FONT_BODY (&ui_font_14)
#define THEME_FONT_TITLE (&ui_font_16)
#define THEME_FONT_LARGE (&ui_font_20)
#define THEME_FONT_CLOCK (&ui_font_40)
}