Procesamiento de scripts complejos

Para proporcionar una justificación de texto, una aplicación puede usar uno de los dos métodos. Para una implementación sencilla de justificación multilingüe, la aplicación debe llamar a ScriptJustify. Genera la matriz delta dx considerando kashida, interword spacing y, a continuación, intercharacter spacing. Para una justificación más sofisticada, la aplicación puede generar una matriz delta dx actualizada mediante su propio conocimiento de lenguaje y la información recuperada por ScriptShape en la matriz SCRIPT_VISATTR .

El espacio de justificación o kashida debe insertarse cuando se identifique por el miembro uJustification de SCRIPT_VISATTR. Al realizar una justificación entre caracteres, la aplicación debe insertar espacio adicional solo después de los glifos marcados con SCRIPT_JUSTIFY_CHARACTER.

La aplicación realiza la colocación de intercalación y las pruebas de posicionamiento mediante ScriptXtoCP y ScriptCPtoX. Para obtener más información, consulte Managing Caret Placement and Hit Testing.

Para obtener anchos de forma independiente de fuente, la aplicación llama a ScriptGetLogicalWidths. Al pasar los anchos lógicos a ScriptApplyLogicalWidth, se puede volver a reproducir un bloque de texto en los mismos límites con pérdida aceptable de calidad incluso cuando la fuente original no está disponible. Genera una matriz de anchos de glifo (anchos avanzados) adecuados para pasar a ScriptTextOut. Esta grabación y aplicación de información de ancho avanzada de manera independiente de fuente puede ser útil en situaciones como la metafiling en un formato definido por la aplicación.

Nota

Los metarchivos no admiten índices de glifo. Para escribir en un metarchivo mejorado, la aplicación debe usar ExtTextOut y escribir los caracteres lógicos directamente. Con este mecanismo, la generación y colocación del glifo no se producen hasta que se reproduce el texto.

 

Para recuperar los glifos específicos que se usan para los valores predeterminados, en blanco, kashida, etc., para la fuente actual, la aplicación debe llamar a ScriptGetFontProperties. Para determinar qué caracteres de una ejecución son compatibles con la fuente seleccionada, la aplicación llama a ScriptGetCMap. Los caracteres que no están disponibles tienen el glifo predeterminado en el búfer de glifos. Tenga en cuenta que este método produce un error si una fuente representa un carácter mediante una combinación de glifos en lugar de un solo glifo. Por ejemplo, 00C9; LA LETRA LATINA MAYÚSCULA E WITH ACUTE se puede representar mediante un glifo E mayúscula y un glifo agudo. Para determinar la compatibilidad de fuentes con una cadena que contiene estos tipos de puntos de código, la aplicación puede llamar a ScriptShape. Para obtener más información, vea Uso de motores de forma.

La función ScriptCacheGetHeight devuelve el alto de la fuente de la memoria caché de fuentes. ScriptGetProperties proporciona información sobre el procesamiento especial necesario para todos los scripts, indizado por script. Por ejemplo, incluye el idioma principal asociado al script, los datos que indican si el script es numérico y los datos que indican si el script es un script complejo.

ScriptGetGlyphABCWidth devuelve el ancho ABC de un glifo determinado, que podría ser útil para dibujar gráficos de glifos. Sin embargo, no se debe usar para el formato normal de texto de script complejo.

Uso de Uniscribe