[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
XLC_LOCALE. Окончание.
Остается секция XLC_FONTSET.
Сразу скажу, что с этой частью я практически не разбирался.
Поэтому синтаксис могу рассказать точно, а вот интерпретация - в основном
мои догадки.
Секция состоит из блоков "описания фонт-сетов" - fs<цифра> {...}
В каждом блоке обязательно должна быть пара параметров
charset
font
Судя по всему, указывает - какой чарсет - каким "фонтом" можно рисовать.
Здесь charset - имя "внутреннего" чарсета, который встречается в описаниях
кодесетов. А в font опять же пишется название чарсета, но это - то, что
указывается в имени фонта.
То есть, вполне может быть такое сочетание
charset ISO8859-1:GL
font KOI8-R:GL
Что означает, что - символ принадлежащий чарсету iso8859-1, если он из
левой половины таблицы, то его вполне можно рисовать фонтом, у которого
encoding - koi8-r (естественно, левой же половиной фонта).
Поэтому, как правило, для кодировок типа iso8859 описываются два набора вида
fs0 {
charset ISO8859-1:GL
font KOI8-R:GR; ISO8859-1:GL
}
fs1 {
charset KOI8-R:GR
font KOI8-R:GR
}
Напомню, что в этом же XLC_LOCALE все символы "раскидываются" на два
кодесета. (Кстати, если не ошибаюсь, фонтсеты как правило соответствуют
кодесетам. То есть, сколько кодесетов, столько и фонтсетов. Кодесеты
определяяют все возможные наборы кодов. А фонтсеты - способ вывода для
каждого кодесета. Хотя связь между конкретным кодесетом и конкретным фонтсетом
может быть неочевидная).
Итак. В XLC_LOCALE для кодировок типа iso8859 существуют два кодесета - GL
и GR. Причем первый классифицирует свои коды как char'ы чарсета ISO8859-1:GL,
а второй - как char'ы из соответствующего национального чарсета. Например -
KOI8-R:GR.
Соответственно, вышеуказанные фонтсеты говорят о том, что
- символы из кодесета GR надо выводить фонтом у которого encoding - koi8-r
- а символы из GL можно рисовать как тем же фонтом, тоак и фонтами с
encoding iso8859-1 (хотя можно было бы и любым другим)
Ну и еще немного о синтаксисе.
Со словом charset может быть связан блок, в которм может быть два слова
name
Понятно, что это то же самое имя, которое просто после charset.
udc_area <диапазон>
Как это интерпретируется - не знаю. Могу сказать только, что udc -
User Defined Characters.
А слово font может быть расширено блоком со словами
primary <encoding> [<диапазон>]
substitute <encoding> [<диапазон>]
vertical_map <encoding> [<диапазон>]
vertical_rotate "all" или <диапазон>
Что это означает - примерно можно догадаться. Здесь encoding - то, что
указано в имени фонта. Указание диапазона может отсутствовать.
Чуть не забыл, что в самой секции XLC_FONTSET помимо блоков fs может быть
еще две инструкции.
on_demand_loading <true/false>
Сами догадайтесь - чего loading и что является demand'ом.
object_name "generic"|"default"
А вот это очень замечательная строчка. Она позволяет управлять работой Xlib.
Дело в том, что в Xlib есть несколько наборов "конвертеров" (между различными
представлениями - mb, wc, ct).
default - очень простой, для кодировок типа iso8859 (как я уже говорил, для
таких кодировок практически не отличаются mb, wc и ct).
generic - "общие" конверторы для самых замысловатых систем кодирования.
Естественно, generic - более "тежеловесный" и более "глюкавый".
Так вот, object_name позволяют явно указать в XLC_LOCALE - какие конверторы
использовать для этой локали - "тупой, но шустрый" default или "умный, но
медленный" generic.
К сожалению, этот параметр используется только "подсистемой вывода" -
output methods. А для input methods такого ключика не предусмотрено.
А он там так нужен! "Но это уже другая история..." :-)
Кстати, хочу напомнить, что вся эта секция XLC_LOCALE имеет смысл только
для набора фонтов связанных с Output Method/Output Context.
То есть их используют процедуры типа X[mb|wc]DrawString и X[mb|wc]DrawText,
которые ссылаются на соответствующий OC.
"Старые" функции для вывода буковок - XDrawString, XDrawText являются
"независимыми от locale". То есть, для них эта секция смысла не имеет.
И они рисуют тем фонтом, который "первый попадется" (если только в "маске
имени фонта" не указан явно енкодинг).
Вот почему рекомендуется директорию с кириллическими фонтами ставить первой
в font path.
На этом все. Больше не буду вас "загружать". Если есть вопросы - попытаюсь
ответить.
--
Ivan U. Pascal | e-mail: pascal@tsu.ru
Administrator of | Tomsk State University
University Network | Tomsk, Russia