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


Использование подсистем формирования

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

Так как точные диапазоны кодовых точек, назначенные каждому механизму формирования, могут отличаться, номера скриптов не публикуются, за исключением SCRIPT_UNDEFINED. Однако приложение может тестировать атрибуты скриптов, вызывая функцию ScriptGetProperties , которая обращается к глобальной таблице свойств скрипта. Приложение может использовать свойства глобального скрипта для объединения собственных правил макета с необходимыми подразделениями подсистемы формирования.

Приложение обращается к механизму формирования с помощью вызова функции ScriptShape . Все сложные механизмы формирования скриптов, механизмы формирования цифр и механизмы формирования ASCII проверяют шрифт, указанный в дескрипторе контекста устройства, перед формированием. Чтобы быть разборчивыми, сложные скрипты должны быть сформированы с помощью скрипта, возвращаемого функцией ScriptItemize . Другие запуски остаются разборчивыми, если они имеют SCRIPT_UNDEFINED, указанные в элементе eScriptструктуры SCRIPT_ANALYSIS , хотя они могут потерять типографическое качество.

ScriptShape возвращает значение 0 в случае успешного выполнения или USP_E_SCRIPT_NOT_IN_FONT, если шрифт, предоставляемый приложением, не содержит достаточного количества глифов или формирующих таблиц. Если приложение указывает SCRIPT_UNDEFINED, а некоторые символы не поддерживаются шрифтом, функция по-прежнему выполняется успешно. В этом случае приложение должно проверять выходной буфер глифов на наличие отсутствующих глифов. Стратегии для борьбы с отсутствующими глифами см. в разделе Использование резервного копирования шрифтов.

Использование Uniscribe