Typografie in WPF

In diesem Thema werden die wichtigsten typografischen Funktionen von WPF vorgestellt. Diese Funktionen umfassen die verbesserte Qualität und Leistung beim Textrendering, die Unterstützung von OpenType-Typografie, einen verbesserten internationalen Text, eine verbesserte Unterstützung für Schriftarten sowie neue Text-Anwendungsprogrammierschnittstellen (APIs).

Verbesserte Textqualität und -leistung

Text in WPF wird mit Microsoft ClearType gerendert, was die Übersichtlichkeit und Lesbarkeit von Text verbessert. ClearType ist eine von Microsoft entwickelte Softwaretechnologie, mit der die Lesbarkeit von Text auf vorhandenen LCDs (Liquid Crystal Displays), z. B. auf Laptopbildschirmen, Pocket PC-Bildschirmen und Flachbildschirmen, optimiert wird. ClearType verwendet Sub-Pixel-Rendering, das durch das Ausrichten von Zeichen an Bruchteilen eines Pixels eine Textdarstellung mit größerer Genauigkeit und Wiedergabetreue ermöglicht. Die zusätzliche Auflösung verbessert die Schärfe der kleinen Details in der Textanzeige, was das Lesen über lange Zeiträume hinweg erleichtert. Eine weitere Verbesserung von ClearType in WPF ist das Anti-Aliasing in y-Richtung, das flache Kurven von Textzeichen oben und unten glättet. Weitere Informationen zu ClearType-Funktionen finden Sie unter Übersicht über ClearType.

Text with ClearType y-direction anti-aliasing
Text mit ClearType-Antialiasing auf der y-Achse

Die gesamte Textrendering-Pipeline kann in WPF hardwarebeschleunigt erfolgen, vorausgesetzt, dass Ihr Computer die Mindestanforderungen an die Hardware erfüllt. Rendering, das nicht mit der Hardware ausgeführt werden kann, wird als Softwarerendering ausgeführt. Die Hardwarebeschleunigung beeinflusst alle Phasen der Textrendering-Pipeline – vom Speichern einzelner Glyphen, über die Zusammensetzung von Glyphen in Glyphenreihen und das Anwenden von Effekten bis hin zum Anwenden des ClearType-Blendingalgorithmus auf die angezeigte Endausgabe. Weitere Informationen zur Hardware-Beschleunigung finden Sie unter Renderingebenen für Grafiken.

Diagram of the text rendering pipeline

Darüber hinaus nutzen Textanimation die durch WPF aktivierten Vorteile der Grafikhardwarefunktion mit Zeichen oder Glyphen voll aus. Das Ergebnis ist eine glatte Textanimation.

Umfangreiche Typografie

Das OpenType-Schriftartformat ist eine Erweiterung des TrueType®-Schriftartformats. Das OpenType-Schriftartformat wurde gemeinsam von Microsoft und Adobe entwickelt und bietet eine umfangreiche Auswahl an erweiterten typografischen Funktionen. Das Typography-Objekt macht viele der erweiterten Funktionen der OpenType-Schriftarten verfügbar, wie z. B. alternativer Stil und Schwungbuchstaben. Das Windows SDK bietet eine Reihe von OpenType-Schriftarten, die umfassende Funktionen enthalten,wie z. B. die Schriftarten Pericles und Pescadero. Weitere Informationen finden Sie unter OpenType-Beispielschriftartenpaket.

Die OpenType-Schriftart Pericles enthält zusätzliche Glyphen, die als alternativer Stil für den Standardsatz von Glyphen verwendet werden können. Im folgenden Text werden Symbole im alternativen Stil gezeigt.

Text using OpenType stylistic alternate glyphs

Schwungschrift besteht aus dekorativen Symbolen, deren ausgefeilte Verzierung häufig mit Kalligraphie assoziiert wird. Im folgenden Text werden Standard- und Schwungsymbole für die Schriftart Pescadero gezeigt.

Text using OpenType standard and swash glyphs

Weitere Informationen zu OpenType-Funktionen finden Sie unter Funktionen von OpenType-Schriftarten.

Verbesserte Unterstützung für internationalen Text

WPF bietet durch die folgenden Funktionen eine verbesserte Unterstützung für internationalen Text:

  • Automatischer Zeilenabstand in allen Schriftsystem mithilfe adaptiver Maßeinheiten.

  • Umfassende Unterstützung für internationalen Text. Weitere Informationen finden Sie unter Globalisierung für WPF.

  • An der Sprache orientierter Zeilenumbruch, Silbentrennung und Ausrichtung.

