Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Разбивает строку Юникода на элементы, которые могут быть индивидуально сформированы.
Синтаксис
HRESULT ScriptItemize(
[in] const WCHAR *pwcInChars,
[in] int cInChars,
[in] int cMaxItems,
[in, optional] const SCRIPT_CONTROL *psControl,
[in, optional] const SCRIPT_STATE *psState,
[out] SCRIPT_ITEM *pItems,
[out] int *pcItems
);
Параметры
[in] pwcInChars
Указатель на строку Юникода для элемента.
[in] cInChars
Количество символов в pwcInChars для элемента.
[in] cMaxItems
Максимальное количество SCRIPT_ITEM структур, определяющих обрабатываемые элементы.
[in, optional] psControl
Указатель на структуру SCRIPT_CONTROL , указывающую тип элементов для выполнения.
Кроме того, приложение может задать для этого параметра значение NULL , если свойства SCRIPT_CONTROL не требуются. Дополнительные сведения см. в разделе «Примечания».
[in, optional] psState
Указатель на структуру SCRIPT_STATE , указывающую начальное двунаправленное состояние алгоритма.
Кроме того, приложение может задать для этого параметра значение NULL , если состояние скрипта не требуется. Дополнительные сведения см. в разделе «Примечания».
[out] pItems
Указатель на буфер, в котором функция извлекает SCRIPT_ITEM структур, представляющих обработанные элементы. Буфер должен иметь длину (cMaxItems + 1) * sizeof(SCRIPT_ITEM) в байтах. Недопустимо вызывать эту функцию с буфером для хранения менее двух SCRIPT_ITEM структур. Функция всегда добавляет элемент терминала в массив анализа элементов, чтобы длина элемента с отсчитываемого от нуля индекса "i" всегда была доступна следующим образом:
pItems[i+1].iCharPos - pItems[i].iCharPos;
[out] pcItems
Указатель на количество обработанных SCRIPT_ITEM структур.
Возвращаемое значение
Возвращает 0 в случае успеха. Функция возвращает ненулевое значение HRESULT, если не удалось.
Функция возвращает E_INVALIDARG, если для pwcInChars задано значение NULL, cInChars — 0, pItems — NULL или cMaxItems< 2.
Функция возвращает E_OUTOFMEMORY, если значения cMaxItems недостаточно. Как и во всех случаях ошибок, ни одна из элементов не обрабатывается полностью, и ни одна часть выходного массива не содержит определенных значений. Если функция возвращает E_OUTOFMEMORY, приложение может вызвать его снова с большим буфером pItems .
Комментарии
Описание контекста, в котором обычно вызывается эта функция, см. в разделе Отображение текста с помощью uniscribe .
Функция разделяет элементы по изменению модуля формирования или изменению направления.
Приложение может создавать несколько диапазонов или запусков, полностью входящих в один элемент, из каждой SCRIPT_ITEM структуры, полученной ScriptItemize. Однако не следует объединять несколько элементов в один запуск. Позже при измерении или отрисовке приложение может вызывать ScriptShape для каждого запуска и должно передать SCRIPT_ANALYSIS структуру, полученную ScriptItemize , в SCRIPT_ITEM структуре.
Если текст, обрабатываемый приложением, может содержать любое содержимое справа налево, приложение использует параметры psControl и psState при вызове ScriptItemize. Однако приложению не нужно это делать, и оно может обрабатывать сам двунаправленный текст, а не полагаться на Uniscribe. Параметры psControl и psState полезны в некоторых сценариях строго слева направо, например, когда член fLinkStringBeforeSCRIPT_CONTROL не является специфическим для сценариев справа налево. Приложение устанавливает для psControl и psStateзначение NULL , чтобы ScriptItemize разорвать строку Юникода исключительно по коду символов.
Приложение может задать для всех параметров значения, отличные от NULL , чтобы функция выполняла полный двунаправленный анализ Юникода. Чтобы обеспечить правильный двунаправленный анализ Юникода, структура SCRIPT_STATE должна быть инициализирована в соответствии с порядком чтения в начале абзаца, а scriptItemize должна быть передана всему абзацу . В частности, член uBidiLevel должен быть инициализирован 0 для слева направо и 1 для справа налево.
На элемент fRTLSCRIPT_ANALYSIS ссылается SCRIPT_ITEM enabled="1". Элемент fNumericSCRIPT_PROPERTIES извлекается с помощью ScriptGetProperties. Вместе эти элементы обеспечивают ту же классификацию, что и член lpClassGCP_RESULTS, на который ссылается lpResults в GetCharacterPlacement.
Европейские цифры от U+0030 до U+0039 можно преобразовать в национальные цифры, как показано в следующей таблице.
| SCRIPT_STATE.fDigitSubstitute | SCRIPT_CONTROL.fContextDigits | Фигуры цифр, отображаемые для Юникода от U+0030 до U+0039 |
|---|---|---|
| FALSE | Любой | Европейские цифры |
| TRUE | FALSE | Как указано в элементе uDefaultLanguageSCRIPT_CONTROL. |
| TRUE | TRUE | Как и предыдущий строгий текст, по умолчанию используется элемент uDefaultLanguageSCRIPT_CONTROL. |
В контекстном режиме цифр выполняется одно из следующих действий:
- Если скрипт, заданный параметром uDefaultLanguage , находится в том же направлении, что и выходные данные, все цифры, встречавшиеся до первых букв, отрисовываются на языке, указанном uDefaultLanguage.
- Если скрипт, заданный uDefaultLanguage , находится в противоположном направлении от выходных данных, все цифры, встречавшиеся до первых букв, преобразуются в европейские цифры.
Дополнительные сведения см. в разделе Фигуры цифр.
Управляющие символы и определения Юникода, а также их влияние на SCRIPT_STATE элементы приведены в следующей таблице. Дополнительные сведения об управляющих символах Юникода см. в разделе Стандарт Юникода.
| Управляющие символы Юникода | Значение | Влияние на SCRIPT_STATE |
|---|---|---|
| NADS | Переопределите европейские цифры (NODS) национальными фигурами цифр. | Задайте параметр fDigitSubstitute. |
| КИВАЕТ | Используйте фигуры номинальных цифр, также известные как европейские цифры. См. раздел NADS. | Снимите флажок fDigitSubstitute. |
| ЖОПА | Активируйте переключение симметричные пары, например круглые скобки. Для этих символов слева и справа интерпретируются как открывающая и закрывающая. Это значение по умолчанию. См. раздел ISS. | Очистить fInhibitSymSwap. |
| ISS | Запретить переключение симметрических пар. См. раздел ASS. | Задайте fInhibitSymSwap. |
| AAFS | Активация формирования арабских форм для арабских форм презентации. См. раздел IAFS. | Задайте fCharShape. |
| IAFS | Препятствуют формированию арабской формы, т. е. лигатур и крививных связей, для арабских форм представления. Номинальные арабские символы не затрагиваются. Это значение по умолчанию. См. раздел AAFS. | Снимите флажок fCharShape. |
Элемент fArabicNumContextSCRIPT_STATE поддерживает контекстно-зависимый отображение цифр в тексте арабского письма. Указывает, отображаются ли цифры с помощью собственных арабских букв или европейских цифр. В начале абзаца этот элемент обычно должен инициализироваться значением TRUE для арабского языкового стандарта или FALSE для любого другого языкового стандарта. Функция обновляет состояние скрипта по мере обработки строгого текста.
Требования
| Требование | Значение |
|---|---|
| Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
| Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
| Целевая платформа | Windows |
| Header | usp10.h |
| Библиотека | Usp10.lib |
| DLL | Usp10.dll |
| Распространяемые компоненты | Internet Обозреватель 5 или более поздней версии в Windows Me/98/95 |