Font HOWTO: WYSIWYG-приложения и фонты
Далее Назад Оглавление7. WYSIWYG-приложения и фонты
7.1 Введение и обзор
Установка фонтов для WYSIWYG-приложений в Linux представляет собой относительно сложную задачу. Она обычно решается в три этапа:
- Сделать фонты доступными для X-сервера
- Сделать фонты доступными для ghostscript
- Сделать фонты доступными для приложения
Однако решение этой проблемы для большинства WYSIWYG-приложений существует. Оно заключается в том, что создается некоторый механизм для преобразования экранных фонтов в принтерные фонты (это основная идея; кроме того, используется группировка фонтов в семейства, включающие варианты bold, italic и roman). К сожалению, не существует стандартного способа сделать это преобразование. Представляется, что стандарты управления фонтами, которые определяли бы и механизм для преобразования экранных фонтов в принтерные фонты, существенно упростили бы установку фонтов для WYSIWYG-приложений , потому что все приложения могли бы использовать единую системную конфигурацию, а не специфичную для каждого отдельного приложения.
7.2 Applixware
Существует два пути установки фонтов для Applixware. Первый метод заключается в использовании FontTastic, "частного" сервера фонтов Applixware. Второй метод предполагает редактирование собственного перечня каталогов фонтов Applixware, чтобы подключить фонты, уже установленные в системе. Установка через фонт-сервер более удобна, но установленные таким образом фонты могут использоваться принтером только при разрешении 300 dpi.
FontTastic
FontTastic предоставляет легкий способ осуществить установку фонтов. Для того, чтобы установить новые шрифты, просто сделайте следующее:
- Запустите Applixware как root
- Вызовите меню tools.
- Выберите "Font Installer"
- Отметьте "OK" в появившемся диалоговом окне
- Вызовите меню "Catalogs" и выберите пункт "create"
- Введите имя каталога. Не важно, что Вы здесь введете. Для примера мы будем предполагать, что подключаются фонты из каталога "foobar".
- Выберите каталог foobar из списка каталогов.
- В меню "Services" выберите "install fonts into -> FontTastic font server"
- Убедитесь, что каталог foobar выбран в списке каталогов, после чего нажмите кнопку "select files".
- Используйте каталог выбора файлов для выбора тех фонтов, которые Вы хотите установить. Когда закончите выбор, нажмите "OK". Например, если Вы хотите выбрать arial.ttf в каталоге /usr/share/fonts/ttfonts/, Вы должны ввести /usr/share/fonts/ttfonts в диалоговом окне "Current Directory", затем выбрать arial.ttf в окне выбора файлов, после чего щелкнуть по клавише "OK". Заметьте, что Вы можете выбрать несколько файлов, но только из одной и той же директории.
- Вы можете отредактировать полученный список путем добавления других фонтов, удаления некоторых или переименования их.
- Когда Вы закончите, щелкните по кнопке "install fonts", а потом по "OK".
- Перейдите в меню "services" и выберите "update". Выберите "OK" в навязчиво появляющемся окне предупреждений, затем выберите exit в меню services. Выйдите из Applixware.
- Поздравляю, Вы все сделали ! Новые фонты будут доступны, когда Вы снова запустите Applixware.
Использование в Applixware системных фонтов
Этот метод посложнее, но дает лучший результат. Я рекомендую использовать этот метод для тех фонтов, которые по-настоящему важны, и для тех, которые Вы часто используете. Снова надо пройти несколько шагов:
Делаем фонты доступными для X
Как это сделать, было объяснено в предыдущей секции
Делаем фонты доступными для ghostscript
Это тоже объяснено в предыдущей секции
Редактируем fontmap.dir
Это последний шаг в обеспечении доступа к фонтам из Applix и требующий больше всего времени. Файл fontmap.dir находится в подкаталоге axdata/fontmetrics структуры каталогов applix. Основная цель данного шага - сказать applix, какой экранный фонт идет с каким контурным фонтом. В общем случае это очень нетривиальная проблема, потому что экранные фонты не всегда расположены на том же компьютере, на котором установлено приложение.
Мы опишем как добавить фонты к fontmap.dir. В приводимом ниже примере мы добавляем фонт Baskerville Italic.
- Во-первых, добавим строку
FontRecord = Baskerville-Normal-Italic
Фактически, имя, которое используется в FontRecord, полностью произвольно. Однако, font record должно быть уникальным для каждого фонта. Поэтому будет правильно, если Вы используете то же имя, которое используется для этого фонта в ghostscript. - Далее добавляем строку
Family = Baskerville
Имя семейства (The family name) для фонта - это имя, которое будет появляться в меню выбора шрифта в Applix. Обычно, оно не уникально, потому что варианты bold, italic, roman и bold-italic фонта имеют то же самое имя семейства. - Если фонт является вариантом italic,
мы должны добавить следующую строку:
Slant = 1
а если вариантом bold, то строкуWeight = 1
Если это вариант одновременно bold И italic, мы добавляем обе строки. В нашем примере мы должны добавить только строкуSlant = 1
- Далее мы добавляем строку вида:
ScreenName = "-paradise-baskerville-medium-i-normal--0-0-0-0-p-0-iso8859-1"
Screen name - это имя, которое X-сервер использует для фонта. Можно получить список имен фонтов, содержащих подстроку ``bask'', по командеxlsfonts|grep -i bask
- Теперь мы добавляем строку, которая задает имя принтерного фонта:
PostScriptPrinterName = Baskerville-Normal-Italic - Далее необходимо указать местоположение файла метрик фонта и
файла контуров (the outline file)
MetricsFile = /usr/share/fonts/misc/baskvli.afm Type1FontFileName = /usr/share/fonts/misc/baskvli.pfb
Если Вы добавляете фонт TrueType, Вы можете использоватьttf2pt1
для того, чтобы сгенерироватьafm
-файл :ttf2pt1 -A foo.ttf - > foo.afm
(или установить пакет ttfutils и использоватьttf2afm
). Затем Вы используете что-то вроде:MetricsFile = /usr/share/fonts/misc/foo.afm
НЕ включайте директивуType1FontFileName
-- пусть ghostscript позаботится об этом.
Все ! В результате после добавления целого семейства фонтов Вы должны получить что-то такое:
FontRecord = Baskerville-Normal Family = Baskerville ScreenName = "-paradise-baskerville-medium-r-normal--0-0-0-0-p-0-iso8859-1" PostScriptPrintName = Baskerville-Normal MetricsFile = /usr/share/fonts/misc/baskvl.afm Type1FontFileName = /usr/share/fonts/misc/baskvl.pfb FontRecord = Baskerville-Normal-Italic Family = Baskerville Slant = 1 ScreenName = "-paradise-baskerville-medium-i-normal--0-0-0-0-p-0-iso8859-1" PostScriptPrintName = Baskerville-Normal-Italic MetricsFile = /usr/share/fonts/misc/baskvli.afm Type1FontFileName = /usr/share/fonts/misc/baskvli.pfb FontRecord = Baskerville-Bold Family = Baskerville Weight = 1 ScreenName = "-paradise-baskerville-bold-r-normal--0-0-0-0-p-0-iso8859-1" PostScriptPrintName = Baskerville-Bold MetricsFile = /usr/share/fonts/misc/baskvlb.afm Type1FontFileName = /usr/share/fonts/misc/baskvlb.pfb FontRecord = Baskerville-Bold-Italic Family = Baskerville Weight = 1 Slant = 1 ScreenName = "-paradise-baskerville-bold-i-normal--0-0-0-0-p-0-iso8859-1" PostScriptPrintName = Baskerville-Bold-Italic MetricsFile = /usr/share/fonts/misc/baskvlbi.afm Type1FontFileName = /usr/share/fonts/misc/baskvlbi.pfb
С помощью конфигурационного файла можно сделать большее. В самом конфигурационном файле содержится глоссарий, в котором объясняется формат этого файла.
7.3 Star Office
Мы здесь рассматриваем только Star Office 5.0. Процедура для Star Office
5.1 аналогична, но утилита называется spadmin
, а не
psetup
. Стоит упомянуть, что
страница Джона
Мак-Лафлина (John McLaughlin) является великолепным источником
информации по этому вопросу и что написанное ниже во многом основано на
его материалах.
Поработав как со Star Office 5.0, так и с 5.1, я обнаружил, что в Star Office 5.1 легче добавить новые фонты. Мне не удалось добавить true type фонты в Star Office 5.0, в Star Office 5.1 это оказалось немного проще.
Сделайте сначала резервную копию Вашей конфигурации !
Неплохо до начала редактирования сделать резервную копию
Вашей конфигурации, чтобы ненароком не испортить ее окончательно.
Модификация фонтов окажет влияние на несколько файлов в xp3
.
Вы обязательно должны сделать резервную копию файла xp3/psstd.fonts
.
Я рекомендую пойти дальше и сделать резервную копию всего каталога
xp3
. Вы можете для этого перейти в каталог Star Office и
выполнить команду
tar cvzf xp3.tgz xp3Для того, чтобы впоследствии восстановить файлы из резервной копии, удалите каталог
xp3
и распакуйте архив:
rm -rf xp3 tar xvzf xp3.tgz
Добавление фонтов Type1 к Star Office
Добавление фонтов Type1 к Star Office осуществляется относительно просто.
Если Вы хотите использовать в Star Office 5.0 имеющиеся фонты TrueType,
лучше всего конвертировать их в формат Type1, а затем воспользоваться изложенной
здесь процедурой.
Если Вы используете Star Office 5.1, Вы можете воспользоваться процедурой
инсталляции фонтов TrueType (хотя это немного сложнее).
Во-первых, как и всегда, надо сделать фонты доступными для X и
ghostscript. После того, как это сделано, фонт должен быть установлен в
Star Office, для чего используется утилита psetup
.
Процедура следующая:
- Как root запустите psetup (или spadmin, если у Вас Star Office 5.1)
- Нажмите кнопку ``add fonts''.
- После этого нажмите кнопку "initialize font paths". При этом список всех фонтов, имеющихся в каталогах из перечня каталогов фонтов X Window, выводится в отдельном окне.
- Выберите каталог, содержащий фонт, который Вы хотите установить (он должен быть в выведенном списке), и нажмите "OK".
- Щелкните по кнопке "convert all font metrics".
Добавление TrueType фонтов к Star Office
Добавление к Star Office фонтов TrueType не так тривиально, но возможно. После долгой работы и многих часов разглядывания страницы Джона Мак-Лафлина (John McLaughlin) я, наконец, добился того, что они заработали в Star Office 5.1. Замечу, что они все же не работают с версией 5.0. Следующие рекомендации применимы, если Вы печатаете через ghostscript:
- Сделайте фонты доступными для X.
- Сделайте фонты доступными для ghostscript.
- Вы должны иметь
afm
-файлы для фонтов, которые Вы хотите добавить. Используйтеttf2pt1 -A foo.ttf - > foo.afm
чтобы создатьafm
-файлы. -
Другой способ состоит в том, чтобы скачать пакет
ttfutils
и использовать утилиту
ttf2afm
. Преимущество этого способа в том, что Вы сможете конвертировать за один раз несколько файлов, напримерttf2afm *.ttf
- Star Office требуются файлы
pfb
, соответствующие каждомуttf
-файлу. Вы можете их создать с помощью командыtouch foo.pfb
Star Office использует эти файлы только для печати. И, включив фонт в файл PPD, Вы обманываете Star Office, заставляя его считать, что фонты имеются в Вашем принтере (хотя в действительности они в подсистеме вывода изображений ghostscript - ghostscript's rendering system). Тем самым Вы обходите необходимость использовать эти файлы. Кажется для Star Office требуется, чтобы существовали только файлыpfb
, чтобы установить фонт. - Теперь Вы можете запустить
spadmin
и установить фонт(ы). -
Теперь добавьте фонты к файлу PPD, соответствующему конфигурации Вашего
принтера. Имя, которое Вы используете для фонта, должно совпадать с именем,
используемым для него Star Office, а НЕ именем фонта в ghostscript.
Например, если фонт называется
foobar.ttf
, а соответствующийafm
-файл имеет имяfoobar.afm
, Вы должны использовать имя "foobar" для фонта в PPD-файле. Запись должна выглядеть примерно так:*Font cloistrk: Standard "(001.002)" Standard ROM
С другой стороны, если Вы не используете при печати ghostscript,
Вы должны действовать другим образом. В этом случае, не надо пытаться заставить
Star Office думать, что Ваш принтер имеет фонты, ибо фактически в ROM принтера
фонтов НЕТ, так что хотя gv
будет корректно отображать
postscript-файлы, Ваш принтер не способен будет распечатать их.
Если у Вас postscript-принтер, главные различия в следующем:
- Не редактируйте PPD-файл.
- Вместо того, чтобы с помощью
touch foo.pfb
создать пустыеpfb
-файлы. Вы должны иметьpfb
-файлы postscript-фонта типа Type42. Фонт Type42 - это в действительности "TrueType фонт для принтера". Вы не замечаете фонтов Type42, даже если используете их, потому что большинство приложений используют их прозрачно. Для создания файлов фонтов Type42 используйте утилиту ttfps.ttfps foo.ttf foo.pfb
Существует несколько подводных камней. Иногда Star Office может не
выбрать экранный фонт, который Вы хотите. Поэтому стоит проверить
xp3/psstd.fonts
и, возможно, отредактировать его,
чтобы убедиться, что Star Office действительно использует экранный фонт,
который Вы имели в виду. Кроме того, Star Office не может корректно
обрабатывать проблемы с конфигурацией. Если с конфигурацией что-то не
в порядке, то вполне возможно, что текстовый процессор даже не запустится.
Именно поэтому мы рекомендовали Вам сделать резервную копию
каталога xp3
.
То, что скрыто от глаз
Если Вы хотите установить в Star Office фонты TrueType, Вам, возможно,
необходимо узнать, как Star Office с ними работает. Когда Вы запускаете
spadmin
или psetup
, происходит следующее:
- Star Office создает символические ссылки на
pfb
-файлы контуров в Вашем каталогеxp3/pssoftfonts
. - Файл
afm
копируется в каталогxp3/fontmetrics/afm/
- В файл
xp3/psstd.fonts
добавляется одна запись. Этот файл хранит имена всех экранных фонтов, используемых Star Office (в частности, в нем задаются имена файлов контуров для экранных фонтов).
Вот почему нужно создать резервную копию всего каталога xp3
-
только в этом случае можно будет легко вернуть Star Office к чистой
конфигурации.
7.4 Word Perfect
По этому вопросу пока ничего нет. Web-страница Рода Смита (Rod Smith) представляет собой хороший источник информации по установке фонтов в Word Perfect.
Далее Назад Оглавление