Verbesserte Unterstützung für Schriftarten

WPF bietet durch die folgenden Funktionen eine verbesserte Unterstützung für Schriftarten:

  • Unicode für den jeden Text. Für Schriftartverhalten und -auswahl wird Charset oder Codepage nicht mehr benötigt.

  • Von globalen Einstellungen unabhängige Schriftartverhalten, z.B. Systemgebietsschema.

  • Trennen Sie die Typen FontWeight, FontStretch und FontStyle zum Definieren einer FontFamily. Dies bietet mehr Flexibilität gegenüber der Programmierung in Win32, bei der boolesche Kombinationen aus Kursiv und Fett zum Definieren einer Schriftfamilie verwendet werden.

  • Die Schreibrichtung (horizontal oder vertikal) wird unabhängig von dem Schriftnamen behandelt.

  • Verknüpfung von Schriftart und alternativer Schriftart (Fallback) in einer portierbaren XML-Datei mithilfe der Technologie für zusammengesetzte Schriftarten. Zusammengesetzte Schriftarten ermöglichen die Erstellung von vollständigen mehrsprachigen Schriftarten. Zusammengesetzte Schriftarten verfügen zudem über einen Mechanismus, der das Anzeigen fehlender Glyphen verhindert. Weitere Informationen finden Sie in den Hinweisen in der FontFamily-Klasse.

  • Erstellen internationaler Schriftarten aus zusammengesetzten Schriftarten mithilfe einer Gruppe an Einzelsprachenschriftarten. Dadurch werden Ressourcenkosten bei der Entwicklung von Schriftarten für mehrere Sprachen gespart.

  • In einem Dokument eingebettete zusammengesetzte Schriftarten für die Portierung von Dokumenten. Weitere Informationen finden Sie in den Hinweisen in der FontFamily-Klasse.

Standardisierte APIs (Application Programming Interface)

WPF bietet mehrere Text-APIs, die Entwickler verwenden können, wenn sie Text in ihre Anwendungen einfügen. Diese APIs werden in drei Kategorien unterteilt:

  • Layout und Benutzeroberfläche. Die allgemeinen Textsteuerelemente für die grafische Benutzeroberfläche (GUI).

  • Einfache Textzeichnung. Ermöglicht das direkte Zeichnen von Text auf Objekten.

  • Erweiterte Textformatierung. Ermöglicht Ihnen, eine benutzerdefinierte Text-Engine zu implementieren.

Layout und Benutzeroberfläche

Auf der höchsten Funktionalitätsebene bieten die Text-APIs allgemeine Benutzeroberflächen-Steuerelemente wie Label, TextBlock und TextBox. Diese Steuerelemente stellen innerhalb einer Anwendung die grundlegenden Benutzeroberflächenelemente zur Verfügung und bieten eine einfache Möglichkeit, Text darzustellen und zu bearbeiten. Steuerelemente wie RichTextBox und PasswordBox ermöglichen eine erweiterte oder spezialisierte Textverarbeitung. Und Klassen wie TextRange, TextSelection und TextPointer aktivieren nützliche Textveränderungsoptionen. Diese Benutzeroberflächen-Steuerelemente bieten Eigenschaften wie FontFamily, FontSize und FontStyle, mit denen Sie die Schriftart steuern können, die zum Rendern des Textes verwendet wird.

Verwenden von Bitmapeffekten, Transformationen und Texteffekten

Mit WPF können Sie visuell interessante Texte mithilfe von Funktionen wie Bitmapeffekten, Transformationen und Texteffekten erstellen. Das folgende Beispiel zeigt einen typischen auf einen Text angewandten Schlagschatteneffekt.

Text shadow with Softness = 0.25

Das folgende Beispiel zeigt einen Text mit Schlagschatteneffekt und Rauschen.

Text shadow with noise

Das folgende Beispiel zeigt einen Text mit dem Effekt Schein nach außen (Outer Glow).

Text shadow using an OuterGlowBitmapEffect

Das folgende Beispiel zeigt einen Text mit Weichzeichnereffekt.

Text shadow using a BlurBitmapEffect

Das folgende Beispiel zeigt die zweite Textzeile, die um 150 % entlang der X-Achse skaliert ist, und die dritte Textzeile, die um 150 % entlang der Y-Achse skaliert ist.

Text scaled using a ScaleTransform

Das folgende Beispiel zeigt einen entlang der X-Achse geneigten Text.

Text skewed using a SkewTransform

