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

Re: X'ы, " ескейп-секвесы" и ISO-IR-111




> Иван!
> Ваше письмо застало меня во время блаженного отдыха :-), но страх, что
> появится еще одна кодировка xfree заставил взяться за клавишу.

  ОК.
  Может быть я слишком резко выразился на тему - "убрать", "выкинуть"
и т.п.

  Просто, после изучения той части Xlib, которая работает на ввод
символов, у меня созрело убеждение, что все это настолько криво
(в том числе и сам стандарт на CTEXT).
  И захотелось хотя бы "стандартной" esq-seq для koi8.
И я ее нашел.

  На самом деле, я не предлагаю вообще убрать из "локалей" koi8-r
и koi8-u. Хотя бы потому, что koi8-r уже достаточно "проросла"
во многих местах и заменить ее на что-то другое - просто утопично.

  Все что я реально хочу - упростить некоторые "внутренности" Xlib.
Например так...

1. Все-таки добавить новый encoding_name. Пусть это будет KOI8 (без
суффиксов). С sequence "\033-@".
  Ну поверьте, что с ней Xlib справиться гораздо корректнее, чем
с существующей.

2. В imConv.c оставляем эту encoding_name с ее sequence и единую
таблицу для koi8-r и koi8-u. (Не пойму - зачем держать две таблицы,
отличающиеся тем, что во второй на три буквы больше. Все равно, если
"локализовать" систему под koi8-r, то ни в раскладке клавиатуры, ни
в фонтах эти бувы просто не втретятся. Никакого конфликта я не вижу).

2.1 Кстати, процедурки для XKB (XKBCvt.c) зачем-то держат собственную
поlпрограммку  для конвертации koi8-r, а для iso8859-* используют
GetCharCode. Эта же GetCharCode прекрасно может выдать koi8-r и koi8-u
(Вашими стараниями). Тем более странно, что процедурка из XKBCvt
использует ту же таблицу и тот же locale_code, что и GetCharCode.

3. В "CT-парсере" (lcCT.c) также вместо koi8-r/koi8-u оставляем KOI8
со "стандартной" sequence. (Главное, что она уже выделена и в будущем
конфликта с вновь добавляемыми чарсетами не будет).

4. Все остальное (locale.dir, locale.alias) остается примерно такое же.
   Только для koi8-r XLC_LOCALE будет выглядеть примерно так
   (следите за суффиксами)
----
fs1 { charset KOI8:GR
      font    KOI8-R:GR}
...
encoding_name KOI8
...
cs1 { side          GR:Default
      ....
      ct_encoding   KOI8:GR }
----
а для koi8-u
----
fs1 { charset KOI8:GR
      font    KOI8-U:GR}
...
encoding_name KOI8
...
cs1 { side          GR:Default
      ....
      ct_encoding   KOI8:GR }
----

  И все!

P.S. Извините, что нарушил ваш отдых. :-)
-- 
 Ivan U. Pascal         |   e-mail: pascal@tsu.ru
   Administrator of     |   Tomsk State University
     University Network |       Tomsk, Russia