[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