Compartir a través de


Función ScriptItemize (usp10.h)

Divide una cadena Unicode en elementos con forma individual.

Sintaxis

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
);

Parámetros

[in] pwcInChars

Puntero a una cadena Unicode que se va a desglosar.

[in] cInChars

Número de caracteres de pwcInChars que se van a detallar.

[in] cMaxItems

Número máximo de estructuras de SCRIPT_ITEM que definen los elementos que se van a procesar.

[in, optional] psControl

Puntero a una estructura de SCRIPT_CONTROL que indica el tipo de itemización que se va a realizar.

Como alternativa, la aplicación puede establecer este parámetro en NULLsi no se necesita ninguna SCRIPT_CONTROL propiedades. Para obtener más información, vea la sección Comentarios.

[in, optional] psState

Puntero a una estructura de SCRIPT_STATE que indica el estado inicial del algoritmo bidireccional.

Como alternativa, la aplicación puede establecer este parámetro en NULL si el estado del script no es necesario. Para obtener más información, vea la sección Comentarios.

[out] pItems

Puntero a un búfer en el que la función recupera SCRIPT_ITEM estructuras que representan los elementos que se han procesado. El búfer debe tener (cMaxItems + 1) * sizeof(SCRIPT_ITEM) una longitud de bytes. No es válido llamar a esta función con un búfer para contener menos de dos estructuras SCRIPT_ITEM . La función siempre agrega un elemento terminal a la matriz de análisis de elementos para que la longitud del elemento con el índice de base cero "i" esté siempre disponible como:

pItems[i+1].iCharPos - pItems[i].iCharPos;

[out] pcItems

Puntero al número de estructuras de SCRIPT_ITEM procesadas.

Valor devuelto

Si la operación se realiza correctamente, devuelve 0. La función devuelve un valor HRESULT distinto de cero si no se realiza correctamente.

La función devuelve E_INVALIDARG si pwcInChars se establece en NULL, cInChars es 0, pItems se establece en NULL o cMaxItems< 2.

La función devuelve E_OUTOFMEMORY si el valor de cMaxItems no es suficiente. Como en todos los casos de error, ningún elemento se procesa por completo y ninguna parte de la matriz de salida contiene valores definidos. Si la función devuelve E_OUTOFMEMORY, la aplicación puede llamarla de nuevo con un búfer pItems mayor.

Comentarios

Vea Mostrar texto con Uniscribe para obtener una explicación del contexto en el que normalmente se llama a esta función.

La función delimita los elementos mediante un cambio de forma del motor o un cambio de dirección.

La aplicación puede crear varios intervalos o ejecuciones que se encuentran completamente dentro de un solo elemento, de cada estructura de SCRIPT_ITEM recuperada por ScriptItemize. Sin embargo, no debe combinar varios elementos en una sola ejecución. Más adelante, al medir o representar, la aplicación puede llamar a ScriptShape para cada ejecución y debe pasar la estructura de SCRIPT_ANALYSIS recuperada por ScriptItemize en la estructura SCRIPT_ITEM .

Si el texto controlado por una aplicación puede incluir cualquier contenido de derecha a izquierda, la aplicación usa los parámetros psControl y psState en una llamada a ScriptItemize. Sin embargo, la aplicación no tiene que hacerlo y puede controlar el texto bidireccional en lugar de depender de Uniscribe para hacerlo. Los parámetros psControl y psState son útiles en algunos escenarios estrictamente de izquierda a derecha, por ejemplo, cuando el miembro fLinkStringBefore de SCRIPT_CONTROL no es específico de los scripts de derecha a izquierda. La aplicación establece psControl y psState en NULL para que ScriptItemize interrumpa la cadena Unicode únicamente por código de carácter.

La aplicación puede establecer todos los parámetros en valores que no son NULL para que la función realice un análisis bidireccional Unicode completo. Para permitir un análisis bidireccional Unicode correcto, la estructura de SCRIPT_STATE debe inicializarse según el orden de lectura al principio del párrafo y ScriptItemize debe pasarse todo el párrafo. En concreto, el miembro uBidiLevel debe inicializarse en 0 para de izquierda a derecha y 1 para derecha a izquierda.

