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


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

Отображает текст для указанной фигуры скрипта и сведений о месте.

Синтаксис

HRESULT ScriptTextOut(
  [in]           const HDC             hdc,
  [in, out]      SCRIPT_CACHE          *psc,
  [in]           int                   x,
  [in]           int                   y,
  [in]           UINT                  fuOptions,
  [in, optional] const RECT            *lprc,
  [in]           const SCRIPT_ANALYSIS *psa,
  [in]           const WCHAR           *pwcReserved,
  [in]           int                   iReserved,
  [in]           const WORD            *pwGlyphs,
  [in]           int                   cGlyphs,
  [in]           const int             *piAdvance,
  [in, optional] const int             *piJustify,
  [in]           const GOFFSET         *pGoffset
);

Параметры

[in] hdc

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

[in, out] psc

Указатель на структуру SCRIPT_CACHE , определяющую кэш скриптов.

[in] x

Значение координаты x первого глифа.

[in] y

Значение координаты Y первого глифа.

[in] fuOptions

Параметры, эквивалентные параметру fuOptionsобъекта ExtTextOut. Этому параметру можно задать значение ETO_CLIPPED или ETO_OPAQUE, оба значения или ни одно из значений.

[in, optional] lprc

Указатель на структуру RECT , содержащую прямоугольник, используемый для обрезки дисплея. Приложение может задать для этого параметра значение NULL.

[in] psa

Указатель на структуру SCRIPT_ANALYSIS , полученную при предыдущем вызове ScriptItemize.

[in] pwcReserved

Защищены; необходимо задать значение NULL.

[in] iReserved

Защищены; значение должно иметь значение 0.

[in] pwGlyphs

Указатель на массив глифов, полученных при предыдущем вызове ScriptShape.

[in] cGlyphs

Количество глифов в массиве, указанное pwGlyphs. Максимальное число глифов — 65 536.

[in] piAdvance

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

[in, optional] piJustify

Указатель на массив оправданных ширин (ширины ячеек). Приложение может задать для этого параметра значение NULL.

[in] pGoffset

Указатель на структуру GOFFSET , содержащую смещения x и y для комбинированного глифа.

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

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

Комментарии

Эта функция вызывает функцию ExtTextOut операционной системы для отображения текста. Дополнительные сведения см. в разделе Отображение текста с помощью Uniscribe.

Все массивы находятся в порядке отображения, если только элемент fLogicalOrder не задан в структуре SCRIPT_ANALYSIS , указанной psa.

Для любого запуска, отображаемого справа налево и созданного в логическом порядке путем принудительного применения элемента fLogicalOrderSCRIPT_ANALYSIS, приложение должно вызвать SetTextAlign (hdc, TA_RIGHT) и задать правую координату перед вызовом ScriptTextOut.

Массив, указанный piJustify , предоставляет ширину ячеек для каждого глифа. Если ширина глифа отличается от неоправданной ширины, заданной параметром piAdvance, пространство добавляется или удаляется из ячейки глифа в ее конце. Глиф всегда выравнивается по переднему краю ячейки. Это правило применяется даже в визуальном порядке.

При расширении ячейки глифа дополнительное пространство обычно составляется за счет добавления пробела. Однако для арабской письменности дополнительное пространство состоит из одного или нескольких глифов кашиды, если только дополнительного места недостаточно для самого короткого глифа кашиды в шрифте. Ширина самого короткого kashida доступна путем вызова ScriptGetFontProperties.

Приложение должно передавать значение для piJustify только в том случае, если строка должна быть оправдана с помощью ScriptTextOut. Обычно приложение должно передавать значение NULL.

Приложение не должно использовать ScriptTextOut для записи в метафайл, если только метафайл не будет воспроизведен без подстановки шрифта, например, непосредственно в той же системе для масштабируемого предварительного просмотра страницы. ScriptTextOut записывает номера глифов в метафайл. Так как числа глифов значительно отличаются от одного шрифта к другому, файл вряд ли будет воспроизводиться правильно при замене разных шрифтов. Например, при воспроизведении метафайла в другом масштабе запрос CreateFont , записанный в метафайле, может разрешаться в точечный рисунок вместо шрифта TrueType. Аналогичным образом, если метафайл воспроизводится на другом компьютере, запрошенные шрифты могут не быть установлены. Чтобы писать сложные скрипты в метафайл независимо от шрифта, приложение должно использовать ExtTextOut для записи логических символов напрямую, чтобы генерирование и размещение глифов не происходили до тех пор, пока текст не будет воспроизведен.

Важно Начиная с 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

GOFFSET

SCRIPT_ANALYSIS

SCRIPT_CACHE

ScriptGetFontProperties

ScriptItemize

ScriptPlace

ScriptShape

Одноимесяца

Функции uniscribe