Ein TextEffect-Objekt ist ein Hilfsobjekt, das Ihnen ermöglicht, den Text als eine oder mehrere Zeichengruppen in einer Textzeichenfolge zu behandeln. Das folgende Beispiel zeigt ein einzelnes Zeichen, das gedreht wurde. Jedes Zeichen wird unabhängig in Intervallen von 1 Sekunde gedreht.

Screenshot of text effect rotating text

Verwenden von Flussdokumenten

Neben den gängigen Benutzeroberflächen-Steuerelementen bietet WPF ein Layoutsteuerelement für die Textpräsentation – das FlowDocument-Element. Das FlowDocument-Element stellt in Verbindung mit dem DocumentViewer-Element ein Steuerelement für große Textmengen mit unterschiedlichen Layoutanforderungen bereit. Layoutsteuerelemente bieten über das Typography-Objekt Zugriff auf erweiterte Typografie und schriftartbezogene Eigenschaften anderer Benutzeroberflächen-Steuerelemente.

Das folgende Beispiel zeigt Textinhalt, der in einem FlowDocumentReader gehostetet wird, der die Suche, Navigation, Paginierung und Inhaltskalierung unterstützt.

Screenshot that shows OpenType fonts.

Weitere Informationen finden Sie unter Dokumente in WPF.

Einfache Textzeichnung

Sie können Text direkt in WPF-Objekte zeichnen, indem Sie die DrawText-Methode des DrawingContext-Objekts verwenden. Um diese Methode zu verwenden, erstellen Sie ein FormattedText-Objekt. Dieses Objekt ermöglicht das Zeichnen von mehrzeiligem Text, in dem jedes Zeichen einzeln formatiert werden kann. Die Funktionalität des FormattedText-Objekts umfasst einen großen Teil der Funktionalität der DrawText-Flags der Win32-API. Darüber hinaus umfasst das FormattedText-Objekt Funktionen wie z. B. die Unterstützung von Auslassungszeichen, wodurch Auslassungszeichen angezeigt werden, wenn der Text seine Grenze überschreitet. Das folgende Beispiel zeigt Text auf den verschiedene Formatierungen angewendet wurden, wie z.B. einen linearen Farbverlauf auf dem zweiten und dritten Wort.

Text displayed using FormattedText object

Sie können formatierten Text in Geometry-Objekte konvertieren, mit denen Sie weitere Arten von visuell interessantem Text erstellen können. Sie können z. B. ein Geometry-Objekt auf Grundlage der Gliederung einer Textzeichenfolge erstellen.

Text outline using a linear gradient brush

Die folgenden Beispiele zeigen verschiedene Möglichkeiten zum Erstellen von visuell interessanten Effekten durch Ändern von Strich, Füllung und Hervorhebung des konvertierten Texts.

Text with different colors for fill and stroke

Text with image brush applied to stroke

Text with image brush applied to stroke and highlight

Weitere Informationen zum FormattedText-Objekt finden Sie unter Zeichnen von formatiertem Text.

Erweiterte Textformatierung

Auf der komplexesten Ebene der Text-APIs bietet WPF die Möglichkeit, ein benutzerdefiniertes Textlayout zu erstellen, indem das TextFormatter-Objekt und andere Typen im System.Windows.Media.TextFormatting-Namespace verwendet werden. Der TextFormatter und die zugeordneten Klassen ermöglichen Ihnen die Implementierung von benutzerdefinierten Textlayouts, die Ihre eigene Definitionen der Zeichenformate, Absatzformatvorlagen, Regeln für den Zeilenumbruch und andere Layoutfeatures für internationalen Text unterstützen. Es gibt nur sehr wenige Fälle, in denen es sinnvoll ist, die Standardimplementierung der WPF-Textlayoutunterstützung zu überschreiben. Wenn Sie jedoch ein Steuerelement oder eine Anwendung erstellen, kann möglicherweise eine andere Implementierung als die standardmäßige WPF-Implementierung benötigt werden.

Im Gegensatz zu einer traditionellen Text-API interagiert der TextFormatter über eine Reihe von Rückrufmethoden mit einem Textlayout-Client. Es erfordert, dass der Client diese Methoden in einer Implementierung der Klasse TextSource bereitstellt. Das folgende Diagramm veranschaulicht die Textlayoutinteraktion zwischen der Clientanwendung und TextFormatter.

Diagram of text layout client and TextFormatter

Weitere Informationen zum Erstellen von benutzerdefinierten Textlayouts finden Sie unter Advanced Text Formatting.

Weitere Informationen