Se hace referencia al miembro fRTL de SCRIPT_ANALYSIS en SCRIPT_ITEM enabled="1". ScriptGetProperties recupera el miembro fNumeric de SCRIPT_PROPERTIES. Estos miembros proporcionan la misma clasificación que el miembro lpClass de GCP_RESULTS, al que hace referencia lpResults en GetCharacterPlacement.

Los dígitos europeos U+0030 a U+0039 se pueden representar como dígitos nacionales, como se muestra en la tabla siguiente.

SCRIPT_STATE.fDigitSubstitute SCRIPT_CONTROL.fContextDigits Formas de dígitos mostradas para Unicode U+0030 a U+0039
FALSE Any Dígitos europeos
TRUE FALSE Tal como se especifica en el miembro uDefaultLanguage de SCRIPT_CONTROL.
TRUE TRUE Como texto seguro anterior, el valor predeterminado es el miembro uDefaultLanguage de SCRIPT_CONTROL.
 

En el modo de dígitos de contexto, se produce una de las siguientes acciones:

  • Si el script especificado por uDefaultLanguage está en la misma dirección que la salida, todos los dígitos encontrados antes de las primeras letras se representan en el idioma indicado por uDefaultLanguage.
  • Si el script especificado por uDefaultLanguage está en la dirección opuesta de la salida, todos los dígitos encontrados antes de las primeras letras se representan en dígitos europeos.
Por ejemplo, si uDefaultLanguage indica LANG_ARABIC, los dígitos iniciales se encuentran en Arabic-Indic en una inserción de derecha a izquierda. Sin embargo, están en dígitos europeos en una inserción de izquierda a derecha.

Para obtener más información, vea Formas de dígitos.

Los caracteres y definiciones de control Unicode, y sus efectos en SCRIPT_STATE miembros, se proporcionan en la tabla siguiente. Para obtener más información sobre los caracteres de control Unicode, vea El estándar Unicode.

Caracteres de control Unicode Significado Efecto en SCRIPT_STATE
NADS Invalide los dígitos europeos (NODS) con formas de dígitos nacionales. Establezca fDigitSubstitute.
CABECEA Use formas nominales de dígitos, lo que se conoce como dígitos europeos. Consulte NADS. Borre fDigitSubstitute.
CULO Active el intercambio de pares simétricos, por ejemplo, paréntesis. Para estos caracteres, los caracteres izquierdo y derecho se interpretan como apertura y cierre. Este es el valor predeterminado. Consulte ISS. Borre fInhibitSymSwap.
ISS Inhiba el intercambio de pares simétricos. Consulte ASS. Establezca fInhibitSymSwap.
AAFS Active la forma del formulario árabe para los formularios de presentación en árabe. Consulte IAFS. Establezca fCharShape.
IAFS Inhiba la forma de formulario árabe, es decir, ligaduras y conexiones cursivas, para los formularios de presentación árabe. Los caracteres arábigos nominales no se ven afectados. Este es el valor predeterminado. Consulte AAFS. Borre fCharShape.
 

El miembro fArabicNumContext de SCRIPT_STATE admite la presentación contextual de números en el texto del script árabe. Indica si los dígitos se representan mediante formas de dígitos de script árabe nativo o dígitos europeos. Al principio de un párrafo, este miembro normalmente debe inicializarse en TRUE para una configuración regional árabe o FALSE para cualquier otra configuración regional. La función actualiza el estado del script a medida que procesa texto seguro.

Importante A partir de Windows 8: para mantener la capacidad de ejecutarse en Windows 7, un módulo que usa Uniscribe debe especificar Usp10.lib antes de gdi32.lib en su lista de bibliotecas.
 

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado usp10.h
Library Usp10.lib
Archivo DLL Usp10.dll
Redistribuible Internet Explorer 5 o posterior en Windows Me/98/95

Consulte también

Mostrar texto con uniscribe

SCRIPT_ANALYSIS

SCRIPT_CONTROL

SCRIPT_ITEM

SCRIPT_PROPERTIES

SCRIPT_STATE

ScriptItemizeOpenType

ScriptShape

Uniscribe

Funciones uniscribe