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

Re: Баги в Xlib.



Hi!

>   По ходу своей работы я обнаружил уже несколько багов в Xlib, которые
> так или иначе могут мешать "вводу русских букв" или вообще - работе
> приложения в локали koi8-r.
Очень рад появлению столь толковых комментариев к Xlib (Как и предыдущих). 
Надеюсь они появятся так же на Web-сервер.


> 1)  Не "открывается" Input Method.
...
>   Решение: Вообще-то надо немного модифицировать логику Xlib. И если
> уж нет сервера, то пытаться обойтись "библиотечным" методом.
>   А пока самое простое решение - сделать в koi8-r файл Compose, пусть даже
> пустой.
>   Кстати, это уже сделано (пустые Compose во всех локалях, где нет реальных
> Compose) в каком-то из последних релизов XFree. Хотя это не решение проблемы,
> а "обход".
По хорошему Compose в любом случай пригодится, я например его сделал
для ввода 'ё', '╘' и т.п. Может стоит его отдать в XFree?

> 3) Несчастные GLGR чарсеты.
... 
>   Вторая беда в том, что судя по всему "конвертеры" в Xlib писались
> без учета этих "экзотических" чарсетов и, зачастую, не рассматривают
> случай когда side == GLGR.
>   Ну а что происходит с такими чарсетами (точнее символами из чарсета)
> зависит от фантазии автора конкретного конвертера. Он может их вообще
> выкинуть, или посчитать "по умолчанию" GR и "вклеить" им старший бит
> (это то для koi8 не страшно), или наоборот - интерпретировать их как GL
> и "вычистить" стрший бит (тогда koi8 превратится в "транслит").
> 
>   Я обнаружил, что как-раз так неправильно ведет себя перекодировщик
> в COMPOUND_TEXT, но я никак не мог найти - где это проявляется.
> 
>   И вот недавно Alex Tutubalin пожаловался, что у него при переносе
> "selection" из XEmacs в Netscape Navigator 4.7 в русских буковках
> "обрезается восьмой бит".
>    Судя по всему - он как раз "напоролся" на этот баг.
Я могу подтвердить, у меня в NN3.x при перенося из одного окна
в другое с помощью мыши было тоже самое, но после добавления 
приведенного XLC_CHARSET_DEFINE все стало ок. Я все больше убеждаюсь,
что все так называемые баги NN3.x - это проблема Xlib.

> 5) Не всегда срабатывает "хакерский метод" с подменой locale С на koi8-r.
> 
...
>   Дело в том, что он не всегда срабатывает (хотя я думал, что он должен
> помогать во всех случаях).
Да, похоже не всегда. После подмены заработал nedit (собранный с Мотиф
и libc5 на Linux-e), но NN3 (так же собранный) отказался - те же виджеты,
что на Irix 6.5 нормально заработали с русским  (т.к. правильно 
берется locale), по прежнему используют шрифт ISO8859-1 -))). 
К сожалению NN3 не пересоберешь.

-- 

                      С наилучшими пожеланиями, Евгений Бырганов.
                      Best regards, Eugene Byrganov.

  mailto:E.B.Byrganov@inp.nsk.su
  work - http://www.inp.nsk.su/