Рейтинг@Mail.ru
[Войти] [Зарегистрироваться]

Наши друзья и партнеры

UnixForum
Альтернативная энергия




Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Font HOWTO

Donovan Rebbechi, elflord@panix.com, перевод В.А.Костромина
Назад Оглавление Дальше Скачать все в одном архиве

7. WYSIWYG-приложения и фонты

7.1 Введение и обзор

Установка фонтов для WYSIWYG-приложений в Linux представляет собой относительно сложную задачу. Она обычно решается в три этапа:

  • Сделать фонты доступными для X-сервера
  • Сделать фонты доступными для ghostscript
  • Сделать фонты доступными для приложения
Основная причина сложности в том, что система вывода фонта на принтер (ghostscript) никак не связана (is unrelated) с системой вывода фонта на экран. Можно сказать, что левая рука Линукса не знает, что делает правая. Решение этой проблемы нетривиально, поскольку может оказаться, что принтерные фонты и экранные фонты находятся на разных компьютерах, так что нет гарантии что все используемые X-клиентом фонты доступны для подсистемы печати.

Однако решение этой проблемы для большинства WYSIWYG-приложений существует. Оно заключается в том, что создается некоторый механизм для преобразования экранных фонтов в принтерные фонты (это основная идея; кроме того, используется группировка фонтов в семейства, включающие варианты bold, italic и roman). К сожалению, не существует стандартного способа сделать это преобразование. Представляется, что стандарты управления фонтами, которые определяли бы и механизм для преобразования экранных фонтов в принтерные фонты, существенно упростили бы установку фонтов для WYSIWYG-приложений , потому что все приложения могли бы использовать единую системную конфигурацию, а не специфичную для каждого отдельного приложения.

7.2 Applixware

Существует два пути установки фонтов для Applixware. Первый метод заключается в использовании FontTastic, "частного" сервера фонтов Applixware. Второй метод предполагает редактирование собственного перечня каталогов фонтов Applixware, чтобы подключить фонты, уже установленные в системе. Установка через фонт-сервер более удобна, но установленные таким образом фонты могут использоваться принтером только при разрешении 300 dpi.

FontTastic

FontTastic предоставляет легкий способ осуществить установку фонтов. Для того, чтобы установить новые шрифты, просто сделайте следующее:

  1. Запустите Applixware как root
  2. Вызовите меню tools.
  3. Выберите "Font Installer"
  4. Отметьте "OK" в появившемся диалоговом окне
  5. Вызовите меню "Catalogs" и выберите пункт "create"
  6. Введите имя каталога. Не важно, что Вы здесь введете. Для примера мы будем предполагать, что подключаются фонты из каталога "foobar".
  7. Выберите каталог foobar из списка каталогов.
  8. В меню "Services" выберите "install fonts into -> FontTastic font server"
  9. Убедитесь, что каталог foobar выбран в списке каталогов, после чего нажмите кнопку "select files".
  10. Используйте каталог выбора файлов для выбора тех фонтов, которые Вы хотите установить. Когда закончите выбор, нажмите "OK". Например, если Вы хотите выбрать arial.ttf в каталоге /usr/share/fonts/ttfonts/, Вы должны ввести /usr/share/fonts/ttfonts в диалоговом окне "Current Directory", затем выбрать arial.ttf в окне выбора файлов, после чего щелкнуть по клавише "OK". Заметьте, что Вы можете выбрать несколько файлов, но только из одной и той же директории.
  11. Вы можете отредактировать полученный список путем добавления других фонтов, удаления некоторых или переименования их.
  12. Когда Вы закончите, щелкните по кнопке "install fonts", а потом по "OK".
  13. Перейдите в меню "services" и выберите "update". Выберите "OK" в навязчиво появляющемся окне предупреждений, затем выберите exit в меню services. Выйдите из Applixware.
  14. Поздравляю, Вы все сделали ! Новые фонты будут доступны, когда Вы снова запустите Applixware.

Использование в Applixware системных фонтов

Этот метод посложнее, но дает лучший результат. Я рекомендую использовать этот метод для тех фонтов, которые по-настоящему важны, и для тех, которые Вы часто используете. Снова надо пройти несколько шагов:

Делаем фонты доступными для X

Как это сделать, было объяснено в предыдущей секции

Делаем фонты доступными для ghostscript

Это тоже объяснено в предыдущей секции

Редактируем fontmap.dir

Это последний шаг в обеспечении доступа к фонтам из Applix и требующий больше всего времени. Файл fontmap.dir находится в подкаталоге axdata/fontmetrics структуры каталогов applix. Основная цель данного шага - сказать applix, какой экранный фонт идет с каким контурным фонтом. В общем случае это очень нетривиальная проблема, потому что экранные фонты не всегда расположены на том же компьютере, на котором установлено приложение.

Мы опишем как добавить фонты к fontmap.dir. В приводимом ниже примере мы добавляем фонт Baskerville Italic.

  1. Во-первых, добавим строку
    FontRecord = Baskerville-Normal-Italic
    Фактически, имя, которое используется в FontRecord, полностью произвольно. Однако, font record должно быть уникальным для каждого фонта. Поэтому будет правильно, если Вы используете то же имя, которое используется для этого фонта в ghostscript.
  2. Далее добавляем строку
    Family = Baskerville
    Имя семейства (The family name) для фонта - это имя, которое будет появляться в меню выбора шрифта в Applix. Обычно, оно не уникально, потому что варианты bold, italic, roman и bold-italic фонта имеют то же самое имя семейства.
  3. Если фонт является вариантом italic, мы должны добавить следующую строку:
            Slant = 1 
    
    а если вариантом bold, то строку
            Weight = 1 
    
    Если это вариант одновременно bold И italic, мы добавляем обе строки. В нашем примере мы должны добавить только строку
            Slant = 1 
    
  4. Далее мы добавляем строку вида:
            ScreenName = "-paradise-baskerville-medium-i-normal--0-0-0-0-p-0-iso8859-1"
    
    Screen name - это имя, которое X-сервер использует для фонта. Можно получить список имен фонтов, содержащих подстроку ``bask'', по команде
            xlsfonts|grep -i bask
    
  5. Теперь мы добавляем строку, которая задает имя принтерного фонта:
    PostScriptPrinterName = Baskerville-Normal-Italic
  6. Далее необходимо указать местоположение файла метрик фонта и файла контуров (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. Процедура следующая:

  1. Как root запустите psetup (или spadmin, если у Вас Star Office 5.1)
  2. Нажмите кнопку ``add fonts''.
  3. После этого нажмите кнопку "initialize font paths". При этом список всех фонтов, имеющихся в каталогах из перечня каталогов фонтов X Window, выводится в отдельном окне.
  4. Выберите каталог, содержащий фонт, который Вы хотите установить (он должен быть в выведенном списке), и нажмите "OK".
  5. Щелкните по кнопке "convert all font metrics".
Это все! Вы можете выйти из программы. Когда Вы перезапустите Star Office, Вы будете иметь возможность использовать новые фонты.

Добавление 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.


Назад Оглавление Дальше Скачать все в одном архиве

Эта статья еще не оценивалась
Вы сможете оценить статью и оставить комментарий, если войдете или зарегистрируетесь.
Только зарегистрированные пользователи могут оценивать и комментировать статьи.

Комментарии отсутствуют