mdview2: поддержка кодировок CP866/CP1251/KOI8-R/UTF-8 (F8)

- Детекция при открытии (BOM + эвристика по первым 4 КБ).
- 8-битные (CP866/CP1251/KOI8-R) — общий индекс/кэш, переключение
  мгновенным ремапом глифов [128-255] на отрисовке по attr (структурные
  глифы — рамка/HR/маркеры — не ремапятся).
- UTF-8 — отдельный набор: декодирование в CP866 (кириллица + ходовые
  символы: стрелки/галка/буллет/тире/кавычки/box), свой индекс/кэш.
- Два набора (docset_t g_doc[2]) со свапом «живых» глобалов; второй
  строится ЛЕНИВО при первом F8-переходе в него (build-on-demand).
- F8: цикл CP866→CP1251→KOI8R→UTF8; метка в меню видна только когда
  переключение возможно; во время сборки 8-бит первичного F8 крутит 8-бит.
- F1-справка: секция Encoding; меню разбито на блоки (F1/F8/F10).
- Фикс: g_doc обязан быть инициализирован (SDCC z80 не обнуляет статики
  надёжно) — иначе мусорный built вёл к показу неинициализированного набора.
- Убрана отладка времени обработки из статус-бара.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-25 11:00:49 +03:00
parent a6e0aacc80
commit a14f19b657
5 changed files with 640 additions and 68 deletions
+28
View File
@@ -0,0 +1,28 @@
# Тест UTF-8
Это **проверка** кодировки _UTF-8_ в `mdview2`.
Кириллица должна читаться: съешь же ещё этих мягких булок.
## Символы и пунктуация
Тире — длинное, и – короткое. Кавычки: «ёлочки» и “лапки”.
Многоточие… стрелки → ← ↑ ↓, галочка ✓ и крестик ✗.
Градус 25°, пункт списка • буллет, номер № 7.
## Список
- Первый пункт
- Второй пункт с длинным текстом, чтобы проверить перенос строки по словам на границе экрана восемьдесят символов
- Ёжик, ёлка, объём
> Цитата: «Краткость — сестра таланта».
## Таблица
| Язык | Привет | Число |
|----------|---------------|-------|
| Русский | Здравствуйте | 42 |
| English | Hello | 7 |
| Deutsch | Grüße | 100 |
Конец файла.