Сервер шрифтов Photon
phfont [-A] [-b файл] [-C[-]SANSERIF|SERIF|DECORATIVE=описание[;описание2[;...]]] [-D каталог] [-d каталог] [-E правило] [-F типы] [-e файл] [-I] [-i файл] [-K[-]FONDRY|AFTERFOUNDRYKEYS|KEYS=ключ[;ключ2[;...]]] [-L] [-l список] [-mPHF|PFR|TTF=новое_имя[=реальное_имя][;новое_имя2=[реальное_имя2][;...]]] [-N число] [-O[-]ключевое_слово[;[-]ключевое_слово2[;...]]] [-n имя] [-s каталог] [-U семейство] [-u файл] [-X] [-Z выравнивание]
- -A
- Принудительно применить ко всем текстовым растрам функцию сглаживания, если это возможно. Сглаживание можно применить только к масштабируемым шрифтам.
- -b файл
- При выходе из утилиты phfont сохранить информацию об использовании шрифта в указанном файле.
- -C [-]SANSERIF|SERIF|DECORATIVE=описание[;описание2[;...]]
- Управление списком классификации шрифтов. Списки классификации шрифтов используются для передачи корректной информации в приложение пользователя, если в шрифте отсутствует информация о его классификации (например, в случае шрифтов PHF).
Эта опция используется для добавления описания к классу шрифтов или удаления этого описания. Для удаления описания перед именем класса шрифтов следует ввести символ -
. Эту опцию можно указать в командной строке несколько раз.
- -D каталог
- Указать каталог конфигурации, в котором хранятся файлы fontdir, fontext, fontmap и fontopts. Значение по умолчанию –
/usr/photon/font_repository
.
- -d каталог
- Указать каталог шрифтов. Предполагается, что в этом каталоге находятся все конфигурационные файлы и файлы шрифтов. Значение по умолчанию –
/usr/photon/font_repository
.
- -E правило
- Указать используемое правило расширения/отсутствующих символов. Файл fontext может содержать несколько разных правил расширения (например, языковые правила для поиска наборов символов для китайского, японского или корейского языков), причем активным может быть только одно из этих правил. По умолчанию используется первое правило "+" в файле fontext.
- -e файл
- Указать файл расширения/отсутствующих символов шрифта. Этот файл содержит правила, расширяющие базовый набор выходных символов путем добавления файлов нескольких шрифтов (например, путем добавления специальных символов языков, отличных от английского). По умолчанию используется файл fontext.
- -F типы
- Вывести значения по умолчанию для указанного атрибута типы и завершить работу утилиты, при этом типы – это строка, содержащая один или несколько из следующих символов:
- C – классы шрифтов
- K – ключи шрифтов
- O – ключевые слова для азиатских языков
- m – подстановки шрифтов
- -I
- Использовать строгие международные правила подстановки.
- -i файл
- Указать индексный файл шрифта. Этот файл содержит информацию заголовков всех известных/используемых шрифтов в системе и позволяет серверу шрифтов быстро выполнять подстановки шрифтов и отсутствующих символов без обращения к диску. По умолчанию используется файл fontdir.
- -K [-]FONDRY|AFTERFOUNDRYKEYS|KEYS=ключ[;ключ2[;...]]
- Ключи шрифтов удаляются из описания шрифта из определенного местоположения внутри описания. Если используется символ
-
, указанные ключи удаляются из указанного местоположения ключа. Эту опцию можно указать несколько раз.
- -L
- Запретить загрузку локальных метрик.
- -l список
- Указать список шрифтов для предварительной загрузки в кэш и блокировки в нем. Эту опцию можно использовать для обеспечения быстрого доступа к часто используемым шрифтам. Формат списка: разделенный запятыми список имен шрифтов. Пример:
helv10,phcursor,cour10b,swissi
По умолчанию – отсутствует.
- -M
- Отключить отображение символов вместо отсутствующих символов. По умолчанию, при отображении символа, для которого не удается найти определение, сервер шрифтов отображает пустой прямоугольник.
- -m PHF|PFR|TTF=новое_имя[=реальное_имя][;новое_имя2=[реальное_имя2][;...]]
- Только для внутреннего использования. Записи в этом файле перезаписывают описательные имена (например, Helvetica) для определенной группы шрифтов (helv). Эта опция добавляет к указанному списку типов шрифтов новую подстановку. Если реальное_имя не указано, это новое_имя удаляется из указанного списка типов шрифтов. Эту опцию можно указать в командной строке несколько раз.
- -N число
- Указать для менеджера шрифтов число попыток подключения устройства перед завершением работы. Значение по умолчанию – 15.
- -n имя
- Указать имя, с которым следует зарегистрировать сервер шрифтов. По умолчанию используется значение переменной среды
PHFONT
. Если оно не установлено, используется префикс /dev/phfont
.
- -O [-]ключевое_слово[;[-]ключевое_слово2[;...]]
- Управление ключевыми словами из азиатских языков. Ключевые слова используются для определения присвоенных разработчиками имен азиатских (восточных) шрифтов и для оптимизации системы расширений. Если ключевое слово начинается с символа
-
, оно удаляется из списка. В противном случае оно добавляется к списку. Эту опцию можно указать в командной строке несколько раз.
- -s каталог
- Каталог, содержащий библиотеки отображения шрифтов. По умолчанию это каталог
/lib/dll/font
.
- -U семейство
- Указать семейство шрифтов, которое следует использовать для неизвестных шрифтов. Если имя шрифта не существует или же его невозможно получить с использованием явных записей подстановок, используется это семейство шрифтов по умолчанию. По умолчанию используется запись ? в файле fontmap.
- -u файл
- Указать файл таблицы подстановок неизвестного шрифта. Этот файл создает шрифты-синонимы (или виртуальные шрифты) и правила конфигурации для дополнения растровых шрифтов масштабируемыми шрифтами. Файл по умолчанию – fontmap.
- -X
- Запретить завершение работы сервера шрифтов после отключения последнего клиента. По умолчанию сервер шрифтов завершает работу после завершения работы всех клиентов.
- -Z выравнивание
- Установить для растрового выравнивания значение 8, 32 или 64 бит. Эта опция используется только в режиме DLL. См. PfSetOptionsDll().
| Если внешний сервер шрифтов не запущен, можно передавать опции с помощью опции -F менеджера io-graphics. Формат немного отличается и основывается на формате getsubopt(). Пример:
io-graphics -F"-d=/usr/photon/font_repository,-A,-N=10" ...
Для получения дополнительной информации см. PfSetOptionsDll(). |
ЗОСРВ «Нейтрино»
aarch64, arm, armv7, e2k, mips, ppc, x86
Утилита phfont предоставляет возможности обработки шрифтов для всех приложений и драйверов Photon, в т.ч. вычисление текстовых элементов и метрик, а также создание растровых изображений, представляющих символьные строки. Она также поддерживает центральный кэш метрик шрифта и растровых данных. Конфигурационные файлы, используемые утилитой phfont, описаны в разделе Файлы далее.
При инициализации утилиты phfont выполняется предварительная обработка командной строки и определение каталога конфигурации для использования. Затем утилита пытается загрузить файл $HOME/.ph/font/fontopts
. Если этот файл не существует, утилита пытается загрузить файл config_dir/fontopts. Она пытается загрузить [io-font] раздел, а затем раздел [io-font-server]. Опции из загруженных разделов комбинируются с опциями, указанными в командной строке. После этого опции обрабатываются, при этом в случае конфликта приоритет имеют опции в командной строке. Опции в разделе [io-font] в файле fontopts используются всеми приложениями, загружающими phfont.so. При использовании PfAttachLocalDll для попытки загрузить раздел [io-font-имя_опции] из файла fontopts также используется имя опции.
| Для этой утилиты в полномочиях пользователя необходимо установить бит setuid ("set user ID" (установить идентификатор пользователя)). В случае использования утилит mkefs, mketfs или mkifs на хосте Windows для добавления этой утилиты в образ необходимо задать атрибут perms для явного определения полномочий, а также атрибуты uid и gid для корректной настройки принадлежности. |
Утилита phfont загружает DLL-библиотеку phfont.so для обеспечения отрисовки шрифтов. phfont.so загружает DLL-библиотеки, расположенные в каталоге /lib/dll/font
, которые предоставляют возможности отрисовки шрифтов определенных типов (например, PHF, TTF, TTC, PFR, Stroke и т.д.).
Если рендеринг какого-либо типа не требуется, соответствующую DLL-библиотеку можно удалить. Для определения возможностей, обеспечиваемых определенной DLL-библиотекой, используется команда use имя_dll, по которой выводится информация об использовании этой DLL-библиотеки. Если внешний сервер шрифтов не запущен, io-graphics пытается вызвать экземпляр сервера шрифтов.
Сервер phfont можно запустить как автономный процесс (называемый внешним сервером) или как подключаемый модуль к io-graphics (называемый внутренним сервером). В следующих условиях рекомендуется запустить внешний сервер:
- Система не выполняет io-graphics.
- Система будет использоваться в качестве сервера для удаленных сеансов Photon.
Для запуска внешнего сервера шрифтов запуск phfont выполняется до io-graphics. Для запуска внутреннего сервера шрифтов просто выполняется запуск io-graphics.
Запуск сервера:
phfont -d /usr/photon/font_repository &
| Обычно сервер шрифтов запускается из сценария ph. |
DLL-библотеки для рендеринга (отрисовки), используемые сервером шрифтов, расположены в каталоге /lib/dll/font/*.so
. Эти файлы поддерживают отрисовку, по крайней мере, для следующих типов шрифтов:
- TrueType
- Семейства TrueType
- Bitstream TrueDoc PFR
- Photon Bitmap
- Bitstream Stroke
- Bitstream Speedo
- Bitstream T2K
- Adobe Type1
- Adobe Type2
Для просмотра типов шрифтов, поддерживаемых DLL-библиотекой, используется команда use.
Утилита phfont также использует следующие файлы:
Следующие файлы использовались предыдущими версиями утилиты phfont, но теперь их использование не рекомендуется:
- fontdesc – вместо него используется опция -C.
- font-traplist
- fontdynamic
- fontkey – вместо него используется опция -K.
- fontopt
- fontorient – вместо него используется опция -O.
- fontpreferred
- mappings – вместо него используется опция -m.
Каталог известных шрифтов: обязателен. Каждая запись в этом файле содержит такие данные, как имя и тип шрифта, его размер и стиль, текстовое описание семейства шрифтов и диапазон символов, определенных внутри шрифта. Этот конфигурационный файл доступен для приложения, только если в нем определен по меньшей мере один шрифт. Записи в этом файле статичны, их невозможно загрузить динамически.
В каждой строке в этом файле для каждого известного шрифта содержатся следующие разделенные запятыми поля, в указанном порядке:
- имя группы
- тип/местоположение шрифта (Для phf-файлов это просто строка, добавляемая к имени группы, образующая имя файла, в котором хранится шрифт. Для других файлов она имеет вид индекс@имя_файла, где индекс – это указатель на шрифт, содержащийся в имени файла. Это значение всегда равно 0.)
- текстовое описание, например PC Serif
- кегль, например 8
- стиль шрифта, например B (полужирный), I (курсив) или оба значения
- диапазон символов, определенных внутри шрифта, например 0000-00FF
- специальные (внутренние) флаги
- предельный размер шрифта, например 8x8
- размер шрифта в KБ, например 12K
Набор правил расширения для обработки отсутствующих символов: обязателен. Формат этого файла:
+тип = имя_шрифта [,имя_шрифта...]
Здесь тип – это тип шрифта (normal, bold и т.д.), а имя_шрифта – это имя шрифта, в котором следует выполнить поиск символов.
Набор правил подстановки: обязателен. Существуют два типа:
- Синонимичные записи
- в следующем виде:
новый_шрифт = фактический_шрифт
В этом правиле подстановки новый_шрифт не существует, а фактический_шрифт существует. При попытке использования в качестве имени шрифта новый_шрифт, он подставляется в фактический_шрифт.
Следующая запись для особых случаев является подстановкой по умолчанию для всех неизвестных имен шрифтов:
? = фактический_шрифт
Например, если geneva = helv, шрифт geneva12 преобразуется в шрифт helv12. - Масштабирующие записи
- в следующем виде:
шрифт = {когда}масштабируемый_шрифт
В этом правиле подстановки должны обязательно существовать как шрифт, так и масштабируемый_шрифт. Если точный PHF-файл для шрифта не существует, то создается масштабированная версия масштабируемого_шрифта в соответствии с используемым символом когда: - *
- Всегда масштабировать, если для шрифта отсутствует точный PHF-файл.
- +
- Масштабировать только при превышении максимального размера PHF, определенного для шрифта.
- -
- Масштабировать только если размер меньше минимального размера PHF, определенного для шрифта.
- #
- Масштабировать, только если размер выходит за пределы диапазона размеров для PHF-файлов для шрифта
Например, если имеются файлы helv08.phf, helv10.phf и helv12.phf, а swiss – это масштабируемый шрифт, выполняется следующее преобразование: Правило | Входной шрифт | Преобразованный шрифт |
---|
helv = *swiss | helv06 | swiss06 |
| helv11 | swiss11 |
| helv23 | swiss23 |
helv = -swiss | helv06 | swiss06 |
| helv11 | helv10 |
| helv23 | helv12 |
helv = +swiss | helv06 | Поле отсутствующего символа |
| helv11 | helv10 |
| helv23 | swiss23 |
helv = #swiss | helv06 | swiss06 |
| helv11 | helv10 |
| helv23 | swiss23 |
Во всех случаях шрифты helv08, helv10 и helv12 (известные доступные шрифты) используются напрямую.
Содержит опции командной строки, по одной опции на строку: необязателен. Опции расположены в разделе для соответствующей схемы. Например, опции, относящиеся к утилите phfont, расположены в разделе [io-font]. Опции, относящиеся к определенной DLL-библиотеке визуализации, делятся на подразделы: булевы, численные, строковые. Они имеют следующий формат:
[dll id-subsection-schema]
Сервер шрифтов может работать в одном из двух режимов: режим сервера или режим клиентской DLL-библиотеки. Для различения опций между двумя этими режимами по умолчанию имеется схема "dll". Если сервер шрифтов запущен в режиме сервера, он выполняет поиск опций в разделе [dll id-subsection], но если сервер шрифтов запущен в режиме клиентской DLL-библиотеки, он выполняет поиск опций в разделе [dll id-subsection-dll]. Если опции не указаны, используются значения по умолчанию.
- PHFONT
- Имя по умолчанию, с которым следует регистрировать сервер шрифтов.
Базовые подсистемы ЗОСРВ «Нейтрино»
bdftophf2, mkfontdir
Предыдущий раздел: Сервисы