Материал из Tkabber Wiki
Содержание
Симптомы
Ткаббер, работающий под "иксами", падает при попытке показать какой-либо символ из "верхней части" Unicode.
Для начала включите отладочный лог, запустив Ткаббер примерно так:
$ tkabber 2>&1 >/tmp/tkabber.log
(на самом деле, достаточно запустить Ткаббер из X-терминала, без всякого перенаправления его потоков вывода, тогда ошибка будет просто видна в терминале).
Вызовите падение Ткаббера, затем смотрите получившийся лог. Если вы видите нечто вроде:
X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 45 (X_OpenFont)
Value in failed request: 0x22000ef
Serial number of failed request: 2263
Current serial number in output stream: 2264
то вам повезло (относительно), так как корень зла в данном случае известен — неправильная работа одного из компонентов X Window с TrueType-шрифтами.
Сразу стоит оговориться, что ни Ткаббер, ни Tk не имеют к происходящему никакого отношения, так как приведённая выше ошибка — это ошибка, сгенерированная в "недрах" Xlib.
Причины
Причин, судя по всему, две:
- "кривые" шрифты в системе;
- "кривая" работа сервера шрифтов c "прямыми" шрифтами.
Лечение
К сожалению, из-за многообразия комбинаций "X-сервер + сервер шрифтов" и их настроек однозначно работающее решение привести сложно. Поэтому ниже дана информация, которую вам понадобится:
- осмыслить,
- проверить на себе.
В конце концов, "спасение утопающих — дело рук самих утопающих" ©.
Шрифты?
В FAQ юниксового клона MSN Messenger — aMSN сказано, что проблема, скорее всего, в том, что в системе установлены шрифты, содержащие ошибки, и они выбираются сервером шрифтов раньше "правильных" шрифтов (в предположении что они есть) согласно сконфигурированной вами или стоящей по умолчанию схеме приоритетов.
Перевод этой информации:
- Проблема может быть в шрифте: попробуйте запустить aMSN с другим шрифтом (Tools → Preferences → Appearance).1
- Можете попробовать запустить aMSN с другой кодировкой (снова Tools → Preferences → Appearance, и utf-8 как самое безопасное решение).2
- Попробуйте очистить ваш кэш фонтов командой fc-cache -fv. Затем убедитесь, что ваша локаль (ваши переменные окружения LC_ALL или LC_CTYPE) установлены в системе (set | grep LC_) и удостоверьтесь, что соответствующие директории (что выводятся после =) имеются в каталоге /usr/lib/locale. Если их там нет, установите их в соответствии с требованиями вашей системы.
- Если же ничего из посоветованного не помогает, попробуйте выключать пути к фонтам (FontPath) в конфигах /etc/X11/XF86Config или /etc/X11/Xorg.conf, пока не выясните, какой путь ведёт к "кривому" шрифту, и затем пересоздайте файлы fonts.cache, fonts.dir и fonts.scale в том директории.
Примечания:
- Один из пользователей сообщил, что для него оказалось достаточным выбрать в качестве шрифтов Ткаббера Arial Monotype (из Microsoft Core Fonts), а ошибки у него были со шрифтом Tahoma.
- Естественно, в случае с Ткаббером шрифты и кодировки надо менять в его конфиге. Читайте в ЧаВо.
Сервер шрифтов?
А в этом архиве рассылки про exmh описывается решение проблемы, вызванной неправильной работой с TTF-шрифтами, реализованной в некоторых версиях X-серверов (по видимому, X11R6, если принять во внимание дату документа), которые сконфигурированы на раздачу шрифтов.
Предложенное решение — поставить специализированный сервер TrueType-шрифтов и сообщить об этом X-серверу.
Приведём конфигурацию:
- Поставить xfs-ttf + xfs;
Прописать в конфигурационный файл X-сервера:
FontPath "unix/:7100" # XFS FontPath "unix/:7110" # XFS-TTF
Закомментировать там все остальные вхождения FontPath.
Примечания:
- По-видимому, вместо связки xfs-ttf + xfs вполне можно использовать один xfs-xtt;
- Проверьте, чтобы сокет, на котором слушает ваш сервер шрифтов, совпадал с тем, что вы прописали в конфигурации X-сервера, не надо слепо копировать приведённый пример. Получить список активных сокетов можно, запустив netstat -l.
Дополнительные ссылки по проблеме
Если ничего не помогло, придётся вам отправиться в долгое странствие по интернету. Вот вам от нас на дорожку гуглюшка хлеба.