[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: FYI: Xkb и locale
> > Если смотреть немного глубже, то надо заметить, что
> > - XLookup* интересует из XLC_LOCALE только параметр (точнее, там он назывется
> > "класс") encoding_name
> > - значение это класса должно быть KOI8-R или ISO8859-5 (case не важен),
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > поскольку эти названия "зашиты" в самой Xlib, как и таблицы перекодировки.
>
> Это неверно. Во-первых, case важен, так как при поиске соответствующей Xlocale
> она берется из locale.dir без tolower или toupper, а там
> koi8-r ru_RU.KOI8-R
> то есть Xlocale просто не будет установлена (это легко проверить);
Я говорил немного о другом.
О "значении класса" encoding_name. Это строчка из соответствующего файла
XLC_LOCALE, типа
encoding_name KOI8-R
Так что, на поиск самого файла через locale.dir она никак влиять не будет.
Но насчет "сase" спорить не буду. Правда, по другой причине.
Я опять немного поторопился. Если говорить точнее, то...
- для XLookup* case НЕ важен, поскольку сравнение (это в файле XKBCvt.c)
делается case-insensitive.
- а процедурки для XmbLookup (это уже imConv.c) сравнивают это значение
со своими таблицам уже простым strcmp. Так что, в это случае - важен.
Короче, будем считать, что важно.
Еще раз напоминаю, это касается "внутренностей" файла XLC_LOCALE. То есть,
> во вторых указание iso8859-5 не обязательно, там конструкция типа
> if KOI8-R then
>
> else
И с этим буду спорить :-).
Если мы говорим об одном и том же месте из Xlib, то перед этим
"там конструкция типа"
case sCyrillic:
Где sCyrillic получится только если в encoding_name окажется именно
KOI8-R или ISO8859-5.
Я прошу прощения. Конечно, это мелочи и их можно было обсудить приватно.
Для всех остальных хочу только подчеркнуть...
- для каждой locale в "иксах" есть файлик XLC_LOCALE
- в этом файле есть строчка encoding_name <название этого "енкодинга">
- так вот, это "название" сравнивается со внутренними таблицам Xlib
и, по нему выбирается таблица для перкодировки двубайтных кодов от XKB
в однобайтные коды символов.
Поэтому, "название" encoding_name должно быть одно из тех, которые
"зашиты" в Xlib. Case важен ;-).
P.S. А если добавлять новые таблицы в Xlib, то какие им давать esc-sequence?
Такого же типа, как и для koi8?
--
Ivan U. Pascal | e-mail: pascal@tsu.ru
Administrator of | Tomsk State University
University Network | Tomsk, Russia