Typographie dans WPF

Cette rubrique présente les principales fonctionnalités typographiques de WPF. Ces fonctionnalités incluent une qualité et des performances améliorées du rendu de texte, la prise en charge de la typographie OpenType, le texte international amélioré, la prise en charge améliorée de la police et de nouvelles interfaces de programmation d’application de texte (API).

Amélioration de la qualité et des performances du texte

Le texte dans WPF est rendu à l’aide de Microsoft ClearType, ce qui améliore la clarté et la lisibilité du texte. ClearType est une technologie logicielle développée par Microsoft qui améliore la lisibilité du texte sur les disques LCD existants (Liquid Crystal Displays), tels que les écrans portables, les écrans de pc de poche et les moniteurs de panneau plat. ClearType utilise le rendu de sous-pixels qui permet au texte d’être affiché avec une plus grande fidélité à sa forme réelle en alignant les caractères sur une partie fractionnaire d’un pixel. Cette résolution accrue augmente la netteté des détails dans l’affichage textuel, ce qui facilite grandement la lecture sur de longues périodes. Une autre amélioration de ClearType dans WPF est l’anticrénelage de direction y, qui lisse les hauts et les bas des courbes superficielles dans les caractères de texte. Pour plus d’informations sur les fonctionnalités ClearType, consultez ClearType Overview.

Text with ClearType y-direction anti-aliasing
Texte avec anticrénelage ClearType dans la direction y

L’intégralité du pipeline de rendu de texte peut être accélérée par le matériel dans WPF, à condition que votre machine réponde au niveau minimal de matériel requis. Un rendu ne pouvant pas être exécuté à l’aide de matériel repasse à un rendu logiciel. L’accélération matérielle affecte toutes les phases du pipeline de rendu de texte , du stockage de glyphes individuels, de la composition de glyphes dans des exécutions de glyphes, l’application d’effets, à l’application de l’algorithme de fusion ClearType à la sortie finale affichée. Pour plus d’informations sur l’accélération matérielle, consultez Couches de rendu graphiques.

Diagram of the text rendering pipeline

De plus, le texte animé, que ce soit par caractère ou glyphe, tire pleinement parti de la fonctionnalité matérielle graphique activée par WPF. Il en résulte une animation de texte lisse.

Typographie riche

Le format de police OpenType est une extension du format de police TrueType®. Le format de police OpenType a été développé conjointement par Microsoft et Adobe, et fournit un riche assortiment de fonctionnalités typographiques avancées. L’objet Typography expose de nombreuses fonctionnalités avancées des polices OpenType, telles que les alternatives stylistiques et les lavages. Le Kit de développement logiciel (SDK) Windows fournit un ensemble d’exemples de polices OpenType conçues avec des fonctionnalités enrichies, telles que les polices Pericles et Cspadero. Pour plus d’informations, consultez Exemple de pack de polices OpenType.

La police Pericles OpenType contient des glyphes supplémentaires qui fournissent des alternatives stylistiques à l’ensemble standard de glyphes. Le texte suivant présente des glyphes de style alternatif.

Text using OpenType stylistic alternate glyphs

Les lettres ornées sont des glyphes décoratifs qui utilisent une ornementation élaborée souvent associée à la calligraphie. Le texte suivant présente des glyphes standard et des glyphes à lettres ornées avec la police Pescadero.

Text using OpenType standard and swash glyphs

Pour plus d’informations sur les fonctionnalités OpenType, consultez Fonctionnalités de police OpenType.

Prise en charge améliorée du texte international

WPF fournit une prise en charge améliorée du texte international en fournissant les fonctionnalités suivantes :

  • Interligne automatique dans tous les systèmes d’écriture, par le biais de mesures adaptables.

  • Prise en charge générale du texte international. Pour plus d’informations, consultez Globalisation pour WPF.

  • Saut de ligne, césure et justification par langue.

Prise en charge améliorée des polices

WPF fournit une prise en charge améliorée de la police en fournissant les fonctionnalités suivantes :

  • Unicode pour tout le texte. La sélection et le comportement de la police ne requièrent plus de jeu de caractères ou de page de codes.

  • Comportement de police indépendant des paramètres globaux, tels que les paramètres régionaux du système.

  • Séparez , FontStretchet FontStyle les FontWeighttypes pour définir un FontFamily. Cela offre une plus grande flexibilité que dans la programmation Win32, dans laquelle les combinaisons booléennes en italique et en gras sont utilisées pour définir une famille de polices.

  • Sens d’écriture (horizontal ou vertical) géré indépendamment du nom de police.

  • Liaison de polices et secours de police dans un fichier XML portable, à l’aide de la technologie de police composite. Les polices composites permettent de générer une gamme complète de polices multilingues. Les polices composites fournissent également un mécanisme qui évite d’afficher les glyphes manquants. Pour plus d’informations, consultez les remarques de la FontFamily classe.

  • Polices internationales générées à partir de polices composites, à l’aide d’un groupe de polices d’une seule langue. Cela permet de limiter les coûts de ressources lors du développement de polices pour plusieurs langues.

  • Polices composites incorporées dans un document, autorisant ainsi la portabilité du document. Pour plus d’informations, consultez les remarques de la FontFamily classe.

Nouvelles interfaces de programmation d’applications (API) texte

WPF fournit plusieurs API de texte pour permettre aux développeurs d’utiliser lors de l’inclusion de texte dans leurs applications. Ces API sont regroupées en trois catégories :

  • Disposition et interface utilisateur. Contrôles de texte courants pour l’interface utilisateur graphique (GUI).

  • Dessin de texte léger. Permet de dessiner du texte directement sur des objets.

  • Mise en forme du texte avancée. Permet d’implémenter un moteur de texte personnalisé.

