Антиалиазинг и шрифты в Qt

Lars Knoll, [email protected]
Перевод на русский - Андрей Черепанов, [email protected], 10 апреля 2001 г.

Это небольшое руководство описывает, что необходимо для правильной поддержки шрифтов в приложениях Qt, работающих под X11. В основном оно будет интересно дистрибуторам или людям, самим настраивающим шрифты под Unix. Это неполное руководство, и вам придется самому разобраться в некоторых деталях, лишь вскользь упомянутых в данном очерке.

Содержание

Получение эффекта сглаженных шрифтов на XFree86 c Qt и KDE

Для получения эффекта сглаживания шрифтов на вашем рабочем столе X11 необходимо проделать следующее. Имейте в виду, что поддержка сглаживания в X11 является все ещё экспериментальной и может оказаться недоступной для некоторых видеокарт в силу отсутствия драйверов.

Для начала необходимо убедиться в том, что:

Если у вас все это имеется, вы можете проверить, доступно ли расширение rendering, просмотрев вывод команды xdpyinfo и найдя строку RENDER в списке расширений.

Если она присутствует, вам понадобится версия Qt-2.3.0 или более поздняя, собранная с поддержкой Xft. Если вы собираете Qt самостоятельно, добавьте параметр -xft при запуске configure.

Кроме того, вам необходимы truetype шрифты для полного раскрытия всей мощи расширения Xft на X11. См. п.4 этого руководства для ссылок на ресурсы шрифтов в Интернете. truetype шрифты Microsoft, доступные в Интернете, очень хорошего качества и послужат хорошей отправной точкой.

Загрузив шрифтов из Сети, вы должны будете добавить их к путям каталогов векторных шрифтов в файле XftConfig в /usr/X11R6/lib/X11.

Теперь установите переменную окружения QT_XFT в true и запустите любое приложение Qt (например, designer). Если все прошло успешно, вы увидите сглаженные шрифты.

Если вы запускаете KDE и не получили сглаженных шрифтов на вашем рабочем столе, попробуйте удалить файл ~/.kde/share/config/kdefonts.

Настройка вида рабочего стола без сглаженных шрифтов

Растровые шрифты на X11

Стандартная поставка X11 включает в себя набор растровых шрифтов. К сожалению, настройка по умолчанию позволяет Х-серверу масштабировать эти шрифты. При масштабировании растровые шрифты выглядят отвратительно, и первое, что надо сделать - запретить Х-серверу масштабировать эти шрифты. Это можно сделать, исправив файл XF86Config.

Замените все строки с указанием путей к каталогам, содержащим растровые шрифты, например:

    FontPath "/usr/X11R6/lib/X11/fonts/75dpi"

на

    FontPath "/usr/X11R6/lib/X11/fonts/75dpi:unscaled"

Теперь вы более не увидите отвратительных масштабированных растровых шрифтов на вашем экране.

Добавление векторных шрифтов к путям ваших шрифтов

Существует множество бесплатных векторных шрифтов, которые можно скачать и использовать. Некоторые из них распространяются с X11 и ghostscript. Векторные шрифты из поставки X11 автоматически включаются в пути к вашим шрифтам, поэтому вам не стоит беспокоиться о них. Но, возможно, вам нужно будет добавить шрифты PostScript, входящие в поставку ghostscript, к списку ваших векторных шрифтов.

Каталог шрифтов ghostscript уже содержит файлы fonts.dir, fonts.scale и fonts.alias, поэтому вам нужно только добавить этот каталог к путям шрифтов в файле XF86Config.

Тем не менее, хочу предупредить, что некоторые из масштабируемых шрифтов PostScript выглядят довольно плохо на экране, и их не следует включать в список шрифтов. Если у вас есть шрифты, которые выглядят грубовато в Qt/KDE, вам, пожалуй, стоит удалить строки с описанием этого шрифта из файлов font.*.

Использование шрифтов TTF

Существует ряд высококачественных шрифтов, которые вы можете бесплатно скачать из Интернета. Большинство из них являются шрифтами TTF, и вы можете установить X-сервер,поддерживающий эти шрифты, или использовать сервер шрифтов TrueType.

