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

[PATCH to gdk] поддержка корректного отображения русскоязычных элементов GUI при отсутствии /etc/gtk/gtkrc.ru



 Здравствуйте!

 Не все адресаты данного письма знакомы со мной, но каждого из адресатов
этот патч заинтересует.

 Данный патч - это IMO первая попытка кого-либо исправить положение дел с
gtk-шным софтом. Этот патч исправляет ошибку в библиотеке gdk (которая
используется библиотекой gtk) которая проявлялась как усечение русскоязычных
строк когда (умышленно и правильно) удален /etc/gtkrc/gtkrc.*
 Рекомендуется прочитать описание ниже - в нем содержится мой взгляд на
правильный способ конфигурирования gtk.

Введение: существует 2 способа конфигурации бибиотеки gtk посредством 
конфигурационных файлов при использовании корректной руссификации X, каждый
из которых имел определенные недостатки. 
1) Способ, навязываемый разработчиками gtk - использование /etc/gtk/gtkrc.ru,
поставляемым с самим gtk. В этом файл определяется fontset используемый 
библиотекой gtk. В случае использования этого способа невозможно выбрать
никакой другой шрифт для использования библиотекой gtk из gnome control 
center. Использование fontset для русского в gtk я бы назвал идиотизмом - так 
как fontset - это по определению (см XCreateFontSet(3X)) - шаблон в XLFD
только для одного шрифта (в простейшем случае xlib просто будет прицеплять
charset данной локали к этой маске, и выбирать первый шрифт отвечающей этой
маской) - то есть как минимум жирность и высота шрифта может контролироваться
/etc/gtkrc/gtkrc.ru - а остальные параметры (семейство шрифта - т.е. будет
ли это Courier или Helvetica) зависят от положения шрифта во внутреннем списке
шрифтов xlib! Мораль - /etc/gtkrc/gtkrc.ru должен быть удален (и я буду 
добиваться этого от разработчиков gtk).

2) способ - является антагонизмом к первому - заключается в удалении 
/etc/.gtkrc/gtkrc.ru Ж:) До наложения данного патча использование этого 
способа приводило к усечению концов русскоязычных строк во многих элементах
интерфейса - это происходило вследствие ошибки в gdk - (неправильное 
измерение ширины текста в функции gdk_text_width_wc). Этот патч исправляет
данную ошибку - в результате чего можно без проблем пользоваться идеологи-
чески корректным для кирилицы вторым способом.
 Данный патч - для gtk-1.2.5. Он затрагивает только библиотеку gdk и не вносит
никакой бинарной несовместимости с существующими приложениями. При 
распространении update'ов достаточно обновить libgdk*.so
 Практически наверняка данный патч будет интегрирован в gtk-1.2.9 (я не вижу
причин для возможного сопротивления со стороны разработчиков gtk).

Данный патч находится здесь:
http://www.hippo.ru/~hvv/patches/no-patched-version-yet/gtk-textwidth-wc-fix.patch

Я настоятельно прошу авторов дистрибьютивов, которые интегрируют этот патч в
свой дистрибьютивы, прислать мне весь комплект компактов дистрибьютивов, в
которых этот патч будет использован (желательно коробочную версию) (в
частности, debian potato (с исходниками) + non-free/russian).  В принципе,
можно не ограничиваться дистрибьютивами :) Адрес:
Россия, 443002, Самара, просп. Ленина-2а, 149, Харчеву Владу.

По всем вопросам о патче и сотрудничестве обращайтесь по адресу hvv@hippo.ru.

Форвардинг данного письма целиком в раличные списки рассылки приветствуется.

 Best regards,
  -Vlad

Reply to: