estructura SCRIPT_PROPERTIES (usp10.h)
Contiene información sobre el procesamiento especial para cada script.
Sintaxis
typedef struct {
DWORD langid : 16;
DWORD fNumeric : 1;
DWORD fComplex : 1;
DWORD fNeedsWordBreaking : 1;
DWORD fNeedsCaretInfo : 1;
DWORD bCharSet : 8;
DWORD fControl : 1;
DWORD fPrivateUseArea : 1;
DWORD fNeedsCharacterJustify : 1;
DWORD fInvalidGlyph : 1;
DWORD fInvalidLogAttr : 1;
DWORD fCDM : 1;
DWORD fAmbiguousCharSet : 1;
DWORD fClusterSizeVaries : 1;
DWORD fRejectInvalid : 1;
} SCRIPT_PROPERTIES;
Miembros
langid
Identificador de idioma del idioma asociado al script. Cuando se usa un script para muchos lenguajes, este miembro representa un idioma predeterminado. Por ejemplo, el script occidental se representa mediante LANG_ENGLISH aunque también se usa para francés, alemán y otros idiomas europeos.
fNumeric
Valor que indica si un script contiene solo dígitos y los demás caracteres usados en la escritura de números por las reglas del algoritmo bidireccional Unicode. Por ejemplo, los símbolos de moneda, el separador de miles y el separador decimal se clasifican como numéricos cuando son adyacentes o entre dígitos. Los valores posibles para este miembro se definen en la tabla siguiente.
fComplex
Valor que indica un script complejo para un lenguaje que requiere una forma o un diseño especiales. Los valores posibles se definen en la tabla siguiente.
Valor | Significado |
---|---|
|
El script requiere un diseño o una forma especiales. |
|
El script no contiene caracteres combinados y no requiere ninguna forma contextual ni reordenación. |
fNeedsWordBreaking
Valor que indica el tipo de ubicación de salto de palabra para un idioma. Los valores posibles se definen en la tabla siguiente.
Valor | Significado |
---|---|
|
El idioma tiene ubicación de salto de palabras que requiere que la aplicación llame a ScriptBreak y que incluya posiciones de caracteres marcadas por el miembro fWordStop en SCRIPT_LOGATTR. |
|
Word colocación de salto se identifica mediante el examen de caracteres marcados por el miembro fWhiteSpace en SCRIPT_LOGATTR, o para glifos marcados por el valor SCRIPT_JUSTIFY_BLANK o SCRIPT_JUSTIFY_ARABIC_BLANK para el miembro uJustification de SCRIPT_VISATTR. |
fNeedsCaretInfo
Valor que indica si un idioma, por ejemplo, tailandés o indio, restringe la colocación de intercalación a los límites del clúster. Los valores posibles se definen en la tabla siguiente. Para determinar las posiciones de intercalación válidas, la aplicación inspecciona el valor fCharStop en los atributos lógicos recuperados por ScriptBreak o compara los valores adyacentes de la matriz pwLogClust recuperada por ScriptShape.
Valor | Significado |
---|---|
|
El idioma restringe la colocación de intercalación a los límites del clúster. |
|
El idioma no restringe la colocación de intercalación a los límites del clúster. |
bCharSet
Juego de caracteres nominal asociado al script. Durante la creación de una fuente adecuada para mostrar el script, este juego de caracteres se puede usar como valor del miembro lfCharSet de LOGFONT.
Para un nuevo script que no tenga ningún juego de caracteres definido, la aplicación normalmente debe establecer bCharSet en DEFAULT_CHARSET. Vea la descripción del miembro fAmbiguousCharSet.
fControl
Valor que indica si solo se usan caracteres de control en el script. Los valores posibles se definen en la tabla siguiente. Tenga en cuenta que todos los caracteres de control no terminan en una estructura de SCRIPT_CONTROL .
Valor | Significado |
---|---|
|
Establezca solo caracteres de control en el script. |
|
No establezca solo caracteres de control en el script. |
fPrivateUseArea
Valor que indica el uso de un área de uso privado, un conjunto especial de caracteres que se define de forma privada para el intervalo Unicode U+E000 a U+F8FF. Los valores posibles se definen en la tabla siguiente.
Valor | Significado |
---|---|
|
Use un área de uso privado. |
|
No use un área de uso privado. |
fNeedsCharacterJustify
Valor que indica el control de la justificación del script aumentando todos los espacios entre letras, no solo los espacios entre palabras. Los valores posibles se definen en la tabla siguiente. Al realizar una justificación entre caracteres, Uniscribe inserta espacio adicional solo después de los glifos marcados con el valor de SCRIPT_JUSTIFY_CHARACTER para el miembro uJustification de SCRIPT_VISATTR.
Valor | Significado |
---|---|
|
Use la justificación de caracteres. |
|
No use la justificación de caracteres. |
fInvalidGlyph
Valor que indica si ScriptShape genera un glifo no válido para que un script represente secuencias no válidas. Los valores posibles se definen en la tabla siguiente. La aplicación puede obtener el índice de glifo del glifo no válido para una fuente determinada llamando a ScriptGetFontProperties.
Valor | Significado |
---|---|
|
Genere un glifo no válido para representar secuencias no válidas. |
|
No genere un glifo no válido para representar secuencias no válidas. |
fInvalidLogAttr
Valor que indica si ScriptBreak marca combinaciones no válidas para un script estableciendo fInvalid en el búfer de atributos lógicos. Los valores posibles se definen en la tabla siguiente.
Valor | Significado |
---|---|
|
Marque combinaciones no válidas para el script. |
|
No marque combinaciones no válidas para el script. |
fCDM
Valor que indica si un script contiene un elemento analizado por ScriptItemize como combinación de marcas diacríticas (U+0300 a U+36F). Los valores posibles se definen en la tabla siguiente.
Valor | Significado |
---|---|
|
El script contiene un elemento que incluye la combinación de marcas diacríticas. |
|
El script no contiene un elemento que incluye la combinación de marcas diacríticas. |
fAmbiguousCharSet
Valor que indica si un script contiene caracteres admitidos por más de un juego de caracteres. Los valores posibles se definen en la tabla siguiente.
Valor | Significado |
---|---|
|
El script contiene caracteres admitidos por más de un juego de caracteres. En este caso, se debe omitir el miembro bCharSet de esta estructura y el miembro lfCharSet de LOGFONT debe establecerse en DEFAULT_CHARSET. Vea la sección Comentarios para obtener más información. |
|
El script no contiene caracteres admitidos por más de un juego de caracteres. |
fClusterSizeVaries
Valor que indica si un script, como el árabe, puede usar la forma contextual que hace que una cadena aumente de tamaño durante la eliminación de caracteres. Los valores posibles se definen en la tabla siguiente.
Valor | Significado |
---|---|
|
Use un tamaño de clúster variable para dar forma contextual. |
|
No use un tamaño de clúster variable para dar forma contextual. |
fRejectInvalid
Valor que indica si un script, por ejemplo, tailandés, debe rechazar secuencias no válidas que normalmente hacen que un programa de editor, como el Bloc de notas, pita y omita las pulsaciones de teclas. Los valores posibles se definen en la tabla siguiente.
Valor | Significado |
---|---|
|
Rechazar secuencias no válidas. |
|
No rechace secuencias no válidas. |
Comentarios
Esta estructura se rellena mediante la función ScriptGetProperties .
Muchos scripts uniscribe no se corresponden directamente con los juegos de caracteres de 8 bits. Cuando algunos de los caracteres de un script son compatibles con más de un juego de caracteres, se establece el miembro fAmbiguousCharSet . La aplicación debe seguir procesando para determinar el juego de caracteres que se usará al solicitar una fuente adecuada para la ejecución. Por ejemplo, podría determinar que la ejecución consta de varios idiomas y dividir la ejecución para que se use una fuente diferente para cada idioma.
La aplicación usa el código siguiente durante la inicialización para obtener un puntero a la matriz SCRIPT_PROPERTIES .
const SCRIPT_PROPERTIES **ppScriptProperties; // Array of pointers
// to properties
int iMaxScript;
HRESULT hr;
hr = ScriptGetProperties(&ppScriptProperties, &iMaxScript);
A continuación, la aplicación puede inspeccionar las propiedades del script de un elemento como se muestra en el ejemplo siguiente.
hr = ScriptItemize(pwcInChars, cInChars, cMaxItems, psControl, psState, pItems, pcItems);
//...
if (ppScriptProperties[pItems[iItem].a.eScript]->fNeedsCaretInfo)
{
// Use ScriptBreak to restrict the caret from entering clusters (for example).
}
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] |
Encabezado | usp10.h |