Большинство современных дистрибутивов Linux поставляются с X-сервером, который уже поддерживает шрифты TTF. Если вы используете коммерческий Unix или старую систему, X-сервер может не поддерживать такие шрифты, и вам необходимо будет установить сервер шрифтов TTF.

Вы можете взять сервер шрифтов TTF на http://www.dcs.ed.ac.uk/home/jec/programs/xfsft/

Дополнительно вам необходима программа ttmkfontdir для создания файла fonts.dir ваших шрифтов TTF. Если она еще не установлена, возьмите её на http://www.joerg-pommnitz.de/TrueType/xfsft.html.

Теперь вы можете работать с шрифтами TTF и скачать эти великолепные шрифты из Интернета. Посмотрите четвертый пункт, в нем написано, где их можно взять в Интернете. Скачайте понравившиеся шрифты и скопируйте их в подкаталог ttf в каталоге /usr/X11R6/lib/X11/fonts. Затем запустите программу ttmkfontdir в этом каталоге и перенаправьте её вывод в файл fonts.dir.

Добавьте этот каталог к путям шрифтов в файле XF86Config (если ваш сервер может напрямую работать с файлами TTF) или сделайте его доступным для сервера шрифтов (xfsft или xfstt).

Использование шрифтов truetype и шрифтов PostScript для печати в KDE

Qt 2.3.0 и более поздние версии могут использовать шрифты truetype и шрифты PostScript, для улучшения качества печати. Это будет сделано автоматически, если шрифты truetype найдены, или если используется расширение rendering X11.

Это не получится с сервером шрифтов, поскольку он не извещает систему о том, где на жестком диске хранятся шрифты. В этом случае добавьте пути к шрифтам postscript либо в файл конфигурации X-сервера, XF86Config, либо временно командой xset +fp /path/to/your/fonts/. Чтобы использовать шрифты truetype без сервера шрифтов, нужно, чтобы X-сервер поддерживал их напрямую.

Где найти шрифты TTF в Интернете ?

Большинство из тех шрифтов, которые доступны в Интернете, поддерживают только латиницу. Зайдя на сайты, которые указаны в конце этого руководства, вы найдете тысячи таких шрифтов. Но, к сожалению, 90% из них служат для специальных целей или плохого качества.

Первый ресурс, о котором стоит упомянуть, - каталог шрифтов Windows c:\windows\fonts (если они у вас установлены). Там вы найдете много шрифтов великолепного качества, которые удовлетворят ваши потребности.

Если у вас нет Windows, вы можете скачать эти шрифты прямо с сайта Microsoft. "Основные шрифты для Web" является коллекцией высококачественных шрифтов для скачивания, на которые ориентируются много вебмастеров. Хотя их лицензия не вполне ясна, тем не менее, вы можете скачать их бесплатно для личного использования.

Основные шрифты используют набор символов WGL4, который включает в себя символы латиницы, кириллицы, греческого, турецкого языков и (частично) иврита. Взять их можно с http://www.microsoft.com/truetype/fontpack/. Примечание: версия этих шрифтов для win3.1 может быть распакована unzip. Версии .exe для win95-2000 могут быть распакованы утилитой cabextract. И если вы используете дистрибутив Debian, вы можете скачать и установить их командой `apt-get msttcorefonts`.

Другой набор шрифтов вы, возможно, уже имеете на своей машине, - это набор шрифтов lucida, идущий с JRE (java runtime environment). Версия JRE от IBM включает дополнительные шрифты, которые содержат большинство раскладок Unicode.

Список хороших шрифтов для различных языков доступен на http://www.hclrss.demon.co.uk/unicode/fonts.html

Стоит еще упомянуть о шрифте bistream cyberbit. Лицензия вроде бы позволяет включать его в дистрибутивы (но не кивайте на меня, а проверьте сами), и в нем есть большинство раскладок Unicode-2.1. Вы можете найти их на любом зеркале FTP-сервера Netscape.

Набор шрифтов для латиницы, кириллицы и, частично, иврита являются частью поставки OpenOffice. Вы можете взять их из CVS openoffice в каталоге extras/wnt/source/fonts/.

