Begründung, Kerning und Abstand
Ab Windows 8 bietet DirectWrite eine Reihe von Features, mit denen Sie grundlegende Typografie-, Layout- und Abstandsfeatures steuern können, z. B. Zeichenabstand, Kopplung von Kerning und Begründung.
Zeichenabstand
Zeichenabstand, auch als "Nachverfolgung" bezeichnet, ist der Abstand zwischen Zeichen in einer Ausführung von Text.
Hier ist ein Beispiel für die Nachverfolgung. Die erste Zeile wendet keine Nachverfolgung auf den Text an. Die zweite Zeile erhöht den Zeichenabstand, und die dritte Zeile verringert den Zeichenabstand.

Ab Windows 8 werden DirectWrite Methoden hier eingefügt, um den Abstand von Zeichen in Ihrem Text zu steuern.
Wenn Sie das DirectWrite-Layout verwenden, können Sie für diesen Zweck die Methoden IDWriteTextLayout1::GetCharacterSpacing und IDWriteTextLayout1::SetCharacterSpacing verwenden.
Verwenden Sie die GetCharacterSpacing-Methode, um den aktuellen Zeichenabstand zu bestimmen, und gibt das aktuelle Zeichen, den Abstand vor und nach dem Zeichen, die minimale Breite und eine DWRITE _ TEXT _ RANGE-Struktur zurück, die Informationen zur Anfangsposition und Länge des verbleibenden Texts enthält.
Verwenden Sie setCharacterSpacing auf einer DWriteTextLayout1-Schnittstelle, um ihren eigenen Zeichenabstand auf den Text im Layout anzuwenden. Die SetCharacterSpacing-Methode nimmt die Menge an Speicherplatz ein, die Sie vor und nach dem Zeichen wünschen, den minimal zulässigen Fortschritt und einen _ DWRITE-TEXTBEREICH, _ der den Bereich definiert, in dem der Abstand angewendet werden soll.
Wenn Sie ein benutzerdefiniertes Layout verwenden, bietet DirectWrite Unterstützung für das Festlegen des Zeichenabstands mit IDWriteTextAnalyzer1::ApplyCharacterSpacing. Verwenden Sie diese Methode, wenn Sie ein benutzerdefiniertes Textlayout benötigen, um erweiterte Kontrolle über Das Layout zu erhalten. Mit dieser Methode können Sie ApplyCharacterSpacing mit dem führenden und dem folgenden Abstand, der minimalen Fortschrittsbreite, der Länge der Clusterzuordnung, der Anzahl von Glyphen, der Zuordnung von Zeichenbereichen zu Glyphen und der Vorbreite der einzelnen Glyphen bereitstellen, wenn Sie ein benutzerdefiniertes Layout verwenden. Die -Methode gibt die geänderten Glyphen-Fortschritte und eine DWRITE _ GLYPH _ OFFSET-Enumeration mit den neuen Offsets zum Ursprung der einzelnen Glyphen zurück.
Kerning
Kerning ist die kontextbezogene Abstandsanpassung zwischen Paaren oder Triplets von Buchstaben. Ein bestimmter Abstand zwischen Zeichensätzen kann die Lesbarkeit erhöhen und den Text besser aussehen lassen. Der wichtige Unterschied zwischen Kerning und Zeichenabstand besteht in der Tatsache, dass der Abstand von Buchstaben unabhängig vom Text ist, in dem sie leerzeichen, während Kerning in bestimmten Situationen zwischen bestimmten Zeichenpaaren verwendet wird, die in der Schriftart definiert sind.
Das Bild ist ein Beispiel für Kerning. Das Wort AVATAR in der oberen Zeile ist kerngestrichen, um das Wort natürlicher aussehen zu lassen. Wie Sie in den roten Feldern um die Zeichen sehen können, wird zwischen den ersten vier Buchstaben mehr Abstand angewendet, während R am Ende mehr Platz davor hat. Der ursprüngliche Text ohne Kerning befindet sich in der zweiten Zeile. Das Kerning in diesem Beispiel macht das Wort lesbarer und natürlicher.

