Glyphen und Glyphenserien

Glyphen und Glyphenserien stehen auf der untersten Funktionsebene der DirectWrite-API, dem Glyphenrenderlayer, zur Verfügung.

Glyphen

Eine Glyphe ist eine physische Darstellung eines Zeichens in einem bestimmten Format. Zeichen können über zahlreiche Glyphen verfügen, wobei jede Schriftart in einem System eine andere Glyphe für dieses Zeichen darstellen kann.

Zwei oder mehr Glyphen können auch in einer einzelnen Glyphe kombiniert werden. Dies wird als Glyphenkomposition bezeichnet. Dies geht auch umgekehrt: Eine einzelne Glyphe kann in mehrere Glyphen geteilt werden. Dies wird als Glyphenaufgliederung bezeichnet.

Alternative Glyphen

Schriftarten können alternative Glyphen für Zeichen bereitstellen, wie zum Beispiel die alternativen Glyphen für die Schriftart Pericles OpenType, wie in der folgenden Bildschirmabbildung dargestellt. Die Zeichen 'A', 'E' und 'O' sind durch Glyphen-Stilalternativen gerendert.

Bildschirmabbildung von "Ancient Greek Mythology", wobei für "A", "E" und "O" alternative Glyphen verwendet werden

Ein weiteres Beispiel für alternative Glyphen sind Schwungbuchstaben. In der folgenden Bildschirmabbildung werden die standardmäßigen und Schwungbuchstaben-Glyphen für die Schriftart Pescadero angezeigt.

Bildschirmabbildung der Buchstaben "A" bis "N" als standardmäßige und Schwungbuchstaben-Glyphen

Schwungbuchstaben und andere typographische Elemente, einschließlich dekorativere alternative Glyphen, stehen über OpenType zur Verfügung. Die typographischen Elemente von OpenType können auf einen Textbereich angewendet werden, indem IDWriteTextLayout::SetTypography verwendet wird und die DWRITE_FONT_FEATURE_TAG-Enumerationskonstante, die mit dem gewünschten Elemente verknüpft ist, übergeben wird.

Glyphenserien

Eine Glyphenserie ist ein fortlaufender Satz von Glyphen, die alle die gleiche Schriftart und Größe sowie gegebenenfalls den gleichen Client-Zeicheneffekt aufweisen. Unterstreichen und Durchstreichen sind nicht Bestandteil der Glyphenserie für den Textbereich, auf den sie angewendet werden, und werden später gezeichnet. Eingebettete Objekte, wie z. B. Bilder, werden ebenfalls separat gezeichnet, da sie nicht Bestandteil einer Schriftart sind.

Die IDWriteFontFace-Schnittstelle

DirectWrite verwendet das gleiche System für die Schriftartklassifizierung wie Windows Pesentation Foundation (WPF), sodass mehrere physische Schriftarten pro Schriftfamilie möglich sind. Eine Schriftart wie die IDWriteFontFace-Schnittstelle in DirectWrite, stellt eine physische Schrift mit einem bestimmten Schnitt, Neigung und Dehnung dar. Sie enthält den Schriftarttyp, entsprechende Dateiverweise, Schriftart-Identifikationsdaten und verschiedene Schriftartdaten wie Metriken, Namen und Glyphenkonturen.

Die IDWriteFontFace kann direkt aus einem Schriftartnamen erstellt oder aus einer Schriftsammlung abgerufen werden.

Glyphenmetrik

Einzelnen Glyphen sind Metriken zugeordnet. Sie können die Metriken aller Glyphen in einer Glyphenserie mit der IDWriteFontFace::GetDesignGlyphMetrics-Methode abrufen. Hierbei wird eine DWRITE_GLYPH_METRICS-Struktur zurückgegeben, die über die Vorschubbreite, Lage auf der linken und rechten Seite, Lage auf der oberen und unteren Seite, die Höhe und den Ursprung der vertikalen Basislinie verfügt.

Im folgenden Diagramm sind die verschiedenen Metriken von zwei unterschiedlichen Glyphen dargestellt.

Diagramm der Metriken von zwei unterschiedlichen Glyphen

Zeichnen einer Glyphenserie

Wenn ein benutzerdefinierter Textrenderer implementiert wird, wird das Rendern der Glyphen von IDWriteTextRenderer::DrawGlyphRun durchgeführt, einer Rückrufmethode, die als Teil einer von IDWriteTextRenderer abgeleiteten Klasse implementiert wird. Die DWRITE_GLYPH_RUN-Struktur, die an DrawGlyphRun übergeben wird, enthält ein IDWriteFontFace-Objekt mit dem Namen fontFace, das die Schriftart für die ganze Glyphenserie darstellt.

Das IDWriteFontFace-Objekt stellt auch die GetGlyphRunOutline-Methode bereit, mit der die Glyphenkonturen anhand eines angegebenen Geometriesenkenrückrufs, wie z. B. ID2D1SimplifiedGeometrySink beim Rendern mit Direct2D, berechnet werden.

Weitere Informationen finden Sie im Thema Implementieren eines benutzerdefinierten Renderers.

 

 

Anzeigen: