Использование TTF в Linux

Автор Fedor Ashanin
Данная информация не претендует ни на особую полноту, ни на изящество предлагаемого решения



Любой, кто использовал Windows95/98, сразу же вспомнит, что True Type - это хорошее изобретение, особенно отдельно от "операционных систем от MicroSoft (R, tm, C, что-там-еще)" ;)

Итак - поехали:

TTF шрифты
либо берем их с ближайшей машины с windows, (но при этом очень важно, чтобы windows был как минимум OSR2, и шрифты были Unicode);

либо идем на MicroSoft TrueType download page и берем понравившиеся шрифты. Второе предпочтительнее, ибо легально, законно, да и шрифты там посвежее...
 

X-TrueType server
Берем замечательную программу xfstt-0.9.10 (готовый .rpm), или ее же в исходниках , собираем или устанавливаем.
 

При установке .rpm требует библиотеку libstdc++.so.2.9, которая (как правило) не входит в стандартную поставку Linux. Не беда - достаточно сделать симлинк на libstdc++.so.2.8.0 (ln -s /usr/lib/libstdc++.so.2.8.0 /usr/lib/libstdc++.so.2.9). Если у Вас нет и libstdc++.so.2.8.0 - то установите ее, файл libstdc++-2.8.0-14.i386.rpm входит в поставку RedHat 5.2, или же его можно взять вот здесь.

При сборке xfstt из исходников, кроме вышеупомянутой libstdc++-2.8.0 , понадобится еще и libstdc++-devel-2.8.0, которую можно взять здесь, или найти в дистрибутиве RedHat 5.2

После установки xfstt я рекомендую прочитать идущую с ним документацию - там описываются все действия, необходимые для настройки системы под нормальную работу с ttf. Если же читать все-таки лень - то ниже перечислены уж совсем обязательные моменты ;)
 

Необходимые настройки:
Создать директорию /usr/ttfonts, и положить туда все .ttf
Проверить, работает ли xfstt, набрав xfstt --sync, результатом чего должна быть строка типа "syncing ...files in directory, ...files sync", и в директории /usr/ttfonts должны появиться два файла ttname.dir и ttinfo.dir. Если все происходит так - то ура, осталось совсем малость - прописать fontpath, запустить xfstt и после чего - X.
Пропишите fontpath - добавьте в файл /etc/X11/X86Config строку FontPath "unix/:7100"
Запустите xfstt - xfstt &
Запустите X
 

В Х-ах:
Запустите xfontsel, выберите fndry, и посмотрите - есть ли там пункт ttf? Если да - то все работает ок, и можно переходить к тонкой настройке xfstt.

Выйдите из Х-ов.
Выключите xsftt - ps ax|grep xfstt, kill (xfstt's pid) или /etc/rc.d/init.d/xfstt stop
В директории /etc/rc.d/init.d есть файл xfstt - это скрипт запуска xfstt при загрузке системы. Отредактируйте его следующим образом:
В строку запуска ($XFSTT --dir $TTFONTS) добавьте
--encoding windows-1251,koi8-r,iso8859-1 --res 120,
в которой "--encoding" означает выбор кодировок для фонтов, а "--res" - разрешение, в котором фонты будут представлены. По умолчанию, X-server представляет фонты в разрешении 72dpi, что слишком мелко. Я рекомендую устанавливать --res 96 для разрешений до 1024х768, и --res 120 для более высоких разрешений.
Запустите xfstt - /etc/rc.d/init.d/xfstt start
Запустите X
Готово. ;)

Теперь можно запустить нетскейп, указать ему использовать TTF шрифты - и сходить, скажем, на Microsoft WWlive CSS demo, ей-богу красиво...

Если Вы решили положить .TTF в директорию, отличную от /usr/ttfonts - тогда отредактируйте в скрипте /etc/rc.d/init.d/xfstt параметр $TTFONTS, но при этом помните, что в этом случае все манипуляции с xfstt вроде xfstt --sync, если Вы поставили еще пару десятков шрифтов, и хотите убедиться, что они доступны для сервера, Вам необходимо будет проводить, указывая xfstt директорию со шрифтами:
xfstt --dir /your/path/to/ttf --(command)
Злая бед причина заключена в том, что директория /usr/ttfonts определена в самой программе xsftt, и для изменения этого параметра необходимо пересобрать программу, изменив значение TTFONTDIR в файле xfstt.cpp