Das Zeichen wird zwischen Zeichenpaaren, in denen die Kerne der Schriftart in der Kerntabelle gespeichert sind, und DirectWrite diese Tabelle analysiert und die Informationen über die Kerning-APIs an Sie zurückgibt.
Wenn Sie wissen möchten, ob eine Schriftart Paarkerning unterstützt, können Sie die IDWriteFontFace1::HasKerningPairs-Methode verwenden. Diese Methode gibt den BOOL-Wert 1 zurück, wenn die Schriftart Kerningpaare unterstützt.
IdWriteFontFace1 verfügt auch über eine -Methode, mit der Sie Zugriff auf die Anpassungen des Kerningpaars für Glyphenindizes erhalten. Mit GetKerningPairAdjustments können Sie ein Array von Glyphenindizes eingeben, und DirectWrite ein Array von Glyphenvorrückanpassungen zurückgibt. Wenn eine Schriftart die Kerntabelle nicht unterstützt, gibt die Methode Nullen für die glyphenvoraufgesetzten Anpassungen zurück.
Wenn Sie das DirectWrite-Layout verwenden, gibt es zwei Methoden auf der IDWriteTextLayout1-Schnittstelle, mit denen Sie Das paarweisen Kerning festlegen und mehr über das Kerning von Paaren im Layout erfahren können. Die SetPairKerning-Methode nimmt eine boolesche Darstellung davon an, ob Das Paarkerning aktiviert werden soll, und einen DWRITE _ TEXT _ RANGE, der den Textbereich definiert, auf den es angewendet werden soll. Wenn Sie erfahren möchten, ob die Paarkerningfunktion für einen Textbereich aktiviert ist, können Sie die GetPairKerning-Methode verwenden, die die aktuelle Position übernimmt und einen Bool zurückgibt, der entspricht, ob paarweises Kerning aktiviert ist, und den Textbereich, für den die Kerningeinstellung gilt.
Begründung
Die Begründung ist der Prozess der Ausrichtung von Text, sodass er alle Leerzeichen innerhalb einer Spalte ausfüllt, indem die Fortschritte zwischen Zeichen oder Glyphenclustern erhöht oder Begründungszeichen hinzugefügt werden, um denselben Effekt zu erzielen. Im Allgemeinen wird dies erreicht, indem bestimmt wird, wo einer Textzeile Leerzeichen hinzugefügt werden müssen, und Abstandszeichen in diesen Breaking Opportunities eingefügt werden. Diese Abstandselemente können sich auch unterscheiden. In lateinischen Skripts wird Text durch eine Erhöhung der Vorbreiten zwischen Elementen gerechtfertigt, während text auf Arabisch mit einer Kashida gerechtfertigt wird. Im Folgenden finden Sie ein Beispiel für arabische und lateinische Skripts, die sowohl gerechtfertigt als auch nicht gerechtfertigt sind.

Ab Windows 8 verfügt DirectWrite über eine Reihe von Methoden, mit denen Sie Text in Ihren Apps rechtfertigen können.
Die DWRITE _ TEXT _ ALIGNMENT-Enumeration enthält einen zusätzlichen Wert. Sie können die SetTextAlignment-Methode verwenden und die DWRITE _ TEXT ALIGNMENT _ _ JUSTIFICATIOND-Konstante übergeben und DirectWrite den Text rechtfertigen und das entsprechende Begründungszeichen für das Skript einfügen.
Wenn Sie ein benutzerdefiniertes Layout verwenden, stehen eine Reihe von Methoden zur Verfügung, damit Sie die Begründung nutzen können. DirectWrite verfügt über drei Methoden auf der IDWriteTextAnalyzer1-Schnittstelle, mit denen Sie einem benutzerdefinierten Layout eine Begründung hinzufügen können.
Die erste Methode ist GetJustificationOpportunities,die den Text eingibt, den Sie rechtfertigen möchten, und gibt eine DWRITE _ JUSTIFICATION _ OPPORTUNITY-Struktur zurück, die angibt, wo Begründungszeichen hinzugefügt werden können, um den Text zu rechtfertigen.
Die zweite Funktion ist JustifyGlyphAdvances,die ein Array von Glyphen-Fortschritten so gerechtfertigt, dass sie der Linienbreite passen. Diese Methode verwendet die DWRITE _ JUSTIFICATION _ OPPORTUNITY-Struktur, die GetJustificationOpportunities generiert, die Glyphenvergrößerung und die Glyphenoffsets. Anschließend werden die gerechtfertigten Glyphenvorkungen und eine DWRITE _ GLYPH _ OFFSET-Enumeration generiert, die die gerechtfertigten Glyphenoffsets enthält.
Die dritte Funktion ist GetJustifiedGlyphs,die die neuen Glyphen für komplexe Skripts ausfüllt, bei denen die Begründung die Fortschritte bei Glyphen erhöht hat. GetJustifiedGlyphs muss nur aufgerufen werden, wenn das Skript über ein bestimmtes Begründungszeichen verfügt, wie von GetScriptProperties zurückgegeben. Diese Methode übernimmt Informationen zur Schriftart, Länge des Texts, Emgröße der Glyphen, Skript des Texts, Anzahl von Glyphen, Clusterzuordnung, ursprünglichen Glyphenvor- und -offsets, gerechtfertigten Glyphenvor- und -offsets und Glypheneigenschaften. Die -Methode gibt die tatsächliche Anzahl von Glyphen, die aktualisierte Clusterzuordnung, aktualisierte Glyphenindizes mit eingefügten Begründungs-Glyphen, aktualisierte Glyphenoffsets und aktualisierte Glyphenvorrückungen zurück.