-
Notifications
You must be signed in to change notification settings - Fork 334
Description
1. Context & Motivation
The current firmware for both the LilyGO T-Deck and the LilyGO T-LoRa Pager (Model K257) targets critically lacks adequate font support for the Cyrillic Unicode block (
This limitation renders both devices unusable as standalone communication terminals for users in regions utilizing Cyrillic scripts. When messages are received in languages like Bulgarian, Russian, Ukrainian, Serbian, etc., the display renders unreadable replacement characters (e.g., ? or □).
For Meshcore to achieve reliable utility and adoption across Eastern Europe and Central Asia, supporting this character set is a functional necessity.
2. Affected Hardware
Both devices share a similar high-performance architecture, simplifying the proposed fix:
| Device | Model | MCU | Display Type | Key Feature |
|---|---|---|---|---|
| LilyGO T-Deck | T-Deck | ESP32-S3 | IPS LCD (ST7789) | Large Screen, Full Keyboard |
| LilyGO T-LoRa Pager | K257 | ESP32-S3 | IPS LCD (ST7796) | Compact Pager Form, QWERTY Keyboard |
3. Technical Constraints & Analysis
Both devices run on the ESP32-S3, which offers ample Flash (16MB) and PSRAM (8MB). Therefore, the primary constraint is integrating the font gracefully, not memory size.
The core requirement is to successfully parse and render 2-byte UTF-8 sequences corresponding to the necessary Cyrillic characters.
Target Character Range (Essential for Bulgarian + Broad Coverage):
The solution must include the full range necessary for common Cyrillic languages:
-
Basic Cyrillic:
$\text{U+0410}$ –$\text{U+044F}$ (Covers Russian, Bulgarian, etc.) -
Cyrillic Supplements:
$\text{U+0450}$ –$\text{U+045F}$ (Critical for Ukrainian, Serbian, Macedonian variations).
4. Proposed Solution (Two Phases)
Phase 1: Rendering (High Priority)
The display assets must be updated to include the necessary glyphs.
-
Font Generation: Generate a custom font file (e.g., C-array header,
.vlw) that combines the existing Basic Latin characters with the full Cyrillic range ($\text{U+0400}$ –$\text{U+045F}$). - Integration: Integrate this new font into the display logic for both T-Deck and T-LoRa Pager targets, as they share similar ESP32-S3 architectures.
-
UTF-8 Handling: Verify that the display function correctly interprets and maps the incoming two-byte UTF-8 sequences (starting with
0xD0and0xD1) to the correct glyph indices.
Phase 2: QWERTY Input Mapping (T-Deck & T-LoRa Pager)
Once rendering is resolved, a separate issue will be needed to address input functionality on the physical keyboards:
- Implement a software keymap layer triggered by a modifier key (e.g.,
AltorSym). - The layer should support common phonetic layouts (e.g., Bulgarian/Russian standard phonetic mapping).
5. Acceptance Criteria
- Incoming
$\text{UTF-8}$ messages in Bulgarian (e.g., "Здравей", "Тест") render correctly and legibly on the T-Deck display. - Incoming
$\text{UTF-8}$ messages in Bulgarian (e.g., "Здравей", "Тест") render correctly and legibly on the T-LoRa Pager (K257) display. - The added font asset does not cause significant performance degradation or excessive flash memory usage.
- Users can toggle the keyboard into Cyrillic mode.
- Typing on the physical keyboard in Cyrillic mode correctly generates Bulgarian (and other basic Cyrillic) characters.