Page 7 of 9

Re: Какие на данный момент есть наиболее приоритетные задачи

Posted: Mon Aug 15, 2011 2:53 pm
by Joaquin
Мне почему-то кажется, что одной из первоочередных задач является поддержка различных языков системой, иначе KolibriOS вряд ли будет популярна по всему миру. Для этого нужно реализовать поддержку Unicode, различных раскладок клавиатур и кодировок, а также других национальных стандартов. Но в данный момент мы имеем:
1. Системной кодировкой "официально" считается CP866.
2. При этом фактически кодировка в системе не определена - соответствие символов двоичным кодам зависит от mt-шрифтов.
3. Нынешний шрифт char.mt, таким образом, соответствует кодировке СP866 (DOS Cyrillic), а char2.mt - кастрированно-мутированной версии CP866 без псевдографики, начиненной "левыми" символами с кодами 0xC0-0xD6, 0xF8-0xFE.
4. Unicode поддерживается только файловой подсистемой.
5. поддерживается только русская QWERTY-раскладка клавиатуры.
6. Все программы довольно плохо "дружат" с национальными стандартами. Например, в английском языке разделителем дробной части является точка, а в русском - запятая; многие виды письменности используют обратный порядок написания символов (справа налево); в американском и британском вариантах английского языка дата, как правило, пишется по-разному и т.д.)

Re: Какие на данный момент есть наиболее приоритетные задачи

Posted: Mon Aug 15, 2011 7:15 pm
by CleverMouse
Раскладку поменять довольно просто, она загружается из keymap.key с довольно прозрачным форматом. Естественно, по модулю того, что раскладка - это отображение из сканкодов в используемую кодировку. Остальное - проблемы, да.
CP866 фактически на уровне ядра присутствует, а именно, файловые системы в однобайтном варианте конвертируют именно в неё.

Re: Какие на данный момент есть наиболее приоритетные задачи

Posted: Mon Aug 15, 2011 8:03 pm
by XVilka
самые большие проблемы, имхо, с юникодом - его парсить сложно, код будет большой, да и сам текст занимает больше.

Re: Какие на данный момент есть наиболее приоритетные задачи

Posted: Mon Aug 15, 2011 10:56 pm
by Joaquin
XVilka, даже неоптимизированная процедура чтения символа UTF-8 или UTF-16, принимающая на входе указатель на символ, и на выходе возвращающая 32-битный кодпойнт + указатель на следующий символ, в несжатом состоянии у меня занимает 120-130 байт. Неужели это так много? Тем более поддержку различных кодировок можно вынести в различные библиотеки (одна для UTF7/8/16/32, другая для WIN CP12**, третья для DOS CP8** и т.д.), а пользователь сможет удалить/добавить в систему нужную/ненужную ему кодировку.

Re: Какие на данный момент есть наиболее приоритетные задачи

Posted: Mon Aug 15, 2011 11:12 pm
by Freeman
В библиотеки-то зачем? Достаточно класса "однобайтовая кодировка" и "двухбайтовая кодировка" -- для Big5 и прочего, если вообще понадобится. Для трансляции в Unicode однобайтовой кодовой страницы достаточно таблицы на 128 слов, для EBDIC -- 256 слов. Таблицу обратной трансляции создавать в памяти.

Не нужно копировать подход iconv с минимум 64-килобайтными библиотеками на кодировку. Уж тем более в Колибри. А в Винде полноразмерные таблицы в сделаны для отображения NLS-файлов в память. Опять же, не подход Колибри.

Re: Какие на данный момент есть наиболее приоритетные задачи

Posted: Mon Aug 15, 2011 11:22 pm
by Joaquin
Ну можно сделать такой вариант: сложные кодировки типа UTF-7/UTF-8 реализовывать в библиотеках, а простые типа KOI-8/EBCDIC как таблицы. Это, конечно, если заботиться о расширяемости.

Re: Какие на данный момент есть наиболее приоритетные задачи

Posted: Sun Sep 04, 2011 4:55 pm
by Asper
Joaquin
1. Справедливо только для русской сборки.
2. CleverMouse уже ответила про keymap.key
3. Системные шрифты - это массив символов, которые по-разному мапятся на коды клавиатуры в зависимости от раскладки клавиатуры.
4. Кириллица также поддерживается по крайней мере двумя программами HTMLv и utf2dos
5. Нет. Запусти Zkey и понажимай Alt+1...Alt+9.
6. Согласен.

Re: Какие на данный момент есть наиболее приоритетные задачи

Posted: Sun Sep 11, 2011 9:54 pm
by kogemyaka
Как по мне, так самы такая приорететная задача это дать возможность писать программы в самой Колибри.

Сделать это можно либо дописав редактор KFAR до уровня Tinypad или T_Edit, либо любым способом дать возможность масштабировать шрифты в тех же Tinypad или T_Edit.

Re: Какие на данный момент есть наиболее приоритетные задачи

Posted: Tue Sep 13, 2011 12:33 am
by IgorA
kogemyaka wrote:либо любым способом дать возможность масштабировать шрифты в тех же Tinypad или T_Edit.
Как один из вариантов можно разработать экранную лупу как виндовсе.

Re: Какие на данный момент есть наиболее приоритетные задачи

Posted: Tue Sep 13, 2011 2:51 am
by XVilka
IgorA: имхо, но это костыль. Лучше потратить время на сам TinyPad или T_Edit

Re: Какие на данный момент есть наиболее приоритетные задачи

Posted: Tue Sep 13, 2011 2:53 am
by art_zh
IgorA wrote:Как один из вариантов можно разработать экранную лупу как виндовсе.
Только не это!
Давайте лучше человеческий Курьер в качестве подгружаемого системного шрифта в ядро впихнём?

Re: Какие на данный момент есть наиболее приоритетные задачи

Posted: Tue Sep 13, 2011 3:00 am
by XVilka
art_zh: может лучше terminus? он свободный, и глифов больше.

Re: Какие на данный момент есть наиболее приоритетные задачи

Posted: Tue Sep 13, 2011 9:17 am
by SoUrcerer
1) Экранная лупа есть.
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=длина строки

Re: Какие на данный момент есть наиболее приоритетные задачи

Posted: Tue Sep 13, 2011 11:43 am
by Mario
Я уже предлагал такое viewtopic.php?f=36&t=561&start=101
Приложение через дополнительную функцию подгружает шрифт и использует. Нужно лишь прописать каждому потоку свой указатель на область с 3-м шрифтом. Много памяти это не сожрет, ведь шрифты будут в памяти лишь по мере необходимости сменять друг-друга.

Re: Какие на данный момент есть наиболее приоритетные задачи

Posted: Wed Sep 14, 2011 12:48 am
by IgorA
Лупа для увеличения шрифта не самый лучший вариант, просто предлагал как возможный временный выход. Плохо что нельзя фиксировать увеличиваемую область, иначе курсор портит всю работу.

Думаю что если в системе будет новые шрифты, то переделать t_edit будет не очень сложно. Вот на рисунке пример программы, где изменены всего 2 цифры. Как видно возникли небольшие проблемы с верхней панелью, хотя остальное работает как надо.