Мне почему-то кажется, что одной из первоочередных задач является поддержка различных языков системой, иначе KolibriOS вряд ли будет популярна по всему миру. Для этого нужно реализовать поддержку Unicode, различных раскладок клавиатур и кодировок, а также других национальных стандартов. Но в данный момент мы имеем:
1. Системной кодировкой "официально" считается CP866.
2. При этом фактически кодировка в системе не определена - соответствие символов двоичным кодам зависит от mt-шрифтов.
3. Нынешний шрифт char.mt, таким образом, соответствует кодировке СP866 (DOS Cyrillic), а char2.mt - кастрированно-мутированной версии CP866 без псевдографики, начиненной "левыми" символами с кодами 0xC0-0xD6, 0xF8-0xFE.
4. Unicode поддерживается только файловой подсистемой.
5. поддерживается только русская QWERTY-раскладка клавиатуры.
6. Все программы довольно плохо "дружат" с национальными стандартами. Например, в английском языке разделителем дробной части является точка, а в русском - запятая; многие виды письменности используют обратный порядок написания символов (справа налево); в американском и британском вариантах английского языка дата, как правило, пишется по-разному и т.д.)
Какие на данный момент есть наиболее приоритетные задачи?
Раскладку поменять довольно просто, она загружается из keymap.key с довольно прозрачным форматом. Естественно, по модулю того, что раскладка - это отображение из сканкодов в используемую кодировку. Остальное - проблемы, да.
CP866 фактически на уровне ядра присутствует, а именно, файловые системы в однобайтном варианте конвертируют именно в неё.
CP866 фактически на уровне ядра присутствует, а именно, файловые системы в однобайтном варианте конвертируют именно в неё.
Сделаем мир лучше!
самые большие проблемы, имхо, с юникодом - его парсить сложно, код будет большой, да и сам текст занимает больше.
XVilka, даже неоптимизированная процедура чтения символа UTF-8 или UTF-16, принимающая на входе указатель на символ, и на выходе возвращающая 32-битный кодпойнт + указатель на следующий символ, в несжатом состоянии у меня занимает 120-130 байт. Неужели это так много? Тем более поддержку различных кодировок можно вынести в различные библиотеки (одна для UTF7/8/16/32, другая для WIN CP12**, третья для DOS CP8** и т.д.), а пользователь сможет удалить/добавить в систему нужную/ненужную ему кодировку.
В библиотеки-то зачем? Достаточно класса "однобайтовая кодировка" и "двухбайтовая кодировка" -- для Big5 и прочего, если вообще понадобится. Для трансляции в Unicode однобайтовой кодовой страницы достаточно таблицы на 128 слов, для EBDIC -- 256 слов. Таблицу обратной трансляции создавать в памяти.
Не нужно копировать подход iconv с минимум 64-килобайтными библиотеками на кодировку. Уж тем более в Колибри. А в Винде полноразмерные таблицы в сделаны для отображения NLS-файлов в память. Опять же, не подход Колибри.
Не нужно копировать подход iconv с минимум 64-килобайтными библиотеками на кодировку. Уж тем более в Колибри. А в Винде полноразмерные таблицы в сделаны для отображения NLS-файлов в память. Опять же, не подход Колибри.
Ну можно сделать такой вариант: сложные кодировки типа UTF-7/UTF-8 реализовывать в библиотеках, а простые типа KOI-8/EBCDIC как таблицы. Это, конечно, если заботиться о расширяемости.
Joaquin
1. Справедливо только для русской сборки.
2. CleverMouse уже ответила про keymap.key
3. Системные шрифты - это массив символов, которые по-разному мапятся на коды клавиатуры в зависимости от раскладки клавиатуры.
4. Кириллица также поддерживается по крайней мере двумя программами HTMLv и utf2dos
5. Нет. Запусти Zkey и понажимай Alt+1...Alt+9.
6. Согласен.
1. Справедливо только для русской сборки.
2. CleverMouse уже ответила про keymap.key
3. Системные шрифты - это массив символов, которые по-разному мапятся на коды клавиатуры в зависимости от раскладки клавиатуры.
4. Кириллица также поддерживается по крайней мере двумя программами HTMLv и utf2dos
5. Нет. Запусти Zkey и понажимай Alt+1...Alt+9.
6. Согласен.
Как по мне, так самы такая приорететная задача это дать возможность писать программы в самой Колибри.
Сделать это можно либо дописав редактор KFAR до уровня Tinypad или T_Edit, либо любым способом дать возможность масштабировать шрифты в тех же Tinypad или T_Edit.
Сделать это можно либо дописав редактор KFAR до уровня Tinypad или T_Edit, либо любым способом дать возможность масштабировать шрифты в тех же Tinypad или T_Edit.
Как один из вариантов можно разработать экранную лупу как виндовсе.kogemyaka wrote:либо любым способом дать возможность масштабировать шрифты в тех же Tinypad или T_Edit.
IgorA: имхо, но это костыль. Лучше потратить время на сам TinyPad или T_Edit
Только не это!IgorA wrote:Как один из вариантов можно разработать экранную лупу как виндовсе.
Давайте лучше человеческий Курьер в качестве подгружаемого системного шрифта в ядро впихнём?
art_zh: может лучше terminus? он свободный, и глифов больше.
1) Экранная лупа есть.
2) Терминус и правда лучше, ИМХО
3) Не знаю, насколько это покорежит ядро. Разве что если 4ю функцию исправить, чтобы она кроме char.mt и char2.mt другие шрифты тоже умела использовать в схожем формате, но разных размеров...
Допустим,
2) Терминус и правда лучше, ИМХО
3) Не знаю, насколько это покорежит ядро. Разве что если 4ю функцию исправить, чтобы она кроме char.mt и char2.mt другие шрифты тоже умела использовать в схожем формате, но разных размеров...
Допустим,
Code: Select all
* eax = 4 - номер функции
* ebx = [координата по оси x]*65536 + [координата по оси y]
* ecx = 0xX0RRGGBB, где
o RR, GG, BB задают цвет текста
o X=ABnn (биты):
o nn задает используемый шрифт: 0=системный моноширинный, 1=системный шрифт переменной ширины, 10=новые системные шрифты
o A=0 - выводить esi символов, A=1 - выводить ASCIIZ-строку
o B=1 - закрашивать фон цветом edi
* edx = указатель на начало строки
* esi = Для nn=00 и 01:
A=0 длина строки, должна быть не больше 255; для A=1 игнорируется
Для nn=10 указатель на структуру (имя шрифта, размер шрифта).
Если nn=00 или 01,то функция не возвращает значения, иначе
eax=высота глифа, ebx=длина строки
Я уже предлагал такое viewtopic.php?f=36&t=561&start=101
Приложение через дополнительную функцию подгружает шрифт и использует. Нужно лишь прописать каждому потоку свой указатель на область с 3-м шрифтом. Много памяти это не сожрет, ведь шрифты будут в памяти лишь по мере необходимости сменять друг-друга.
Приложение через дополнительную функцию подгружает шрифт и использует. Нужно лишь прописать каждому потоку свой указатель на область с 3-м шрифтом. Много памяти это не сожрет, ведь шрифты будут в памяти лишь по мере необходимости сменять друг-друга.
Лупа для увеличения шрифта не самый лучший вариант, просто предлагал как возможный временный выход. Плохо что нельзя фиксировать увеличиваемую область, иначе курсор портит всю работу.
Думаю что если в системе будет новые шрифты, то переделать t_edit будет не очень сложно. Вот на рисунке пример программы, где изменены всего 2 цифры. Как видно возникли небольшие проблемы с верхней панелью, хотя остальное работает как надо.
Думаю что если в системе будет новые шрифты, то переделать t_edit будет не очень сложно. Вот на рисунке пример программы, где изменены всего 2 цифры. Как видно возникли небольшие проблемы с верхней панелью, хотя остальное работает как надо.
- Attachments
-
-
t_edit_big.png (9.99 KiB)Viewed 8246 times
Who is online
Users browsing this forum: No registered users and 1 guest