[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: XFree 4.0 released



> To Ivan Pascal:
> Всю ночь вчера смотрел Ваши последние патчи. Если есть время --
> расскажите, пожалуйста. Как здорово, что Вы занялись XFree!

  А что рассказывать?
Работа недоделана.
(Dawes объявил, что 4.0 будет в районе 2 марта и попросил присылать только
"багфиксы", а с новыми "фичами" пока подождать. Если бы я знал, что они
провозятся еще почти две недели, то может быть и успел бы.)

  Моя главная цель была - по возможности убрать из библиотеки все данные
относящиеся к конкретным locale - esc-sequences, таблицы перекодировки и т.п.
  Тогда добавление новых локалей (пусть даже koi8-sovsem_ne_koi :-)
стало бы частным делом юзеров, или точнее - составителей дистрибутивов.

  Все, что нужно было бы - составить XLC_LOCALE, нарисовать фонты, ну и
какую-нибудь внешнюю табличку перекодировки keysym в символы.
Естественно - еще и прописать их вовсякие locale.dir, конфиги и т.п.,
но это гораздо проще, чем править каждый раз библиотеки.

  То, что я успел сделать...
Самое забавное, что большие патчи никаких "видимых эффектов" не имеют,
а вот мелкие (кое-где в одну строчку/слово) действительно "фиксят баги".
  Исправил - 
- баг с совместным использованием XLookup XmbLookup
- "контролизация" должна теперь нормально работать (при включенном xkb)
- работу Caps_Lock (хотя в koi8 она и так, кажется, работала)
  Еще исправил баг XmbTextPropertyToTextList, но где что раньше не работало -
не знаю.

  А большие патчи...
- Убрал все лишнее из XKBCvt (то, что обеспечивает работу XLookupString).
Теперь все новые кодировки добавляются в одном месте (imConv), хотя я их
и оттуда уберу :-) попозже.
- подправил Generic конверетеры. Ночего нового это не добавило (разве что
чуть-чуть ускорило их рпаботу, но кого это волнует при вводе с клавиатуры :).
Просто мне протвно было смотреть на то безобразие, что там нагородили.
- переписал заново Default конвертеры. Теперь для однобайтных кодировок
(наших) будут работать они (а не Generic).
  Видимый эффект только один - теперь мой любимый "хак" (имени Канавина)
должен работать всегда и везде :-)))
(Кстати. Если строго следовать иксовой локали "С", то допустимыми являются
только ascii. Но конверторы для "C" плевали на XLC_LOCALE и работали как для
iso8859-1. После моих правок для всех локалей, в том числе и C данные берутся
из файлов локали. У меня было сильное желание так все и оставить.
Результатом было бы то, что - в большинстве случаев не работала бы "хакерская
руссификация", когда локаль берется "C", а вместо кодов Cyrillic используются
однобайтные коды (хотя наверное быстро нашлись бы умельцы, которые и это бы
обошли). В общем - в последний момент "сердце дрогнуло" и я подправил локаль
"С", чтобы она допускала и восьмибитные коды :-)
- Переписал конвертеры CTEXT из lcCT. Вообще-то, для koi8 они не используются.
Но Bruno Haible использует их как составную часть для "уникодных" конвертеров.
А они оказались весьма кривыми при работе с "нестандртными esc-sequences"
(в частности с koi8-r, koi8-u). А кроме того не воспринимали esc-sequence
для UTF-8. (Самое приятное для меня было - отзыв Bruno - "после того как вы
их переписали, я наконец-то понял - как они работают" :-).

  Вот пока и все, что я успел. Заготовки следующих патчей есть. Начну
понемногу посылать. Надеюсь в каком-нибудь 4.1 (4.0.0.0.0.1 :-) они
уже будут.

  Что касается Unicode...
Bruno его сделал (кое-что "по мелочи" он взял у меня).
Теперь если в locale указан encoding_name UTF-8, то
  XmbLookupString - выдает utf-8
  XwcLookupString - выдает ucs-2
  XLookupString - должна давать utf-8 (я не проверял)
Теперь осталось объяснить писателям тулкитов, что utf-8/ucs-2 можно брать
прямо от Xlib, а не городить собственные конвертеры :-)

  К сожалению, Bruno все таблицы перекодировки UCS из/в конкретные чарсеты
засунул в библиотеку. Убедить его сделать это в виде внешних таблиц/модулей
мне не удалось. Он возражает, что
- в "расшареной библиотеке" они будут грузиться в память единожды
(тогда как внешние таблицы придется держать в каждом приложении)
- места занимать меньше (это правда, он сделал очень компактные таблицы)
- а что касается гибкости при добавлению новых чарсетов, он сказал, что
"это же open source, кому надо - допишут Xlib и пресоберут". :-)

P.S. К сожалению, мои впечатления о 4.0 не очень радужные.
Во-первых, она не поддерживает мою "видюху" (как и многие другие).
Во-вторых, они много нового понапихали в Xt/Xaw, а отладить не успели -
все занимались вылизыванием видео-драйверов. Так что - баги будут заметны.
P.P.S Кстати, тут в ньюсах проскочило утверждение, что "антиалиасинга"
в 4.0 нет и не будет.
  Так вот. Он там есть, но не знаю - насколько работоспособный.
По умолчанию он не компилирутся ни в сервер, ни в библиотеку. Коментарии
типа "это пока не включаем, надеюсь - временно".
-- 
 Ivan U. Pascal         |   e-mail: pascal@tsu.ru
   Administrator of     |   Tomsk State University
     University Network |       Tomsk, Russia