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


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

Анализирует строку обычного текста.

Синтаксис

HRESULT ScriptStringAnalyse(
  [in]           HDC                    hdc,
  [in]           const void             *pString,
  [in]           int                    cString,
  [in]           int                    cGlyphs,
  [in]           int                    iCharset,
  [in]           DWORD                  dwFlags,
  [in]           int                    iReqWidth,
  [in, optional] SCRIPT_CONTROL         *psControl,
  [in, optional] SCRIPT_STATE           *psState,
  [in, optional] const int              *piDx,
  [in, optional] SCRIPT_TABDEF          *pTabdef,
  [in]           const BYTE             *pbInClass,
  [out]          SCRIPT_STRING_ANALYSIS *pssa
);

Параметры

[in] hdc

Дескриптор контекста устройства. Если параметру dwFlags присвоено значение SSA_GLYPHS, требуется дескриптор контекста устройства. Если для dwFlags задано значение SSA_BREAK, то дескриптор контекста устройства является необязательным. Если указан дескриптор контекста устройства, функция проверяет текущий шрифт в контексте устройства. Если текущий шрифт является символьным шрифтом, функция обрабатывает строку символов как один нейтральный SCRIPT_UNDEFINED элемент.

[in] pString

Указатель на анализируемую строку. Строка должна содержать по крайней мере один символ. Это может быть строка Юникода или использовать кодировку из кодовой страницы Windows ANSI, как указано в параметре iCharset .

[in] cString

Длина анализируемой строки. Длина измеряется в символах для строки ANSI или в расширенных символах для строки Юникода. Длина должна быть не менее 1.

[in] cGlyphs

Размер буфера глифов в значениях WORD. Этот размер является обязательным. Рекомендуемый размер — (1.5 * cString + 16).

[in] iCharset

Дескриптор кодировки. Если входная строка является строкой ANSI, для этого дескриптора устанавливается идентификатор кодировки. Если строка является строкой Юникода, этот дескриптор имеет значение -1.

Определены следующие идентификаторы кодировки:

[in] dwFlags

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

Значение Значение
SSA_BREAK
Получение флагов останова, то есть символов и слов.
SSA_CLIP
Закрепите строку в iReqWidth.
SSA_DZWG
Укажите глифы представления для управляющих символов.
SSA_FALLBACK
Используйте резервные шрифты.
SSA_FIT
Оправдайте строку до iReqWidth.
SSA_GCP
Получение отсутствующих глифов и pwLogClust с помощью соглашений GetCharacterPlacement .
SSA_GLYPHS
Создание глифов, позиций и атрибутов.
SSA_HIDEHOTKEY
Удалите первый & из отображаемой строки.
SSA_HOTKEY
Замените "&" подчеркиванием на последующей кодовой точке.
SSA_HOTKEYONLY
Отображать только подчеркивание. Результирующий битовый шаблон может отображаться с помощью маски XOR для переключения видимости подчеркивания горячей клавиши без нарушения текста.
SSA_LINK
Применение связывания и сопоставления восточноазиатских шрифтов к некомплексным текстам.
SSA_METAFILE
Записывайте элементы с помощью вызовов ExtTextOutW , а не с глифами.
SSA_PASSWORD
Повторяющаяся входная строка, содержащая один символ cString times.
SSA_RTL
Используйте базовый уровень внедрения 1.
SSA_TAB
Разверните вкладки.

[in] iReqWidth

Ширина, необходимая для установки или обрезки.

[in, optional] psControl

Указатель на структуру SCRIPT_CONTROL . Приложение может присвоить этому параметру значение NULL , чтобы указать, что все члены SCRIPT_CONTROL имеют значение 0.

[in, optional] psState

Указатель на структуру SCRIPT_STATE . Приложение может задать для этого параметра значение NULL , чтобы указать, что все члены SCRIPT_STATE имеют значение 0. Элемент uBidiLevelSCRIPT_STATE игнорируется. Используемое значение является производным от флага SSA_RTL в сочетании с макетом контекста устройства.

[in, optional] piDx

Указатель на запрошенный логический массив dx.

[in, optional] pTabdef

Указатель на структуру SCRIPT_TABDEF . Это значение является обязательным, только если параметру dwFlags присвоено значение SSA_TAB.

[in] pbInClass

Указатель на значение BYTE, указывающее классификации символов GetCharacterPlacement .

[out] pssa

Указатель на буфер, в котором эта функция извлекает структуру SCRIPT_STRING_ANALYSIS . Эта структура динамически выделяется при успешном возвращении из функции.

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

В случае успешного выполнения возвращает S_OK. Функция возвращает ненулевое значение HRESULT, если не удалось.

Ошибки возвращаются:

  • E_INVALIDARG. Обнаружен недопустимый параметр.
  • USP_E_SCRIPT_NOT_IN_FONT. SSA_FALLBACK не указан или отсутствует стандартный резервный шрифт.

Функция также может возвращать системную ошибку, преобразованную в тип HRESULT. Например, возвращается ошибка из-за нехватки памяти или вызова GDI с использованием контекста устройства.

Комментарии

Использование этой функции является первым шагом в обработке строк обычного текста. Такая строка имеет только один шрифт, один стиль, один размер, один цвет и т. д. ScriptStringAnalyse выделяет временные буферы для анализа элементов, глифов, расширенных ширин и т. д. Затем автоматически запускаются ScriptItemize, ScriptShape, ScriptPlace и ScriptBreak. Результаты доступны во всех других функциях ScriptString* .

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

Хотя функциональность ScriptStringAnalyse может быть реализована путем прямых вызовов других функций, использование самой функции значительно сокращает объем кода, необходимого в приложении для обработки обычного текста.

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

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

SCRIPT_CONTROL

SCRIPT_STATE

SCRIPT_STRING_ANALYSIS

SCRIPT_TABDEF

ScriptBreak

ScriptItemize

ScriptPlace

ScriptShape

Одноимесяца

Функции uniscribe