Внедренные шрифты
Внедрение шрифта - методика связывания документа и шрифтов, которые содержатся в этом файле для передачи на другой компьютер. Внедрение шрифта гарантирует, что шрифт, установленный в переданном файле, будет представлен на компьютере, получающем файл. Однако не все шрифты могут быть перемещены с компьютера на компьютер, так как большинство шрифтов лицензируется одновременно только для одного компьютера. Внедренными могут быть только шрифты TrueType и OpenType.
Прикладные программы должны внедрять шрифт в документ, только тогда, когда это требуется пользователю. Приложение не может быть определено наряду с документами, которые содержат внедренные шрифты, и при этом само приложение не может содержать внедренный шрифт. Всякий раз, когда приложение распределяет шрифт, в любом формате, должны быть подтверждены частные права владельца шрифта.
Может произойти нарушение частных прав продавца шрифта или лицензионного соглашения пользователя, когда внедряются любые шрифты, где внедрение не разрешается или не в состоянии соблюдать последующие рекомендации о внедренных шрифтах. Лицензия шрифта может давать разрешение только чтения - записи для шрифта, который будет установлен и использован на принимающем компьютере. Или лицензия может давать разрешение только для чтения. Разрешение только для чтения дает возможность просмотреть и отпечатать документ (но не модифицировать) принимающим компьютером; документы с внедренными шрифтами только для чтения сами становятся только для чтения. Внедренные шрифты только для чтения не могут быть отделены от документа и установлены на принимающем компьютере.
Приложение может выяснить состояние лицензии путем вызова функции
GetOutlineTextMetrics и проверить член otmfsType структуры OUTLINETEXTMETRIC. Если бит 1 члена otmfsType установлен, внедрение для шрифта не разрешается. Если бит 1 сброшен, шрифт может быть внедрен. Если бит 2 установлен, внедрение только для чтения.Чтобы внедрить шрифт, приложение может использовать функцию
GetFontData, чтобы читать файл шрифта. Установка параметров dwTable и dwOffset функции GetFontData в 0L, а параметр cbData в - (минус)1L гарантирует, что приложение полностью прочитает файл шрифта с начала.После того, как приложение извлечет данные о шрифте, оно может сохранить эти данные с документом при помощи использования любого соответствующего формата. Большинство прикладных программ формирует каталог шрифтов в документе, внося в список внедряемые шрифты, и внедренные для чтения - записи или только для чтения. Приложение может использовать члены
otmpStyleName и otmFamilyName структуры OUTLINETEXTMETRIC, чтобы идентифицировать шрифт.Если для внедренного шрифта бит только для чтения установлен, прикладные программы должны зашифровать данные шрифта перед сохранением их с документом. Метод кодирования не должен быть усложненным; например, использование оператора XOR, который адекватно и быстро объединяет данные шрифта с определяемой программой константой.