Partager via


Utilisation de moteurs de mise en forme

Uniscribe utilise plusieurs moteurs de mise en forme qui contiennent les connaissances de disposition pour des scripts particuliers. Il tire également parti du moteur de mise en forme de la disposition OpenType pour gérer les fonctionnalités de script spécifiques à la police, telles que la génération de glyphes, la mesure d’étendue et la prise en charge des mots cassants. Uniscribe gère la réorganisation bidirectionnelle des caractères à l’aide de l’algorithme bidirectionnel Unicode et comprend les formats de police de disposition non OpenType pour la mise en forme arabe, hébraïque et thaï.

Étant donné que les plages de points de code exactes attribuées à chaque moteur de mise en forme peuvent varier, les numéros de script ne sont pas publiés, à l’exception de SCRIPT_UNDEFINED. Toutefois, votre application peut tester les attributs des scripts en appelant la fonction ScriptGetProperties , qui accède à la table des propriétés de script global. L’application peut utiliser les propriétés de script global pour combiner ses propres règles de disposition avec les divisions de moteur de mise en forme requises.

L’application accède à un moteur de mise en forme avec un appel à la fonction ScriptShape . Tous les moteurs de mise en forme de script complexes, les moteurs de mise en forme de chiffres et les moteurs de mise en forme ASCII valident la police indiquée dans le handle de contexte d’appareil avant la mise en forme. Les scripts complexes doivent être mis en forme à l’aide du script retourné par la fonction ScriptItemize pour être lisibles. Les autres exécutions restent lisibles si elles sont mises en forme avec SCRIPT_UNDEFINED spécifiées dans le membre eScript de la structure SCRIPT_ANALYSIS , bien qu’elles puissent perdre la qualité typographique.

ScriptShape retourne 0 si elle réussit, ou USP_E_SCRIPT_NOT_IN_FONT si la police fournie par l’application ne contient pas suffisamment de glyphes ou de tables de mise en forme. Si l’application spécifie SCRIPT_UNDEFINED et que certains caractères ne sont pas pris en charge par la police, la fonction réussit toujours. Dans ce cas, l’application doit analyser la mémoire tampon de sortie du glyphe pour détecter la présence de glyphes manquants. Pour connaître les stratégies de gestion des glyphes manquants, consultez Utilisation de la police de secours.

Utilisation d’Uniscribe