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


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

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

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

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

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

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

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

Назад в оглавление темы
На главную страницу темы

Hosted by uCoz