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:
+11
-10
@@ -33,9 +33,16 @@ Home Начало документа
|
||||
End Конец документа
|
||||
Left Right Горизонтальный сдвиг (только nowrap-строки)
|
||||
F1 Окно справки
|
||||
F8 Кодировка: CP866 → CP1251 → KOI8-R → UTF-8 → ...
|
||||
F10 / Esc Выход из программы
|
||||
```
|
||||
|
||||
Кодировка определяется автоматически при открытии (BOM + эвристика по
|
||||
первым 4 КБ); `F8` переключает её вручную, если детекция ошиблась.
|
||||
8-битные кодировки (CP866/CP1251/KOI8-R) переключаются мгновенно (ремап на
|
||||
отрисовке). Второй набор индекс/кэша (например UTF-8) строится лениво — при
|
||||
первом переключении в него (короткая пауза со спиннером), дальше мгновенно.
|
||||
|
||||
## Синтаксис Markdown
|
||||
|
||||
### Заголовки
|
||||
@@ -102,7 +109,7 @@ int main(void) {
|
||||
## Технические характеристики
|
||||
|
||||
- **Платформа:** Sprinter, процессор Z80 @ 21 МГц
|
||||
- **Кодировка:** CP866 (DOS Cyrillic)
|
||||
- **Кодировки:** CP866 / CP1251 / KOI8-R / UTF-8 (автоопределение, `F8`)
|
||||
- **Максимальный размер файла:** 128 КБ
|
||||
- **Максимальное число строк в индексе:** 16 384
|
||||
- **Режим памяти:** small
|
||||
@@ -115,15 +122,9 @@ int main(void) {
|
||||
разрешить работать с большим кол-вом страниц памяти, пока оттестированно
|
||||
на работе с 8-мю страницами по 16Кб.
|
||||
|
||||
2. **Форматированные таблицы.** Разбирать строки вида `| ячейка | ячейка |`
|
||||
с автоматическим выравниванием столбцов и отрисовкой разделительных
|
||||
линий (строки `|---|---|`). На текущий момент таблицы отображаются
|
||||
как обычные nowrap-строки без выравнивания.
|
||||
|
||||
3. **Поддержка кодировок CP1251 и UTF-8.** Автоопределение кодировки
|
||||
по BOM, явное указание через аргумент командной строки (`--encoding cp1251`),
|
||||
возможность переключения кодировки во время просмотра (`F8`).
|
||||
Нужно прежде всего для документов на русском языке; CP866 кодировака уже поддерживается.
|
||||
Сделано: форматированные таблицы с рамкой; поддержка кодировок
|
||||
CP866 / CP1251 / KOI8-R / UTF-8 с автоопределением и переключением по `F8`
|
||||
(второй набор строится лениво, по первому переключению).
|
||||
|
||||
4. **Ускорение рендеринга.** Кэш строк экрана. Оптимизация цикла вывода
|
||||
символов через BIOS WRCHAR (пакетный вывод, DMA).
|
||||
|
||||
Reference in New Issue
Block a user