|
|
ru.unix- RU.UNIX ---------------------------------------------------------------------- From : Ivan Pascal 2:5020/400 08 Jun 2002 15:16:28 To : Vasily Korytov Subject : Re: fvwm2 and cyrillic titles --------------------------------------------------------------------------------
Vasily Korytov wrote:
>
> >>>>> "YO" == Yuriy Osmerkin writes:
>
> YO> Странно это.
>
> Еще как странно! =((
>
> YO> Что у тебя за ось, дистрибутив?
>
> Все это происходило на самосборной GNU/Linux. Уже происходи*ло* --
> согласно совету доброго человека, это вылечилось путем апгрейда fvwm и
> сборки его с нужной опцией (но все-таки, повторюсь, и без этого все
> отлично работало в свое время).
>
> Однако, желание покопать, что это было, у меня не пропало. А вот идей
> конструктивных нет. =((
Hу, я могу рассказать, тем более, что сам к этому руку приложил.
Hо это все достаточно сложно и не очень интересно.
Заголовки передаются из прикладной программы в прогамму - window
manager.
С заголовками в ascii особых проблем нет, они просто передаются
как обычная строка (массив байтиков), а заголовки в национальных
кодировках надо передавать в каком-нибудь формате, который явно
подскажет WM - в какой кодировке эта строка (и каким фонтом ее
рисовать).
В иксах до недавнего времени было три таких формата
- STRING, просто строчка байтиков без указания кодировки. По иксовым
же стандартам, в таком формате можно передавать только ascii и latin1 -
"европейские латинские" буквы.
- COMPOUND TEXT (или CTEXT) - сложный формат, в котором специальными
esc-последовательностями обозначаются места перехода от одной кодировки
к другой
- еще один формат, где название кодировки передается в дополнительной
строчке. Hо этот практически не используется, так как он не лучше CTEXT,
а для его использования все приложения должны знать как можно больше
названий национальных кодировок.
Hе так давно добавился еще юникодный формат UTF-8.
До недавнего времени (да и до сих пор еще) многие программы, в том
числе и многие WM, или вообще писались без учета существования
многочисленных национальных кодировок, или имели их поддержку как
"опциональную", то есть ее надо выбирать явно при сборке.
То, что в этих приложениях русский показывался правильно,
обеспечивалось целым рядом "хаков", которые заставляли приложения
принимать koi8-r за latin1 и не пытаться для него использовать
навороченные форматы.
В данном случае это означало, что русские заголовки предавались
в простейшем формате STRING.
Постепенно, от версии к версии, в xfree это дело "причесывается".
По мере отлаживания механизма поддержки национальных кодировок,
старые "хаки" вычищаются.
Поэтому и обнаруживается, что некоторые программы (по крайней мере
в default'ной сборке) даже не пытаются использовать те механизмы,
что есть в иксах, и тупо считают все, что предаётся от приложения
к приложению, кодированым в ascii или latin1.
То, что вы наблюдали означает, что ...
- приложение, увидев, что заголовок в koi8-r, закодировало его в
CTEXT (в предыдущей версии, оно просто обманывалось "хаком" и
считало, что передает голимую латиницу).
- а вот fvwm2 даже не пытался проверить формат сообщения, считая,
что кроме STRING ничего другого быть не может. И не пытаясь
"расшифровать" заголовок, тупо выводил его. Вот ошметки esc-sequences
вы и наблюдали.
Переособрав fvwm, вы сделали его достаточно умным, чтобы
распознавать навороченные форматы и извлекать из них реальный текст
в нужной кодировке. Потому мусор и исчез.
-----
Ivan Pascal | pascal@tsu.ru
Administrator of | Tomsk State University.
university network | Tomsk. Russia.
--- ifmail v.2.15dev5
* Origin: Tomsk State University (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix/152878dcfe7e.html, оценка из 5, голосов 10
|