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 вычисляются ПРАВИЛЬНО и шрифты не коробит.