[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: А может ну ее нафиг, эту Xkb.



Victor Wagner <vitus@ice.ru> wrote:


>> X[mb|wc]LookupString. То теперь надо будет всех заставлять и для вывода
>> использовать X[mb|wc]DrawString или использовать стандарные виджеты
>
>Это будет ох как сложно... В той же Tk написали достаточно сложную схему
>собирания строки из кусочков разными шрифтами, чтобы можно было выводить
>юникодные строки без юникодных шрифтов. И свою систему борьбы с
>кодировками
>Что ж им теперь все бросить и сдаться на милость xlib и glibc? ;-)


 Это идеология, принятая Netscape "Composed UNICODE font", когда
"большой" фонт собирается из нескольких "маленьких". Выглядит
это иногда довольно странно, например если в текст попытаться
вставить греческие Alpha, Beta e.t.c. Иногда они похожи по стилю,
иногда - нет, как повезет (какой греческий фонт войдет в Composed).
Одинаковый PANOSE могут иметь фонты очень разного вида.

 Другое дело, что за это время подросли шрифтовые технологии и
сейчас практически любой фонт может содержать UNICODE :
BDF, Type1, TrueType.

 Дальше всех продвинулся тут пожалуй TrueType, что и говорить.
Поскольку "полный" UNICODE фонт занимает ~5-6Mb, в TrueType
продвинули идею "частичных" фонтов. Например, в PanEuro
Win'95 входят UNICODE фонты с WGL4 = 653 символа (всего
1% от UNICODE). И не нужно больше таскать огромные файлы.

 Кстати, при работе с UNICODE фонтами в полный рост встает
задача : КАК ОПРЕДЕЛИТЬ набор глифов, который содержится
в фонте ? То есть фонт трактуется как репозиторий (база) глифов
и нужна некая META-информация "о содержимом", а не просто
набор глифов по индексу.

 В API Win32 эта задача решена - есть специальные функции,
которые выдают UNICODE-Range и CodePages фонта. Они были
недокументированы, но где-то полгода назад на MSDN они
появились. Посмотрите, очень простое решение.

 К сожалению, в X нет ничего подобного. Вернее в XLFD есть
поля "subsetting" после CHARSET_ENCODING (п. 3.1.2.12
XLFD). Но работать с ними неудобно, да и практически ни один
X север это не поддерживает, не горя уж о XFree.

--
-=AV=-