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

Re: Re: windows-1251 против microsoft-cp1251(было: Н асчетCYR



Eugene B. Byrganov <E.B.Byrganov@inp.nsk.su> wrote:

>Более того, тот KOI8 который в Xlib далеко не KOI8-R, а вполне
>входит в концепцию ISO, так как не занимает диапазон C1 (0x80-0x9f).
>
>-))) И тут мне пришла мысль, а ведь в Xlib-е под символы отводится
>всего 96 знаков, и значит часть букв из диапазона C1 в 1251 невозможно
>ввести? Значит полноценную поддержку 1251 невозможно сделать,
>и сербы не смогут ее использовать?


 Здесь ситуация такая  (как я ее понимаю) :

 ВЫВОДИТЬ (рисовать) текст в окне можно любымы символами
шрифта, хоть даже располагающимися в диапазоне 0x80-0xA0.
Х Window все честно отрисует.

 Другое дело, что арибуты окон, например заголовок - это т.н.
"текстовые свойства" окна X которые прошли через Xlib и
закодированы в довольно кривом формате CTEXT (Compound
Text), который берет свое начало от ISO-2022. А в нем
действительно ЗАПРЕЩЕНО под символы занимать кодовые
позиции 0x80-0xA0 (С1). Поэтому в CP866 в X работать по-видимому
нельзя в принципе. Известна фишка с буквой "Ы" которая в CP866
приходится как раз на CSI (0x80 + ESC).

 В этом CTEXT также происходит общение между программами.
Собственно, частный случай - общение программы с Window
Manager-ом. Но также и общение программ между собой.
Так что Cut&Paste тоже работать с C1 не будет.

 С клавиатуры насколько я понимаю символы из C1 тоже нельзя
будет ввести, даже если они isalpha().

 Но вобщем в "Windows-1251" не так уж много попадает на C1 :
лапки и кавычки (верние и нижние), знак (тм), Гг, Кк с ударением,
Ль, Нь и т.д. Братушкам сербам не свезло.

x80 <U0402> CYRILLIC CAPITAL LETTER DJE (Serbocroatian)
x81 <U0403> CYRILLIC CAPITAL LETTER GJE
x82 <U201A> SINGLE LOW-9 QUOTATION MARK
x83 <U0453> CYRILLIC SMALL LETTER GJE
x84 <U201E> DOUBLE LOW-9 QUOTATION MARK
x85 <U2026> HORIZONTAL ELLIPSIS
x86 <U2020> DAGGER
x87 <U2021> DOUBLE DAGGER

x89 <U2030> PER MILLE SIGN
x8A <U0409> CYRILLIC CAPITAL LETTER LJE
x8B <U2039> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
x8C <U040A> CYRILLIC CAPITAL LETTER NJE
x8D <U040C> CYRILLIC CAPITAL LETTER KJE
x8E <U040B> CYRILLIC CAPITAL LETTER TSHE (Serbocroatian)
x8F <U040F> CYRILLIC CAPITAL LETTER DZHE
x90 <U0452> CYRILLIC SMALL LETTER DJE (Serbocroatian)
x91 <U2018> LEFT SINGLE QUOTATION MARK
x92 <U2019> RIGHT SINGLE QUOTATION MARK
x93 <U201C> LEFT DOUBLE QUOTATION MARK
x94 <U201D> RIGHT DOUBLE QUOTATION MARK
x95 <U2022> BULLET
x96 <U2013> EN DASH
x97 <U2014> EM DASH

x99 <U2122> TRADE MARK SIGN
x9A <U0459> CYRILLIC SMALL LETTER LJE
x9B <U203A> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
x9C <U045A> CYRILLIC SMALL LETTER NJE
x9D <U045C> CYRILLIC SMALL LETTER KJE
x9E <U045B> CYRILLIC SMALL LETTER TSHE (Serbocroatian)
x9F <U045F> CYRILLIC SMALL LETTER DZHE
xA0 <U00A0> NO-BREAK SPACE

Украинские и белорусские буквы попадают все.
Позиции 0x88 и 0x98 в "Windows-1251" не определены, непонятно
почему. Например в "Windows-1252" - определены.

--
-=AV=-