On 2003.04.29 at 10:04:43 +0600, Dimitry N. Naldaev wrote: > > > > > > А почему собственно говоря этого _нельзя_ сделать? > > > > Можно сделать. Сделай. И засабмить патч в XFree86. Если грамотно и > > аккуратно сделаешь, его примут и все пользователи будут говорить тебе > > спасибо, как сейчас говорят его Ивану Паскалю за Xkb. > > я не волшебник, я только учусь ;^) > у меня в общем-то есть представление, как в идеале это должно работать, но > xlib большой и я пока очень плохо орентируюсь, какое конкретно место у него > нужно патчить... Вот если бы Вы провели небольшую экскурсию на предмет того, > а что же происходит в недрах xlib когда его просят вывести некоторую строку > шрифтом -*-courier-*-*-*-*-*-*-*-*-*-*-*-*
Во-первых, xlib так никогда не просят. xlib просят 1. Найти шрифт, соотвествтующий этому шаблону. Он его находит, и возвращает некий идентификатор этого шрифта. 2. Вывести текст шрифтом с таким-то идентификатором. Во-вторых, речь шла не столько об xlib, сколько об Xt. Который имеет свой собственный механизм работы с ресурсами, надстроенный над xlib-овским. А Xaw и Motif надстраивают сверху еще один уровень. В-третьих есть еще xrdb, который умеет препроцессировать файл ресурсов. Видимо, самый простой путь борьбы - прикрутить к xrdb макрос FONT_ENCODING, который будет соответствующим образом раскрываться, в зависимости от nl_langinfo(CODESET). > мне кстати еще так же непонятно, за что отвечает файлик > /usr/X11R6/lib/X11/locale/koi8-r/XLC_LOCALE а так же где и как используется > информация из этого файлика В основном - за ввод с клавиатуры. Используется он в основном в XmbLookupString, которая преобразует присланный X-сервером код клавиши (KeySym) в строку, сответствующую смыслу этой клавиши в текущей локали. Можно запустить программку xev и потыкать в разные клавиши посмотреть как оно себя ведет. > еще есть идея не генерить кучу шрифтов для каждой кодировки из юникодового > шрифта, а делать соответствующую перекодировку на лету те вырезать > соответствующий фонтсет :-) из юникодовых шрифтов по мере надобности точно > так же, как это делается для ttf шрифтов... Не только для ttf. Для всех scalable, то есть и для Type1 тоже. Фактически все scalable шрифты на лету преобразуются в bitmap-шрифты нужного размера и кодировки. А bdf/pcf шрифты уже живут готовенькими > > > > Не понятно только почему об этом должна болеть голова у конечного > > > пользователя??? > > > > Потому что пока никто не предложил лучшего решения. > > ??? КАК не предложил?!! > > а положить более-менее работающий набор ресурсов в > /etc/X11/<имя локали>/app-defaults/ > при инсталяции системы? Предложением решения в данном случае является не абстрактная фраза "положить трам-там-там", а патчи к пакету, отправленные мейнтейнеру через Debian bug-tracking систему. Тут есть несколько дополнительных граблей, на которые можно наступить. Во-первых, XLFD (X Long Font Description) задает не только имя шрифта, но и размер. Поэтому для разных разрешений монитора шрифты должны быть заданы разные. А для xterm их должно быть вообще задано 6 штук - от tiny до huge. Во-вторых, некоторые любят шрифты -rfx-*, а некоторые -cronyx-*, А в дистрибутиве есть и те и другие. Поэтому предложить работающее решение довольно сложно. Призовая игра - предложить решение, работающее в том случае если вдруг любители разных шрифтов работают на одной машине. /etc/X11/имя-локали в этом случае не спасает. > > Ну, например из книжки Дж. Амстронга младшего "Секреты Unix". > > :-) Нууу... лежит эта книжечка прямо передо мной на столе. Вот только никак > не > могу найти, в каком месте там про переменную LANG написано :-\ Зачем там про LANG писать - Амстронг американец, его LANG=POSIX вполне устраивает. А вот про переменные environment и X-ресурсы там написано. >