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


Внедренные шрифты

Внедрение шрифта — это способ объединение документа и шрифтов, содержащихся в файле для передачи на другой компьютер. Внедрение шрифта гарантирует, что шрифт, указанный в переданном файле, будет присутствовать на компьютере, получая файл. Однако не все шрифты можно перемещать с компьютера на компьютер, так как большинство шрифтов лицензируются только на один компьютер одновременно. Можно внедрить только шрифты TrueType и OpenType.

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

Это может быть нарушение прав поставщика шрифтов или лицензионного соглашения пользователя, чтобы внедрить любые шрифты, в которых внедрение запрещено или не соблюдать следующие рекомендации по внедрению шрифтов. Лицензия шрифта может предоставить только разрешение на чтение и запись для установки и использования шрифта на целевом компьютере. Или лицензия может предоставить разрешение только для чтения. Разрешение только для чтения позволяет просматривать и печатать документ (но не изменять) конечным компьютером; документы с внедренными шрифтами только для чтения являются только для чтения. Встроенные шрифты только для чтения не могут быть распучены из документа и установлены на целевом компьютере.

Приложение может определить состояние лицензии, вызвав функцию getOutlineTextMetricsи проверив элемент otmfsType структуры OUTLINETEXTMETRIC. Если установлен бит 1 из otmfsType, внедрение не допускается для шрифта. Если бит 1 ясно, шрифт может быть внедрен. Если задан бит 2, внедрение доступно только для чтения.

Чтобы внедрить шрифт TrueType, приложение может использовать функцию GetFontData для чтения файла шрифта. Установка dwTable и dwOffset параметров GetFontData 0L , а параметр cbData cbData — 1L, гарантирует, что приложение считывает весь файл шрифта с самого начала.

Некоторые функции доступны для внедрения шрифтов OpenType в зависимости от ширины символов и расположения данных шрифта. Чтобы внедрить шрифт OpenType Юникода, который находится в контексте устройства, приложение может использовать TTEmbedFont. Чтобы внедрить шрифт OpenType UCS-4, который находится в контексте устройства, приложение может использовать TTEmbedFontEx. Чтобы внедрить шрифт OpenType Юникода, который находится в файле шрифта, приложение может использовать TTEmbedFontFromFile. Дополнительные сведения о внедрении шрифтов OpenType см. в справочнике по внедрению шрифтов.

После получения данных шрифта приложение может хранить данные с документом с помощью любого применимого формата. Большинство приложений создают каталог шрифтов в документе, перечисляя внедренные шрифты и независимо от того, является ли внедрение только для чтения или записи или чтения. Приложение может использовать otmpStyleName и otmFamilyName членов структуры OUTLINETEXTMETRIC для идентификации шрифта.

Если для внедренного шрифта задан только для чтения, приложения должны шифровать данные шрифта перед сохранением его с помощью документа. Метод шифрования не должен быть сложным; Например, использование оператора XOR для объединения данных шрифта с определенной приложением константой достаточно и быстро.