Настраиваемое управление шрифтами

Внимание

Современная платформа печати — это предпочтительный способ взаимодействия с принтерами Windows. Рекомендуется использовать драйвер класса "Входящие" Microsoft IPP вместе с приложениями поддержки печати (PSA), чтобы настроить возможности печати в Windows 10 и 11 для разработки устройств принтера.

Дополнительные сведения см. в статье "Современная платформа печати" и руководство по проектированию приложений поддержки печати.

Для принтеров PCL Unidrv поддерживает загрузку мягких шрифтов в виде растровых изображений или контуров TrueType. Для шрифтов устройств Unidrv поддерживает форматы команд принтера PCL, CAPSL и PPDS. Для других форматов настраиваемый код управления шрифтами должен быть предоставлен в подключаемом модуле отрисовки. Можно реализовать следующий набор методов IPrintOemUni:

IPrintOemUni::D ownloadFontHeader
Используется для получения сведений о заголовке мягкого шрифта из Unidrv, а затем скачайте сведения на принтер.

IPrintOemUni::D ownloadCharGlyph
Используется для скачивания глифов символов мягкого шрифта на принтер.

IPrintOemUni::OutputCharStr
Используется для управления печатью символов.

IPrintOemUni::SendFontCmd
Используется для изменения команды выбора шрифта устройства принтера и при необходимости отправьте его на принтер.

IPrintOemUni::TextOutAsBitmap
Используется для создания растрового изображения текстовой строки.

IPrintOemUni::TTDownloadMethod
Используется для указания формата глифа, который должен использовать Unidrv при отправке указанного мягкого шрифта на принтер.

Unidrv предоставляет функцию обратного вызова UNIFONTOBJGetInfo, что подключаемые модули отрисовки могут вызываться для получения сведений о шрифте или глифе.

Для шрифтов устройств необходимо указать описания шрифтов, как описано в разделе файлов метрик шрифтов Unidrv и файлах таблиц перевода Глифов.

Для шрифтов, которые используются для шрифтов, описания шрифтов можно указать в библиотеках DLL ресурсов и указать их с помощью записей шрифтов в файле GPD . Описания шрифтов также можно указать в виде файлов форматирования шрифта Unidrv.

Для скачиваемых обратимых шрифтов PCL необходимо указать описания шрифтов, как описано в разделе файлов формата шрифтов Unidrv.

Файлы метрик шрифта Unidrv

Каждый шрифт устройства, поддерживаемый принтером, представляет файл метрик шрифта Unidrv (UFM). UFM-файл — это двоичный файл, созданный с помощью структур, описанных в структурах метрик шрифта Unidrv. Первая структура в ufm-файле — это UNIFM_HDR, которая содержит смещения к другим структурам файла. На следующем рисунке показан макет файла метрик шрифта Unidrv.

схема, демонстрирующая макет файла метрик шрифта unidrv.

Unidrv также поддерживает файлы ifi, файлы метрик шрифта, созданные для Windows NT 4.0.

Файлы таблицы перевода глифов

Каждый шрифт устройства, поддерживаемый принтером, представляет файл таблицы перевода Глифа (.gtt). Файл .gtt — это двоичный файл, созданный с помощью структур, описанных в структурах таблиц перевода Юнидрв глифа. Первая структура в файле .gtt — это структура UNI_GLYPHSETDATA , которая содержит смещения к другим структурам файла.

На следующем рисунке показан макет файла таблицы перевода глифов.

схема, иллюстрирующая макет файла таблицы перевода глифов.

На предыдущем рисунке структура UNI_GLYPHSETDATA содержит смещения от начала файла к первой структуре GLYPHRUN, к первой UNI_CODEPAGEINFO структуре и структуре MAPTABLE.

Unidrv также поддерживает файлы перевода глифов, созданные для Windows NT 4.0, которые используют сжатие длины выполнения (RLE) и имеют расширение RLE.

Файлы форматирования шрифта Unidrv

Для шрифтов, которые не указаны с использованием записей шрифтов в файле GPD, шрифты должны быть описаны в файле формата шрифта Unidrv (uff). Кроме того, скачиваемые обратимые шрифты PCL необходимо указать с помощью uff-файла.

UFF-файл — это двоичный файл, созданный с помощью следующих наборов структур:

  • Структуры форматирования шрифта Unidrv, определяющие содержимое и структуру uff-файла.

  • Структуры метрик шрифта Unidrv, определяющие метрики для каждого шрифта.

  • Структуры таблиц перевода глифов Unidrv, определяющие наборы глифов, используемые шрифтами.

На следующем рисунке показан макет файла формата шрифта Unidrv.

схема, иллюстрирующая макет файла формата шрифта unidrv.

Файл формата шрифта Unidrv состоит из структуры UFF_FILEHEADER и одной или нескольких пар UFF_FONTDIRECTORY и DATA_HEADER структур. Каждая DATA_HEADER структура связана с блоком данных шрифта. Структура UFF_FILEHEADER содержит смещение от начала файла до первой UFF_FONTDIRECTORY структуры. Каждая UFF_FONTDRECTORY структура содержит смещение от начала файла к DATA_HEADER структуре, содержащей данные шрифта.

Кроме того, для скачиваемых обратимых шрифтов PCL двоичные данные, которые необходимо скачать, хранятся в uff-файле.

Создание файлов .uff является ответственностью за программное обеспечение установки шрифтов, предоставленное поставщиком. Unidrv считывает uff-файлы принтера для получения сведений о шрифте и глифе. Установщик шрифтов должен изменить содержимое файла uff при добавлении или удалении шрифтов. Дополнительные сведения о создании установщика шрифтов см. в разделе "Настраиваемые установщики шрифтов" для Unidrv.

Все файлы .uff должны храниться в каталоге %SystemRoot%\System32\Spool\Drivers\Unifont. Чтобы связать отдельные файлы .uff с определенными принтерами, программное обеспечение установки должно вызвать функцию SetPrinterData (описанную в документации по пакету SDK для Windows), чтобы создать значения реестра в разделе реестра каждого принтера. В следующей таблице перечислены имена значений реестра, которые должны использоваться, и указывает на поддержку каждого значения.

Имя и тип значения реестра Определение значения Ответственный за команду
ExternalFontFile

REG_SZ
Имя файла .uff, указывающего текущие установленные шрифты. Шрифты можно скачать или содержать в патроне. Установщик шрифтов
"ExtFontCartFile"

REG_SZ
Имя файла .uff, указывающее все шрифты, содержащиеся во всех патронах шрифтов, перечисленных для extFontCartNames. Установщик шрифтов
"ExtFontCartNames"

REG_MULTI_SZ
Имена всех патронов шрифта, которые могут быть установлены на принтере. Установщик шрифтов
"FontCart"

REG_MULTI_SZ
Имена всех патронов шрифта, установленных в настоящее время для принтера. Пользовательский интерфейс Unidrv

После добавления патрона шрифта на принтер системный администратор должен запустить установщик шрифтов, который отвечает за копирование описаний шрифта из uff-файла, указанного в extFontCartFile, в uff-файл, указанный в файле ExternalFontFile. Аналогичным образом установщик шрифтов должен удалить описания шрифтов из uff-файла, указанного в файле ExtFontCartFile при удалении патрона.