HOWTO GTK1 with UTF8

Материал из Википедии - свободной энциклопедии.

Внимание! Прилагающиеся файлы были обновлены! Возможно вам придётся скачать их заново!

Содержание

Вступление

Стоит начать с того, что после дружного перехода на Xorg версии 6.8.2 с версии 6.8.0 абсолютно у всех пользователей с кодировкой ru_RU.UTF-8 начали вылазить баги в отображении русских букв - либо квадратики либо зючки. И начали люди биться над решением задачи, и в конце концов пользователи Fedora 2 надавили на девелоперов Redhat, и те, проведя исследования, нашли причины и способы устраниея проблем.

Проблемы

  • Неверно работает локаль ru_RU.UTF-8 во всех версиях Xorg выше 6.8.0
  • Неверно вычисляется метрика и resX + resY для экранного разрешения 1280x1024
  • Xorg "забил" на решение этих двух проблем в принципе - баг в багзилле есть уже полтора года
  • Неверно работают метрики непропорциональных TTF шрифтов (Arial итд)

Быстрое решение

Чтобы быстро пофиксить проблему, не вникая в суть вопроса, установите ебилд gtk1-utf8-fix-1.0.ebuild скачав его тут https://fantoo.ru/svn/app-i18n/gtk1-utf8-fix/

Затем запустите etc-update или dispatch-conf для обновления некоторых файлов в /etc/gtk

после этого убираем "вредные" файлы

cd ~
mv .gtkrc .gtkrc.old
mv .gtkrc.mine .gtkrc.mine.old

ВСЁ! Проверяем, запуская ваши приложения:

xmms
gmplayer
scirbus
ardour

Исследование

Для начала нам необходимо понять суть происходящего.

проанализировав содержимое каталога

ls /usr/lib/X11/locale/ | grep UTF-8

мы получим список:

el_GR.UTF-8
en_US.UTF-8
ja_JP.UTF-8
ko_KR.UTF-8
pt_BR.UTF-8
th_TH.UTF-8
zh_CN.UTF-8
zh_HK.UTF-8
zh_TW.UTF-8

Ага! Кодировки ru_RU.UTF-8 просто НЕТ!!! на неё откровенно забили, оставив бедным "руссиянам" на пропитание только en_US.UTF-8 Точка.

Далее, заглянув в каталог

ls /etc/gtk | grep UTF-8

мы не найдём ничего... попробуем по другому

ls /etc/gtk | grep ru

и увидим

gtkrc.ru.koi8-r
gtkrc.ru_RU.iso88595

