Traitement de scripts complexes
Pour fournir la justification du texte, 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 DX Delta en tenant compte des signes kachidé, de l’espacement entre les mots, puis de l’espacement entre les caractères. Pour une justification plus sophistiquée, l’application peut générer un tableau DX Delta mis à jour à l’aide de sa propre langue et des informations extraites par ScriptShape dans le tableau _ VISATTR de scripts .
L’espace de justification ou les kachidés doivent être insérés là où ils sont identifiés par le membre uJustification du script _ VISATTR. Lorsque vous effectuez une justification entre les caractères, l’application doit insérer l’espace supplémentaire uniquement après les glyphes marqués avec le SCRIPT _ Justify _ .
L’application effectue le placement et le test de positionnement à l’aide de ScriptXtoCP et ScriptCPtoX. Pour plus d’informations, consultez gestion du placement du signe insertion et test de positionnement.
Pour obtenir des largeurs de manière indépendante de la police, l’application appelle ScriptGetLogicalWidths. En passant les largeurs logiques à ScriptApplyLogicalWidth, un bloc de texte peut être réaffiché 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 d’avances) pouvant être transmis à ScriptTextOut. Ce type d’enregistrement et de réapplication des informations de largeur d’avance de manière indépendante de la police peut être utile dans des situations telles que le profilage dans un format défini par l’application.
Notes
Les fichiers de fichiers ne prennent pas en charge les index de glyphes. Pour écrire dans un métafichier amélioré, l’application doit utiliser ExtTextOut et écrire les caractères logiques directement. À l’aide de ce mécanisme, la génération et l’emplacement du glyphe ne se produisent pas tant que le texte n’a pas été lu.
Pour récupérer les glyphes spécifiques utilisés pour les valeurs par défaut, vides, kachidé, etc., pour la police actuelle, l’application doit appeler ScriptGetFontProperties. Pour déterminer quels caractères dans une série de tests 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 du glyphe. Notez que cette méthode échoue si une police effectue le rendu d’un caractère à l’aide d’une combinaison de glyphes au lieu d’un seul glyphe. Par exemple, 00C9 ; La lettre majuscule latine E avec accent aigu peut être rendue à l’aide d’un glyphe E majuscule et d’un glyphe aigu. Pour déterminer la prise en charge des polices pour une chaîne qui contient ces genres de points de code, l’application peut appeler ScriptShape. Pour plus d’informations, consultez Utilisation de 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 comprend la langue principale associée 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 de glyphes. Toutefois, il ne doit pas être utilisé pour la mise en forme de texte de script complexe normale.