Verarbeiten komplexer Skripts
Um eine Textausrichtung bereitzustellen, kann eine Anwendung eine von zwei Methoden verwenden. Für eine einfache Implementierung der mehrsprachigen Begründung sollte die Anwendung ScriptJustify aufrufen. Es generiert das Delta dx-Array, indem kashida, dann Interword-Abstand und dann Interzeichenabstand berücksichtigt werden. Zur komplexeren Begründung kann die Anwendung ein aktualisiertes Delta dx-Array mit eigenen Sprachkenntnissen und den von ScriptShape im SCRIPT_VISATTR Array abgerufenen Informationen generieren.
Der Rechtfertigungsraum oder die Kashida sollte eingefügt werden, wenn durch den uJustification-Member von SCRIPT_VISATTR identifiziert wird. Bei der Zeichenübergreifenden Begründung sollte die Anwendung zusätzlichen Leerzeichen nur nach Glyphen einfügen, die mit SCRIPT_JUSTIFY_CHARACTER gekennzeichnet sind.
Die Anwendung führt Caretplatzierung und Treffertests mithilfe von ScriptXtoCP und ScriptCPtoX durch. Weitere Informationen finden Sie unter Verwalten von Caret Placement und Treffertests.
Um Breiten auf schriftartunabhängige Weise abzurufen, ruft die Anwendung ScriptGetLogicalWidths auf. Durch Übergeben der logischen Breite an ScriptApplyLogicalWidth kann ein Textblock in den gleichen Grenzen mit akzeptablem Qualitätsverlust erneut angezeigt werden, auch wenn die ursprüngliche Schriftart nicht verfügbar ist. Es generiert ein Array von Glyphenbreiten (erweiterte Breiten), die für die Übergabe an ScriptTextOut geeignet sind. Eine solche Aufzeichnung und erneute Anwendung von Informationen zur erweiterten Breite auf schriftartunabhängige Weise kann in Situationen wie metafiling in einem von der Anwendung definierten Format nützlich sein.
Hinweis
Metadateien unterstützen keine Glyphenindizes. Zum Schreiben in eine erweiterte Metadatei sollte die Anwendung ExtTextOut verwenden und die logischen Zeichen direkt schreiben. Mithilfe dieses Mechanismus erfolgt die Glyphengenerierung und -platzierung erst, wenn der Text wiedergegeben wird.
Die Anwendung sollte ScriptGetFontProperties aufrufen, um die spezifischen Glyphen abzurufen, die für standard, leer, kashida usw. für die aktuelle Schriftart verwendet werden. Um zu bestimmen, welche Zeichen in einer Ausführung von der ausgewählten Schriftart unterstützt werden, ruft die Anwendung ScriptGetCMap auf. Zeichen, die nicht verfügbar sind, weisen die Standardsymbole im Glyphenpuffer auf. Beachten Sie, dass diese Methode fehlschlägt, wenn eine Schriftart ein Zeichen mithilfe einer Kombination von Glyphen anstelle einer einzelnen Glyphe rendert. Beispiel: 00C9; DER LATEINISCHE GROßBUCHSTABE E WITH ACUTE kann mit einem Großbuchstaben E-Glyphe und einer akuten Glyphe gerendert werden. Um die Schriftartunterstützung für eine Zeichenfolge zu bestimmen, die diese Arten von Codepunkten enthält, kann die Anwendung ScriptShape aufrufen. Weitere Informationen finden Sie unter Verwenden von Shaping-Engines.
Die ScriptCacheGetHeight-Funktion gibt die Höhe der Schriftart aus dem Schriftartcache zurück. ScriptGetProperties bietet Informationen zur speziellen Verarbeitung, die für alle Skripts erforderlich ist, die nach Skript indiziert werden. Sie enthält beispielsweise die dem Skript zugeordnete primäre Sprache, Daten, die angeben, ob das Skript numerisch ist, und Daten, die angeben, ob das Skript ein komplexes Skript ist.
ScriptGetGlyphABCWidth gibt die ABC-Breite einer angegebenen Glyphe zurück, was zum Zeichnen von Glyphendiagrammen nützlich sein kann. Sie sollte jedoch nicht für die normale Formatierung komplexer Skripttexte verwendet werden.
Verwandte Themen