Uso de reserva de fuentes
Nota
En este tema, todos los comentarios sobre ScriptShape se aplican igualmente a ScriptShapeOpenType.
La aplicación debe usar la reserva de fuentes durante la presentación de texto si algunos caracteres de una cadena no se admiten en la fuente, o si la aplicación usa un script complejo no compatible con la fuente. El requisito de reserva de fuentes se detecta durante el proceso de diseño para el texto, cuando la aplicación llama a la función ScriptShape . Para obtener información sobre la presentación de texto, vea Mostrar texto con Uniscribe.
Determinar la necesidad de reserva de fuentes para caracteres no admitidos
Si algunos de los caracteres de una cadena no se admiten en una fuente solicitada, una llamada de aplicación a ScriptShape se realiza correctamente. Sin embargo, la aplicación debe examinar el búfer de salida del glifo para detectar la presencia de glifos que faltan. El índice de glifo del glifo que falta se puede determinar para una fuente específica mediante una llamada a ScriptGetFontProperties. Si un glifo determinado no está disponible, la aplicación debe recurrir a otra fuente para un glifo o representar un símbolo gráfico que indique que no hay ningún glifo disponible.
Determinación de la necesidad de reserva de fuentes para scripts complejos no admitidos
Es posible que la fuente que prefiera una aplicación para mostrar no admita un script complejo que requiere el texto. En este caso, se produce un error en la llamada de aplicación a ScriptShape con el código de error E_SCRIPT_NOT_IN_FONT.
Asignación de una fuente de reserva
Una vez que haya determinado que se requiere reserva de fuente, la aplicación debe asignar una fuente de reserva. La aplicación puede probar las técnicas siguientes:
- Llame a ScriptShape para cada fuente de una lista de fuentes hasta que una llamada tenga un retorno aceptable.
- Llame a ScriptShape con cada fuente de una lista hasta que se pueda determinar que ninguna fuente se realizará correctamente. Si el código de error siempre se E_SCRIPT_NOT_IN_FONT, las fuentes no admiten un script complejo. Puede representar un símbolo gráfico que indica que no hay ningún glifo disponible o volver a especificar el script como indefinido (sin procesamiento de scripts) y volver a iniciarse. Para establecer el script como indefinido, establezca el miembro eScript de la estructura SCRIPT_ANALYSIS en SCRIPT_UNDEFINED.
- Llame a ScriptShape con cada fuente de una lista hasta que se pueda determinar que ninguna fuente se realizará correctamente. Si el código de error indica que algunos de los caracteres están asignando a glifos que faltan, divida la cadena en intervalos más pequeños. Se pueden asignar diferentes fuentes a subrangos para que se puedan representar más caracteres.
Generar información de glifo
Una vez que la aplicación ha asignado una fuente que se realiza correctamente en las llamadas a ScriptShape, puede realizar llamadas a ScriptPlace para generar información de ancho avanzado de glifo y desplazamiento bidimensional a partir de la salida de ScriptShape. La fuente debe realizarse correctamente en estas llamadas. Un error de fuente en una llamada a ScriptPlace después de que se realice correctamente en una llamada a ScriptShape indica una fuente rota.
Temas relacionados