Где найти шрифты для различных кодировок, отличных от latin ?

Найти хорошие бесплатные шрифты для кодировок, отличных от latin1, обычно очень трудно, а в некоторых случаях просто невозможно, поэтому ниже я укажу известные мне ресурсы для получения таких шрифтов. Возможно, список неполный, поэтому если вы знаете местонахождение шрифтов для различных кодировок, сообщите мне, и я добавлю их в список.

Я указываю адреса расположения только тех шрифтов, которые являются бесплатными и, по-видимому, могут быть включены в дистрибутивы. Некоторые другие шрифты, такие как Microsoft webfonts, могут быть теми самыми шрифтами, которые вы ищете, но они не указаны в списке ввиду того, что их лицензия ограничивает их свободное распространение.

Поддерживающие большинство раскладок Unicode
Bitstream Cyberbit: ftp://ftp.netscape.com/pub/communicator/extras/fonts/windows/
Японский
Бесплатные шрифты, которые я знаю - wadalab gothic и mincho (postscript) могут быть найдены по адресу: ftp://ftp.ipl.t.u-tokyo.ac.jp/Font/ Примечания по поводу преобразования их в формат Type0 (необходимый для поддержки в ghostscript) находятся по адресу: http://bibliofile.mc.duke.edu/gww/fonts/postscript-utilities/kanji.html
Китайский (упрощенный и традиционный):
Мне известны только два шрифта. Они находятся по адресу http://trolls.troll.no/~lars/fonts/
Корейский:
Я слышал, что бесплатные корейские шрифты доступны по адресу: ftp://ftp.cair-archive.kaist.ac.kr/pub/hangul/fonts/munhwa-fonts, но я давно не проверял этот архив. Я буду признателен любым новым сведениям об этих шрифтах.
Некоторые азиатские шрифты PostScript находятся по адресу http://ftp.oreilly.com/pub/examples/nutshell/cjkv/adobe Их лицензия не вполне ясна, и устанавливать их достаточно утомительно. У меня получилось использовать их в ghostscript, но не в X11. Хотя в принципе это должно быть возможно.
Грузинский
Некоторые грузинские truetype шрифты могут быть найдены по адресу: http://www.redrival.com/giasher/download.htm
Шрифты с поддержкой латиницы и кириллицы:
Целый набор шрифтов для латиницы, кириллицы и, частично, иврита являются частью поставки OpenOffice. Вы можете получить их из CVS openoffice в каталоге extras/wnt/source/fonts/. См. сайт openoffice для дополнительной информации.
Арабский
Мне известны только шрифты bitstream cyberbit (см. выше) и некоторые растровые шрифты:
Arabic Newspaper и ClearlyU по адресу http://crl.nmsu.edu/~mleisher/arabic24.html
Иврит:
Microsoft web fonts частично содержат иврит, так же как и часть шрифтов openoffice. Кроме того, JRE от IBM также содержат иврит.
Много этих шрифтов находится по адресу: http://user.dtcc.edu/~berlin/font/hebrew.htm некоторые растровые шрифты можно найти по адресу: http://elmar.co.il/wwh/wwh/xfiles/H.fonts/index.en.html http://sunsite.unc.edu/pub/Linux/X11/fonts/hebxfonts-0.2.tgz"
Греческий:
ftp://ftp.rhrz.uni-bonn.de/pub/institute/evtheol/milan.zip ftp://ftp.rhrz.uni-bonn.de/pub/institute/evtheol/greekofc.zip
Тамильский:
http://www.geocities.com/avarangal/tamilunicode.html
Тайский:
http://software.thai.net/tis-620/courierthai.html
Античный греческий, иврит и коптский:
http://rosetta.atla-certr.org/TC/fonts/

Ресурсы Web

Прочие FAQ для Unix/X11:
http://www.cs.ruu.nl/wais/html/na-dir/internationalization/font-faq.html
Сайты для поиска truetype шрифтов для специфических кодировок:
http://user.dtcc.edu/~berlin/fonts.html
http://www.sil.org/computing/fonts/