т.е. две никому не нужные кодировки :(

Теория

  • Необходимо положить локаль ru_RU.UTF-8 в /usr/lib/X11/locale/
  • Потом заменить файлы в каталоге /usr/lib/X11/locale/
compose.dir
locale.alias
locale.dir

на другие, более "правильные, в которых уже указана ru_RU.UTF-8

  • Потом положить в /etc/gtk правильно названный файл с "правильно" прописанными шрифтами, такой как:
/etc/gtk/gtkrc.iso-10646-1

и создать симлинка на него:

ln -s /etc/gtk/gtkrc.iso-10646-1 /etc/gtk/gtkrc.ru_RU.UTF-8
ln -s /etc/gtk/gtkrc.ru_RU.UTF-8 /etc/gtk/gtkrc.ru
  • установить пакеты corefonts и terminus-font
  • рестартовать Xorg.

Решение



Выполняем:

su -
cd /usr/lib/X11/locale/
mkdir /usr/lib/X11/locale/ru_RU.UTF-8
cp -v /usr/lib/X11/locale/en_US.UTF-8/* /usr/lib/X11/locale/ru_RU.UTF-8/
rm /usr/lib/X11/locale/ru_RU.UTF-8/XLC_LOCALE

далее скачиваем файл

http://chronos.nsu.ru/fantoo/wiki/gtk1_utf8/XLC_LOCALE (ФАЙЛ БЫЛ ОБНОВЛЁН!)

и копируем его в

cp -v XLC_LOCALE /usr/lib/X11/locale/ru_RU.UTF-8/

теперь удаляем "неправильные" файлы:

rm /usr/lib/X11/locale/compose.dir
rm /usr/lib/X11/locale/locale.alias
rm /usr/lib/X11/locale/locale.dir

далее скачиваем файлы

http://chronos.nsu.ru/fantoo/wiki/gtk1_utf8/compose.dir
http://chronos.nsu.ru/fantoo/wiki/gtk1_utf8/locale.alias
http://chronos.nsu.ru/fantoo/wiki/gtk1_utf8/locale.dir


и копируем их в:

cp -v compose.dir /usr/lib/X11/locale/
cp -v locale.alias /usr/lib/X11/locale/
cp -v locale.dir /usr/lib/X11/locale/

Xorg теперь настроен!

....Теперь мучаем GTK1+

далее скачиваем файл

http://chronos.nsu.ru/fantoo/wiki/gtk1_utf8/gtkrc.iso-10646-1

и копируем его в

cp -v gtkrc.iso-10646-1 /etc/gtk

Теперь создаём симлинки:

ln -s /etc/gtk/gtkrc.iso-10646-1 /etc/gtk/gtkrc.ru_RU.UTF-8
ln -s /etc/gtk/gtkrc.ru_RU.UTF-8 /etc/gtk/gtkrc.ru


ну и последний шаг: заходим в домашний каталог и выполняем:

cd ~
mv .gtkrc .gtkrc.old
mv .gtkrc.mine .gtkrc.mine.old


Последний шаг - установка шрифтов:

emerge corefonts
emerge terminus-font

далее редактируем /etc/X11/xorg.conf

в секции Section "Files" надо в начале добавить 2 строчки

FontPath     "/usr/share/fonts/terminus"
FontPath     "/usr/share/fonts/corefonts"


Самое время перезапустить Xorg ...

Проверка

... и оценить полученные результаты.

Проверять будем в xmms и mplayer

запускаем xmms в любом Xовом терминале:

amax@localhost ~ $ xmms
Message: device: default
Message: fmt 5, channels: 2


не должно вылазить никаких ошибок.

заходим в настройки xmms устанавливаем в трёх инпутах шрифт:

-xos4-terminus-medium-r-normal-*-*-120-*-*-c-*-iso10646-1

и включаем обе галочки:

  • Use fontsets
  • Use X font

в случае если xmms у вас собран с патчем RUSXMMS то при открытии File Selector там должны быть русские буквы в именах каталогов и песен, а после добавления в плейлист вы получите нормальные, автоматически перекодированные теги

ВЫ МОЖЕТЕ взять ebuild ТУТ

https://fantoo.ru/svn/media-sound/xmms/

чтобы установить полное дерево ebuils рекомендуется прочитать http://wiki.fantoo.ru/index.php/HOWTO_Setup_Overlays


Далее. если мы запустим gmplayer в Xовой консоли мы тоже не должны увидеть никакой ругани.

amax@localhost ~ $ gmplayer
MPlayer 1.0pre7try2-3.4.4 (C) 2000-2005 MPlayer Team
CPU: Advanced Micro Devices Athlon 64 Clawhammer (Family: 8, Stepping: 8)
Detected cache-line size is 64 bytes
MMX2 supported but disabled
SSE2 supported but disabled
3DNow supported but disabled
3DNowExt supported but disabled
CPUflags:  MMX: 1 MMX2: 0 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 0
Скомпилировано для x86 CPU со следующими расширениями: MMX SSE




vo: X11 running at 1280x1024 with depth 16 and 16 bpp (":0.0" => local display)
85 аудио & 196 видео кодеков
Установка поддержки LIRC...
mplayer: could not connect to socket
mplayer: No such file or directory
Неудачное открытие поддержки LIRC!
Вы не сможете использовать Ваш пульт управления

Примерно такой вывод. Во всех меню должны быть НОРМАЛЬНЫЕ русские буквы!

Примечание: необходимо чтобы mplayer был скомпилирован с USE=utf8

Заключение

Очень тревожит тот факт что решение этой проблемы на официальном http://forums.gentoo.org форуме так и не было найдено... 
делайте выводы, джентельмены..

Дополнительно

При установке экранного разрешения 1280x960 и 1280x800 характеристики resX и resY вычисляются ПРАВИЛЬНО и шрифты не коробит.

Hosted by uCoz