Partager via


Traitement de scripts complexes

Pour fournir une justification textuelle, une application peut utiliser l’une des deux méthodes suivantes. Pour une implémentation simple de la justification multilingue, l’application doit appeler ScriptJustify. Il génère le tableau delta dx en prenant en compte kashida, puis l’espacement interword, puis l’espacement intercharacter. Pour une justification plus sophistiquée, l’application peut générer un tableau delta dx mis à jour à l’aide de sa propre connaissance du langage et des informations récupérées par ScriptShape dans le tableau SCRIPT_VISATTR .

L’espace de justification ou le kashida doivent être insérés lorsqu’ils sont identifiés par le membre uJustification de SCRIPT_VISATTR. Lors de la justification inter-caractères, l’application doit insérer de l’espace supplémentaire uniquement après les glyphes marqués avec SCRIPT_JUSTIFY_CHARACTER.

L’application effectue des tests de placement et d’accès à l’aide de ScriptXtoCP et ScriptCPtoX. Pour plus d’informations, consultez Gestion du placement caret et des tests d’accès.

Pour obtenir des largeurs indépendantes de la police, l’application appelle ScriptGetLogicalWidths. En passant les largeurs logiques à ScriptApplyLogicalWidth, un bloc de texte peut être ressaffiché dans les mêmes limites avec une perte de qualité acceptable même lorsque la police d’origine n’est pas disponible. Il génère un tableau de largeurs de glyphes (largeurs avancées) approprié pour passer à ScriptTextOut. L’enregistrement et la réapplique d’informations préalables sur la largeur d’une manière indépendante de la police peuvent être utiles dans des situations telles que le métafilage dans un format défini par l’application.

Notes

Les métafichiers ne prennent pas en charge les index glyphes. Pour écrire dans un métafichier amélioré, l’application doit utiliser ExtTextOut et écrire directement les caractères logiques. À l’aide de ce mécanisme, la génération et le placement du glyphe ne se produisent pas tant que le texte n’est pas lu.

 

Pour récupérer les glyphes spécifiques utilisés pour les valeurs par défaut, les vides, les kashida, etc., pour la police actuelle, l’application doit appeler ScriptGetFontProperties. Pour déterminer quels caractères d’une exécution sont pris en charge par la police sélectionnée, l’application appelle ScriptGetCMap. Les caractères qui ne sont pas disponibles ont le glyphe par défaut dans la mémoire tampon de glyphe. Notez que cette méthode échoue si une police affiche un caractère à l’aide d’une combinaison de glyphes au lieu d’un seul glyphe. Par exemple, 00C9 ; LA LETTRE MAJUSCULE LATINE E WITH ACUTE peut être rendue à l’aide d’un glyphe E majuscule et d’un glyphe aigu. Pour déterminer la prise en charge de la police pour une chaîne qui contient ces types de points de code, l’application peut appeler ScriptShape. Pour plus d’informations, consultez Utilisation des moteurs de mise en forme.

La fonction ScriptCacheGetHeight retourne la hauteur de la police à partir du cache de polices. ScriptGetProperties fournit des informations sur le traitement spécial requis pour tous les scripts, indexés par script. Par exemple, il inclut le langage principal associé au script, les données indiquant si le script est numérique et les données indiquant si le script est un script complexe.

ScriptGetGlyphABCWidth retourne la largeur ABC d’un glyphe donné, ce qui peut être utile pour dessiner des graphiques en glyphe. Toutefois, il ne doit pas être utilisé pour la mise en forme de texte de script complexe normal.

Utilisation d’Uniscribe