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.
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.
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 |