Поделиться через


Управление настраиваемыми шрифтами

Важно!

Мы рекомендуем использовать драйвер класса "Входящие" корпорации Майкрософт, а также приложения для поддержки печати (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-файл — это двоичный файл, который создается с использованием структур, описанных в разделе Структуры таблиц перевода глифов Unidrv. Первая структура в GTT-файле представляет собой структуру UNI_GLYPHSETDATA , которая содержит смещения по сравнению с другими структурами файла.

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

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

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

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

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

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

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

На следующем рисунке показан макет файла формата шрифта 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 (описанную в документации windows SDK) для создания значений реестра в разделе реестра каждого принтера. В следующей таблице перечислены имена значений реестра, которые необходимо использовать, и указаны средства поддержки каждого значения.

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

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

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

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

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

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