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


Функция ScriptJustify (usp10.h)

Создает таблицу расширенных ширин, чтобы разрешить текстовое обоснование при передаче в функцию ScriptTextOut .

Синтаксис

HRESULT ScriptJustify(
  [in]  const SCRIPT_VISATTR *psva,
  [in]  const int            *piAdvance,
  [in]  int                  cGlyphs,
  [in]  int                  iDx,
  [in]  int                  iMinKashida,
  [out] int                  *piJustify
);

Параметры

[in] psva

Указатель на массив длиной, обозначаемый cGlyphs, содержащий SCRIPT_VISATTR структуры. Каждая структура содержит визуальные атрибуты для глифа в строке для обработки.

[in] piAdvance

Указатель на массив расширенных ширин, длина, обозначаемая cGlyphs, полученная при предыдущем вызове ScriptPlace.

[in] cGlyphs

Количество глифов для массивов, указанных psva и piAdvance. Этот параметр также указывает количество глифов для выходного параметра piJustify.

[in] iDx

Ширина (в пикселях) нужного изменения, либо увеличение уменьшения.

[in] iMinKashida

Минимальная ширина глифа кашида для создания.

[out] piJustify

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

Возвращаемое значение

Возвращает 0 в случае успеха. Функция возвращает ненулевое значение HRESULT, если это не удалось. Приложение может проверить возвращаемое значение с помощью макросов SUCCEEDED и FAILED .

Комментарии

Описание контекста, в котором обычно вызывается эта функция, см. в разделе Отображение текста с помощью uniscribe .

Эта функция предоставляет простую реализацию многоязычного обоснования. Он устанавливает величину корректировки, которую необходимо внести в каждой позиции глифа на линии. Он интерпретирует массив SCRIPT_VISATTR , созданный вызовом ScriptShape, присвоив главный приоритет kashida. Функция использует межсловные интервалы, если нет доступных точек kashida. Он использует межсимвольный интервал, если нет точек между словом.

Примечание Сложные форматировщики текста могут создавать собственный массив delta dx, объединяя функции, характерные для модуля форматирования, с информацией, полученной ScriptShape в массиве SCRIPT_VISATTR .
 
Приложение должно передать оправданные дополнительные ширины, созданные ScriptJustify , в ScriptTextOut в параметре piJustify .

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

Примечание Вставка Кашида происходит справа от глифа, чтобы оправдать визуально. Эта концепция используется в Microsoft Word и Microsoft PowerPoint. Любое изменение в алгоритме размещения kashida должно сопровождаться изменением соответствующего обработчика ScriptTextOut для определенного скрипта, например обработчика обоснования TextOut на арабском языке.
 
Иногда приложение пытается обработать глифы, которые не могут быть оправданы. В этом случае элементу uJustificationSCRIPT_VISATTR присваивается значение SCRIPT_JUSTIFY_NONE. В этом случае ScriptJustify копирует входной массив, указанный piAdvance , в выходной массив, указанный piJustify , и возвращает S_FALSE в приложение.
Важно Начиная с Windows 8. Чтобы поддерживать возможность запуска в Windows 7, модуль, использующий Uniscribe, должен указать Usp10.lib перед gdi32.lib в списке библиотек.
 

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header usp10.h
Библиотека Usp10.lib
DLL Usp10.dll
Распространяемые компоненты Internet Обозреватель 5 или более поздней версии в Windows Me/98/95

См. также раздел

Отображение текста с помощью Uniscribe

SCRIPT_VISATTR

ScriptPlace

ScriptShape

ScriptTextOut

Одноимесяца

Функции uniscribe