Disposition et interface utilisateur

Au niveau le plus élevé des fonctionnalités, les API de texte fournissent des contrôles d’interface utilisateur courants tels que Label, TextBlocket TextBox. Ces contrôles fournissent les éléments d’interface utilisateur de base au sein d’une application et offrent un moyen simple de présenter et d’interagir avec du texte. Contrôles tels que RichTextBox la PasswordBox gestion de texte plus avancée ou spécialisée. Et les classes telles que TextRange, TextSelectionet TextPointer activer la manipulation de texte utile. Ces contrôles d’interface utilisateur fournissent des propriétés telles que FontFamily, FontSizeet FontStyle, qui vous permettent de contrôler la police utilisée pour afficher le texte.

Utilisation d’effets bitmap, de transformations et d’effets de texte

WPF vous permet de créer des utilisations visuellement intéressantes de texte en utilisant des fonctionnalités telles que les effets bitmap, les transformations et les effets de texte. L’exemple suivant présente un type classique d’effet d’ombre portée appliqué au texte.

Text shadow with Softness = 0.25

L’exemple suivant présente un effet d’ombre portée et un bruit appliqués au texte.

Text shadow with noise

L’exemple suivant présente un effet d’éclat extérieur appliqué au texte.

Text shadow using an OuterGlowBitmapEffect

L’exemple suivant présente un effet de flou appliqué au texte.

Text shadow using a BlurBitmapEffect

Dans l’exemple suivant, la deuxième ligne du texte est mise à l’échelle par 150 % le long de l’axe x et la troisième ligne du texte est mise à l’échelle par 150 % le long de l’axe y.

Text scaled using a ScaleTransform

L’exemple suivant présente le texte incliné le long de l’axe x.

Text skewed using a SkewTransform

Un TextEffect objet d’assistance est un objet d’assistance qui vous permet de traiter du texte comme un ou plusieurs groupes de caractères dans une chaîne de texte. L’exemple suivant montre un caractère individuel qui fait l’objet d’une rotation. Chaque caractère fait indépendamment l’objet d’une rotation à intervalles d’une seconde.

Screenshot of text effect rotating text

Utilisation de documents dynamiques

Outre les contrôles d’interface utilisateur courants, WPF offre un contrôle de disposition pour la présentation de texte, l’élément FlowDocument . L’élément FlowDocument , conjointement avec l’élément DocumentViewer , fournit un contrôle pour de grandes quantités de texte avec des exigences de disposition variables. Les contrôles de disposition permettent d’accéder à une typographie avancée via l’objet et les propriétés liées à la Typography police d’autres contrôles d’interface utilisateur.

L’exemple suivant montre le contenu texte hébergé dans un FlowDocumentReader, qui fournit la prise en charge de la recherche, de la navigation, de la pagination et de la mise à l’échelle du contenu.

Screenshot that shows OpenType fonts.

Pour plus d’informations, consultez Documents dans WPF.

Dessin de texte léger

Vous pouvez dessiner du texte directement sur des objets WPF à l’aide de la DrawText méthode de l’objet DrawingContext . Pour utiliser cette méthode, vous créez un FormattedText objet. Cet objet vous permet de dessiner du texte multiligne dans lequel chaque caractère du texte peut être mis en forme individuellement. La fonctionnalité de l’objet FormattedText contient une grande partie des fonctionnalités des indicateurs DrawText dans l’API Windows. En outre, l’objet FormattedText contient des fonctionnalités telles que la prise en charge des points de suspension, dans lesquelles un point de suspension est affiché lorsque le texte dépasse ses limites. L’exemple suivant présente un texte auquel plusieurs formats sont appliqués, notamment un dégradé linéaire sur les deuxième et troisième mots.

Text displayed using FormattedText object

Vous pouvez convertir du texte mis en forme en Geometry objets, ce qui vous permet de créer d’autres types de texte visuellement intéressants. Par exemple, vous pouvez créer un Geometry objet en fonction du contour d’une chaîne de texte.

Text outline using a linear gradient brush

Les exemples suivants illustrent plusieurs façons de créer des effets visuels intéressants en modifiant le trait, le remplissage et la surbrillance du texte converti.

Text with different colors for fill and stroke

Text with image brush applied to stroke

Text with image brush applied to stroke and highlight

Pour plus d’informations sur l’objet FormattedText , consultez Dessin mis en forme du texte.

Mise en forme de texte avancée

Au niveau le plus avancé des API de texte, WPF vous offre la possibilité de créer une disposition de texte personnalisée à l’aide de l’objet TextFormatter et d’autres types dans l’espace System.Windows.Media.TextFormatting de noms. Les TextFormatter classes associées vous permettent d’implémenter une disposition de texte personnalisée qui prend en charge votre propre définition de formats de caractères, de styles de paragraphe, de règles de rupture de ligne et d’autres fonctionnalités de disposition pour le texte international. Il existe très peu de cas dans lesquels vous souhaitez remplacer l’implémentation par défaut de la prise en charge de la disposition de texte WPF. Toutefois, si vous créez un contrôle d’édition de texte ou une application, vous pouvez nécessiter une implémentation différente de l’implémentation WPF par défaut.

Contrairement à une API de texte traditionnelle, l’interaction TextFormatter avec un client de disposition de texte via un ensemble de méthodes de rappel. Le client doit fournir ces méthodes dans une implémentation de la TextSource classe. Le diagramme suivant illustre l’interaction de disposition de texte entre l’application cliente et TextFormatter.

Diagram of text layout client and TextFormatter

Pour plus d’informations sur la création de la disposition de texte personnalisée, consultez Mise en forme de texte avancée.

Voir aussi