Glyphes et exécutions de glyphes

les glyphes et les exécutions de glyphes sont disponibles dans la couche la plus basse des fonctionnalités de l’API DirectWrite , la couche de rendu de glyphes.

Glyphes

Un glyphe est une représentation physique d’un caractère dans une police donnée. Les caractères peuvent avoir de nombreux glyphes, chaque police d’un système pouvant définir un glyphe différent pour ce caractère.

Au moins deux glyphes peuvent également être combinés en un seul glyphe, ce processus est appelé composition de glyphes. Cela peut également être effectué dans le sens inverse, un seul glyphe fractionné en plusieurs glyphes, appelé décomposition de glyphes.

Autres glyphes

Les polices peuvent fournir des glyphes alternatifs pour les caractères, tels que les glyphes de substitution stylistiques pour la police OpenType Pericles, comme indiqué dans la capture d’écran suivante. Les caractères « A », « E » et « O » sont rendus avec des glyphes de substitution stylistiques.

capture d’écran de « antiquité Green Mythology », avec les glyphes « a », « e » et « o » à l’aide de glyphes alternatifs

Des glyphes ornés sont un autre exemple de glyphes de substitution. La capture d’écran suivante montre les glyphes standard et les glyphes à lettres ornées pour la police Pescadero.

capture d’écran des lettres « a » à « n » dans les glyphes standard et ornés

Les lettres ornées et autres caractéristiques typographiques, y compris les glyphes de substitution plus élaborés, sont disponibles via OpenType. Les fonctionnalités typographiques OpenType peuvent être appliquées à une plage de texte à l’aide de IDWriteTextLayout :: SetTypography et en passant la constante d’énumération de _ _ _ balise de la fonctionnalité de police DWRITE associée à la fonctionnalité souhaitée.

Exécutions de glyphes

Une exécution de glyphes représente un jeu contigu de glyphes qui ont tous le même type et la même taille de police, ainsi que le même effet de dessin client, le cas échéant. Le soulignement et le barré ne font pas partie de l’exécution de glyphes de la plage de texte à laquelle ils sont appliqués, et sont dessinés ultérieurement. Les objets insérés, tels que les images, sont également dessinés séparément, car ils ne font pas partie d’une police.

Interface IDWriteFontFace

DirectWrite utilise le même système pour la classification des polices que Windows Pesentation Foundation (WPF), il peut donc y avoir plusieurs polices physiques pour chaque famille de polices. un type de police, tel que l’interface IDWriteFontFace dans DirectWrite, représente une police physique, avec une pondération, une inclinaison et une étirement spécifiques. Il contient le type de type de police, les références de fichier appropriées, les données d’identification de visage et diverses données de police telles que les métriques, les noms et les contours de glyphe.

Le IDWriteFontFace peut être créé directement à partir d’un nom de police ou obtenu à partir d’une collection de polices.

Métriques de glyphe

Des métriques sont associées à des glyphes individuels. Vous pouvez obtenir les métriques de tous les glyphes d’une exécution de glyphe à l’aide de la méthode IDWriteFontFace :: GetDesignGlyphMetrics . Cela retourne une structure de _ _ métriques de glyphes DWRITE qui a la largeur d’avance, le palier gauche et le côté droit, le palier de haut en bas, la hauteur et l’origine de la ligne de base verticale.

Le diagramme suivant montre différentes métriques de deux caractères de glyphe différents.

diagramme des métriques de deux glyphes différents

Dessin d’une exécution de glyphe

Lors de l’implémentation d’un convertisseur de texte personnalisé, le rendu des glyphes est géré par IDWriteTextRenderer ::D rawglyphrun, une méthode de rappel que vous implémentez dans le cadre d’une classe dérivée de IDWriteTextRenderer. La structure d' _ _ exécution de glyphes DWRITE transmise à DrawGlyphRun contient un objet IDWriteFontFace , nommé fontFace, qui représente le type de police pour l’exécution de glyphe entière.

L’objet IDWriteFontFace fournit également la méthode GetGlyphRunOutline , qui calcule les contours de glyphe à l’aide d’un rappel de récepteur Geometry spécifié, tel que ID2D1SimplifiedGeometrySink lors du rendu avec Direct2D.

Pour plus d’informations, consultez la rubrique comment implémenter un convertisseur de texte personnalisé .