Управление настраиваемыми шрифтами
Важно!
Мы рекомендуем использовать драйвер класса "Входящие" корпорации Майкрософт, а также приложения для поддержки печати (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 также поддерживает файлы 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, которые определяют содержимое и структуру UFF-файла.
Структуры метрик шрифта 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 (описанную в документации 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, при удалении патрона.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по