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-ресурсы там написано.

> 

Ответить