Board.KolibriOS.org

Official KolibriOS board
It is currently Sun Dec 08, 2019 7:51 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 134 posts ]  Go to page Previous 15 6 7 8 9 Next
Author Message
PostPosted: Mon Aug 15, 2011 2:53 pm 
Offline

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


Top
   
PostPosted: Mon Aug 15, 2011 7:15 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1621
Раскладку поменять довольно просто, она загружается из keymap.key с довольно прозрачным форматом. Естественно, по модулю того, что раскладка - это отображение из сканкодов в используемую кодировку. Остальное - проблемы, да.
CP866 фактически на уровне ядра присутствует, а именно, файловые системы в однобайтном варианте конвертируют именно в неё.

_________________
Сделаем мир лучше!


Top
   
PostPosted: Mon Aug 15, 2011 8:03 pm 
Offline
User avatar

Joined: Tue Aug 25, 2009 4:45 pm
Posts: 796
самые большие проблемы, имхо, с юникодом - его парсить сложно, код будет большой, да и сам текст занимает больше.


Top
   
PostPosted: Mon Aug 15, 2011 10:56 pm 
Offline

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


Top
   
PostPosted: Mon Aug 15, 2011 11:12 pm 
Offline
User avatar

Joined: Tue May 08, 2007 12:44 am
Posts: 346
В библиотеки-то зачем? Достаточно класса "однобайтовая кодировка" и "двухбайтовая кодировка" -- для Big5 и прочего, если вообще понадобится. Для трансляции в Unicode однобайтовой кодовой страницы достаточно таблицы на 128 слов, для EBDIC -- 256 слов. Таблицу обратной трансляции создавать в памяти.

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

_________________
Разработчик языка программирования Кантор


Top
   
PostPosted: Mon Aug 15, 2011 11:22 pm 
Offline

Joined: Sat Aug 13, 2011 1:48 pm
Posts: 49
Ну можно сделать такой вариант: сложные кодировки типа UTF-7/UTF-8 реализовывать в библиотеках, а простые типа KOI-8/EBCDIC как таблицы. Это, конечно, если заботиться о расширяемости.


Top
   
PostPosted: Sun Sep 04, 2011 4:55 pm 
Offline
User avatar

Joined: Fri Jun 27, 2008 3:22 pm
Posts: 988
Joaquin
1. Справедливо только для русской сборки.
2. CleverMouse уже ответила про keymap.key
3. Системные шрифты - это массив символов, которые по-разному мапятся на коды клавиатуры в зависимости от раскладки клавиатуры.
4. Кириллица также поддерживается по крайней мере двумя программами HTMLv и utf2dos
5. Нет. Запусти Zkey и понажимай Alt+1...Alt+9.
6. Согласен.


Top
   
PostPosted: Sun Sep 11, 2011 9:54 pm 
Offline
User avatar

Joined: Sun May 10, 2009 7:56 pm
Posts: 98
Как по мне, так самы такая приорететная задача это дать возможность писать программы в самой Колибри.

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


Top
   
PostPosted: Tue Sep 13, 2011 12:33 am 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 813
kogemyaka wrote:
либо любым способом дать возможность масштабировать шрифты в тех же Tinypad или T_Edit.

Как один из вариантов можно разработать экранную лупу как виндовсе.


Top
   
PostPosted: Tue Sep 13, 2011 2:51 am 
Offline
User avatar

Joined: Tue Aug 25, 2009 4:45 pm
Posts: 796
IgorA: имхо, но это костыль. Лучше потратить время на сам TinyPad или T_Edit


Top
   
PostPosted: Tue Sep 13, 2011 2:53 am 
Offline
Kernel Developer
User avatar

Joined: Fri Aug 14, 2009 1:46 am
Posts: 1358
IgorA wrote:
Как один из вариантов можно разработать экранную лупу как виндовсе.

Только не это!
Давайте лучше человеческий Курьер в качестве подгружаемого системного шрифта в ядро впихнём?


Top
   
PostPosted: Tue Sep 13, 2011 3:00 am 
Offline
User avatar

Joined: Tue Aug 25, 2009 4:45 pm
Posts: 796
art_zh: может лучше terminus? он свободный, и глифов больше.


Top
   
PostPosted: Tue Sep 13, 2011 9:17 am 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
1) Экранная лупа есть.
2) Терминус и правда лучше, ИМХО
3) Не знаю, насколько это покорежит ядро. Разве что если 4ю функцию исправить, чтобы она кроме char.mt и char2.mt другие шрифты тоже умела использовать в схожем формате, но разных размеров...
Допустим,
Code:
    * 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=длина строки


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


Top
   
PostPosted: Wed Sep 14, 2011 12:48 am 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 813
Лупа для увеличения шрифта не самый лучший вариант, просто предлагал как возможный временный выход. Плохо что нельзя фиксировать увеличиваемую область, иначе курсор портит всю работу.

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


Attachments:
t_edit_big.png
t_edit_big.png [ 9.99 KiB | Viewed 3530 times ]
Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 134 posts ]  Go to page Previous 15 6 7 8 9 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited