Fonctionnalités des polices OpenType

Cette rubrique fournit une vue d’ensemble de certaines des principales fonctionnalités de la technologie de police OpenType dans Windows Presentation Foundation (WPF).

Format des polices OpenType

Le format de police OpenType est une extension du format de police TrueType®, en ajoutant la prise en charge des données de police PostScript. Le format de police OpenType a été développé conjointement par Microsoft et Adobe Corporation. Les polices OpenType et les services du système d’exploitation qui prennent en charge les polices OpenType fournissent aux utilisateurs un moyen simple d’installer et d’utiliser des polices, que les polices contiennent des contours TrueType ou CFF (PostScript).

Le format de police OpenType répond aux défis suivants pour les développeurs :

  • Prise en charge multi-plateforme élargie.

  • Meilleure prise en charge des jeux de caractères internationaux.

  • Meilleure protection des données de police.

  • Taille des fichiers plus petite permettant une distribution plus efficace des polices.

  • Prise en charge élargie des contrôles typographiques avancés.

Remarque

Le Kit de développement logiciel (SDK) Windows contient un ensemble d’exemples de polices OpenType que vous pouvez utiliser avec des applications Windows Presentation Foundation (WPF). Ces polices offrent la plupart des fonctionnalités illustrées dans le reste de cette rubrique. Pour plus d’informations, consultez Exemple de pack de polices OpenType.

Pour plus d’informations sur le format de police OpenType, consultez la spécification OpenType.

Extensions typographiques avancées

Les tables typographiques avancées (tables OpenType Layout) étendent les fonctionnalités des polices avec des contours TrueType ou CFF. Les polices OpenType Layout contiennent des informations supplémentaires qui étendent les fonctionnalités des polices pour prendre en charge la typographie internationale de haute qualité. La plupart des polices OpenType n’exposent qu’un sous-ensemble des fonctionnalités OpenType totales disponibles. Les polices OpenType fournissent les fonctionnalités suivantes.

  • Mappage riche entre les caractères et les glyphes qui prennent en charge les ligatures, les formes positionnelles, les alternatives et les substitutions de police.

  • Prise en charge du positionnement à deux dimensions et de l’attachement de glyphes.

  • Présence d’informations explicites de script et de langage dans la police, ce qui permet à une application de traitement de texte d’ajuster son comportement en conséquence.

Les tables de disposition OpenType sont décrites plus en détail dans la section « Tables de fichiers de polices » de la spécification OpenType.

Le reste de cette vue d’ensemble présente l’étendue et la flexibilité de certaines des fonctionnalités OpenType visuellement intéressantes qui sont exposées par les propriétés de l’objet Typography . Pour plus d’informations sur cet objet, consultez Classe Typography.

Variantes

Les variantes servent à restituer différents styles typographiques, tels que les exposants et les indices.

Exposants et indices

La Variants propriété vous permet de définir des valeurs d’exposant et d’indice pour une police OpenType.

Le texte suivant présente des exposants avec la police Palatino Linotype.

Text using OpenType superscripts

L’exemple de balisage suivant montre comment définir des exposants pour la police Palatino Linotype à l’aide des propriétés de l’objet Typography .

<Paragraph FontFamily="Palatino Linotype">
  2<Run Typography.Variants="Superscript">3</Run>
  14<Run Typography.Variants="Superscript">th</Run>
</Paragraph>

Le texte suivant présente des indices avec la police Palatino Linotype.

Text using OpenType subscripts

L’exemple de balisage suivant montre comment définir des indices pour la police Palatino Linotype à l’aide des propriétés de l’objet Typography .

<Paragraph FontFamily="Palatino Linotype">
  H<Run Typography.Variants="Subscript">2</Run>O
  Footnote<Run Typography.Variants="Subscript">4</Run>
</Paragraph>

Utilisations décoratives d’exposants et d’indices

Vous pouvez aussi utiliser des exposants et des indices pour créer des effets décoratifs de texte à casse mixte. Le texte suivant présente des exposants et des indices avec la police Palatino Linotype. Notez que les majuscules ne sont pas affectées.

Text using OpenType superscripts and subscripts

L’exemple de balisage suivant montre comment définir des exposants et des indices pour une police, à l’aide des propriétés de l’objet Typography .

<Paragraph FontFamily="Palatino Linotype" Typography.Variants="Superscript">
  Chapter One
</Paragraph>
<Paragraph FontFamily="Palatino Linotype" Typography.Variants="Subscript">
  Chapter One
</Paragraph>

Majuscules

Les majuscules représentent un jeu de formes typographiques qui restituent le texte dans des glyphes de type majuscule. En règle générale, quand le texte est entièrement restitué en majuscules, l’espacement entre les lettres peut sembler trop serré et le poids et la proportion des lettres trop lourds. OpenType prend en charge un certain nombre de formats de style pour les majuscules, notamment les petites majuscules, les petites majuscules, le titrage et l’espacement des majuscules. Ces formats de style permettent de contrôler l’apparence des majuscules.

Le texte suivant présente des majuscules standard avec la police Pescadero, suivies de lettres de type « SmallCaps » et « AllSmallCaps ». Dans ce cas, la taille de police utilisée est identique pour les trois mots.

Text using OpenType capitals

L’exemple de balisage suivant montre comment définir des majuscules pour la police Cspadero à l’aide des propriétés de l’objet Typography . Quand le format « SmallCaps » est utilisé, les majuscules de début sont ignorées.

<Paragraph FontFamily="Pescadero" FontSize="48">
  <Run>CAPITALS</Run>
  <Run Typography.Capitals="SmallCaps">Capitals</Run>
  <Run Typography.Capitals="AllSmallCaps">Capitals</Run>
</Paragraph>

Majuscules de titres

Le poids et les proportions des majuscules de titres ont été réduits pour leur conférer un aspect plus élégant que les majuscules normales. Les majuscules de titres sont généralement utilisées dans les titres avec des tailles de police supérieures. Le texte suivant présente des majuscules normales et des majuscules de titres avec la police Pescadero. Comme vous pouvez le constater, le plein est plus fin dans le texte de la deuxième ligne.

Text using OpenType titling capitals

L’exemple de balisage suivant montre comment définir des majuscules de titrage pour la police Cspadero à l’aide des propriétés de l’objet Typography .

<Paragraph FontFamily="Pescadero">
  <Run Typography.Capitals="Titling">chapter one</Run>
</Paragraph>

Espacement des majuscules

L’espacement des majuscules est une fonctionnalité qui permet d’accroître l’espacement du texte quand celui-ci se compose uniquement de majuscules. Les majuscules sont généralement conçues pour se mêler aux minuscules. L’espacement employé entre une majuscule et une minuscule peut paraître trop serré quand toutes les lettres sont des majuscules. Le texte suivant présente l’espacement normal et l’espacement de majuscules avec la police Pescadero.

Text using OpenType capital spacing

L’exemple de balisage suivant montre comment définir l’espacement capital pour la police Cspadero à l’aide des propriétés de l’objet Typography .

<Paragraph FontFamily="Pescadero">
  <Run Typography.CapitalSpacing="True">CHAPTER ONE</Run>
</Paragraph>

Ligatures

Une ligature est un glyphe formé de deux ou plusieurs glyphes dans le but de créer un texte plus lisible ou esthétique. Les polices OpenType prennent en charge quatre types de ligatures :

  • Ligatures standard : conçues pour améliorer la lisibilité. Par exemple, « fi », « fl » et « ff » sont des ligatures standard.

  • Ligatures contextuelles : conçues pour améliorer la lisibilité en offrant un meilleur comportement de jointure entre les caractères qui composent la ligature.

  • Ligatures discrétionnaires : conçues à des fins esthétiques et pas spécifiquement pour la lisibilité.

  • Ligatures historiques : conçues en fonction de critères historiques et pas spécifiquement pour la lisibilité.

Le texte suivant présente des glyphes à ligatures standard avec la police Pericles.

Text using OpenType standard ligatures

L’exemple de balisage suivant montre comment définir des glyphes de ligature standard pour la police Pericles à l’aide des propriétés de l’objet Typography .

<Paragraph FontFamily="Pericles" Typography.StandardLigatures="True">
  <Run Typography.StylisticAlternates="1">FI</Run>
  <Run Typography.StylisticAlternates="1">FL</Run>
  <Run Typography.StylisticAlternates="1">TH</Run>
  <Run Typography.StylisticAlternates="1">TT</Run>
  <Run Typography.StylisticAlternates="1">TV</Run>
  <Run Typography.StylisticAlternates="1">TW</Run>
  <Run Typography.StylisticAlternates="1">TY</Run>
  <Run Typography.StylisticAlternates="1">VT</Run>
  <Run Typography.StylisticAlternates="1">WT</Run>
  <Run Typography.StylisticAlternates="1">YT</Run>
</Paragraph>

Le texte suivant présente des glyphes à ligatures discrétionnaires avec la police Pericles.

Text using OpenType discretionary ligatures

L’exemple de balisage suivant montre comment définir des glyphes de ligature discrétionnaires pour la police Pericles, à l’aide des propriétés de l’objet Typography .

<Paragraph FontFamily="Pericles" Typography.DiscretionaryLigatures="True">
  <Run Typography.StylisticAlternates="1">CO</Run>
  <Run Typography.StylisticAlternates="1">LA</Run>
  <Run Typography.StylisticAlternates="1">LE</Run>
  <Run Typography.StylisticAlternates="1">LI</Run>
  <Run Typography.StylisticAlternates="1">LL</Run>
  <Run Typography.StylisticAlternates="1">LO</Run>
  <Run Typography.StylisticAlternates="1">LU</Run>
</Paragraph>

Par défaut, les polices OpenType dans Windows Presentation Foundation (WPF) activent les ligatures standard. Par exemple, si vous utilisez la police Palatino Linotype, les ligatures standard « fi », « ff » et « fl » apparaissent comme un glyphe de caractères combinés. Notez que les deux caractères de chaque ligature standard se touchent.

Text using OpenType standard ligatures with Palatino Linotype

Vous pouvez cependant désactiver les fonctionnalités de ligature standard de sorte qu’une ligature standard comme « ff » s’affiche comme deux glyphes distincts et non comme un glyphe de caractères combinés.

Text using disabled OpenType standard ligatures

L’exemple de balisage suivant montre comment désactiver les glyphes de ligature standard pour la police Palatino Linotype à l’aide des propriétés de l’objet Typography .

<!-- Set standard ligatures to false in order to disable feature. -->
<Paragraph Typography.StandardLigatures="False" FontFamily="Palatino Linotype" FontSize="72">
  fi ff fl
</Paragraph>

Lettres ornées

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

Les lettres ornées sont souvent utilisés comme éléments décoratifs dans des expressions courtes annonçant par exemple un événement. Le texte suivant utilise des lettres ornées pour mettre en relief les majuscules du nom de l’événement.

Text using OpenType swashes

L’exemple de balisage suivant montre comment définir des swashes pour une police à l’aide des propriétés de l’objet Typography .

<Paragraph FontFamily="Pescadero" TextBlock.TextAlignment="Center">
  Wishing you a<LineBreak/>
  <Run Typography.StandardSwashes="1" FontSize="36">Happy New Year!</Run>
</Paragraph>

Lettres ornées contextuelles

Certaines combinaisons de glyphes à lettres ornées peuvent donner des résultats peu esthétiques, avec notamment le chevauchement de hampes descendantes dans les lettres adjacentes. En utilisant des lettres ornées contextuelles, vous pouvez obtenir un meilleur résultat visuel. Le texte suivant présente le même mot avant et après l’application d’une lettre ornée contextuelle.

Text using OpenType contextual swashes

L’exemple de balisage suivant montre comment définir un swash contextuel pour la police Cspadero à l’aide des propriétés de l’objet Typography .

<Paragraph FontFamily="Pescadero" Typography.StandardSwashes="1">
  Lyon <Run Typography.ContextualSwashes="1">L</Run>yon
</Paragraph>

Alternatives

Les alternatives sont des glyphes qui peuvent être remplacés par un glyphe standard. Les polices OpenType, telles que la police Pericles utilisée dans les exemples suivants, peuvent contenir d’autres glyphes que vous pouvez utiliser pour créer différentes apparences pour du texte. Le texte suivant présente des glyphes standard avec la police Pericles.

Text using OpenType standard glyphs

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

L’exemple de balisage suivant montre comment définir des glyphes de substitution stylistiques pour la police Pericles, à l’aide des propriétés de l’objet Typography .

<Paragraph FontFamily="Pericles">
  <Run Typography.StylisticAlternates="1">A</Run>NCIENT
  GR<Run Typography.StylisticAlternates="1">EE</Run>K
  MYTH<Run Typography.StylisticAlternates="1">O</Run>LOGY
</Paragraph>

Le texte suivant présente plusieurs autres glyphes de style alternatif pour la police Pericles.

Text using OpenType stylistic alternate glyphs for the Pericles font

L’exemple de balisage suivant montre comment définir ces autres glyphes de style alternatif.

<Paragraph FontFamily="Pericles">
  <Run Typography.StylisticAlternates="1">A</Run>
  <Run Typography.StylisticAlternates="2">A</Run>
  <Run Typography.StylisticAlternates="3">A</Run>
  <Run Typography.StylisticAlternates="1">C</Run>
  <Run Typography.StylisticAlternates="1">E</Run>
  <Run Typography.StylisticAlternates="1">G</Run>
  <Run Typography.StylisticAlternates="1">O</Run>
  <Run Typography.StylisticAlternates="1">Q</Run>
  <Run Typography.StylisticAlternates="1">R</Run>
  <Run Typography.StylisticAlternates="2">R</Run>
  <Run Typography.StylisticAlternates="1">S</Run>
  <Run Typography.StylisticAlternates="1">Y</Run>
</Paragraph>

Alternatives contextuelles aléatoires

Les alternatives contextuelles aléatoires proposent plusieurs glyphes de substitution pour un même caractère. Quand elle est implémentée avec des polices de caractères d’écriture, cette fonctionnalité peut simuler l’écriture manuscrite à partir d’un jeu de glyphes choisis de façon aléatoire avec de légères différences d’apparence. Le texte suivant présente des alternatives contextuelles aléatoires avec la police Lindsey. Notez que la lettre « a » présente de légères variations.

Text using OpenType random contextual alternates

L’exemple de balisage suivant montre comment définir des alternatives contextuelles aléatoires pour la police Lindsey à l’aide des propriétés de l’objet Typography .

<TextBlock FontFamily="Lindsey">
  <Run Typography.ContextualAlternates="True">
    a banana in a cabana
  </Run>
</TextBlock>

Formes historiques

Les formes historiques sont des conventions typographiques qui étaient courantes dans le passé. Dans le texte, l’expression « Boston, Massachusetts » présente une forme historique de glyphes avec la police Palatino Linotype.

Text using OpenType historical forms

L’exemple de balisage suivant montre comment définir des formulaires historiques pour la police Palatino Linotype, à l’aide des propriétés de l’objet Typography .

<Paragraph FontFamily="Palatino Linotype">
  <Run Typography.HistoricalForms="True">Boston, Massachusetts</Run>
</Paragraph>

Styles numériques

Les polices OpenType prennent en charge un grand nombre de fonctionnalités qui peuvent être utilisées avec des valeurs numériques dans du texte.

Fractions

Les polices OpenType prennent en charge les styles pour les fractions, y compris les barres obliques et empilées.

Le texte suivant présente des styles de fraction avec la police Palatino Linotype.

Text using OpenType slashed and stacked fractions

L’exemple de balisage suivant montre comment définir des styles de fraction pour la police Palatino Linotype à l’aide des propriétés de l’objet Typography .

<Paragraph FontFamily="Palatino Linotype" Typography.Fraction="Slashed">
  1/8 1/4 3/8 1/2 5/8 3/4 7/8
</Paragraph>
<Paragraph FontFamily="Palatino Linotype" Typography.Fraction="Stacked">
  1/8 1/4 3/8 1/2 5/8 3/4 7/8
</Paragraph>

Chiffres de style ancien

Les polices OpenType prennent en charge un ancien format de chiffres de style. Ce format est utile pour présenter les chiffres dans des styles qui ne sont plus courants. Le texte suivant présente une date du 18e siècle dans des formats numériques de style ancien avec la police Palatino Linotype.

Text using OpenType old style numerals

Le texte suivant présente des chiffres standard avec la police Palatino Linotype, suivis de chiffres de style ancien.

Text using OpenType old style numeral sets

L’exemple de balisage suivant montre comment définir des chiffres de style anciens pour la police Palatino Linotype à l’aide des propriétés de l’objet Typography .

<Paragraph FontFamily="Palatino Linotype">
  <Run Typography.NumeralStyle="Normal">1234567890</Run>
  <Run Typography.NumeralStyle="OldStyle">1234567890</Run>
</Paragraph>

Chiffres proportionnels et tabulaires

Les polices OpenType prennent en charge une fonctionnalité de figure proportionnelle et tabulaire pour contrôler l’alignement des largeurs lors de l’utilisation de chiffres. Les chiffres proportionnels sont considérés comme ayant chacun une largeur différente (« 1 » est plus étroit que « 5 »). À l’inverse, les chiffres tabulaires sont considérés comme ayant la même largeur, ce qui permet de les aligner verticalement et d’améliorer leur lisibilité dans les documents financiers.

Le texte ci-dessous présente deux chiffres proportionnels dans la première colonne avec la police Miramonte. Comme vous pouvez le constater, les chiffres « 5 » et « 1 » n’ont pas la même largeur. La deuxième colonne présente ces deux mêmes valeurs numériques avec des largeurs ajustées au moyen de la fonctionnalité des chiffres tabulaires.

Text using OpenType proportional & tabular figures

L’exemple de balisage suivant montre comment définir des figures proportionnelles et tabulaires pour la police Miramonte à l’aide des propriétés de l’objet Typography .

<TextBlock FontFamily="Miramonte">
  <Run Typography.NumeralAlignment="Proportional">114,131</Run>
</TextBlock>
<TextBlock FontFamily="Miramonte">
  <Run Typography.NumeralAlignment="Tabular">114,131</Run>
</TextBlock>

Zéro barré

Les polices OpenType prennent en charge un format de chiffres zéro oblique pour mettre en évidence la différence entre la lettre « O » et le chiffre « 0 ». Le chiffre zéro barré est souvent utilisé pour les identificateurs dans les informations financières et commerciales.

Le texte suivant présente un exemple d’identificateur de commande avec la police Miramonte. La première ligne contient des chiffres standard. La deuxième ligne contient des chiffres zéro barré pour mieux les distinguer de la lettre « O » majuscule.

Text using OpenType slashed zero numerals

L’exemple de balisage suivant montre comment définir des chiffres zéro obliques pour la police Miramonte à l’aide des propriétés de l’objet Typography .

<Paragraph FontFamily="Miramonte">
  <Run>Order #0048-OTC-390</Run>
  <LineBreak/>
  <Run Typography.SlashedZero="True">Order #0048-OTC-390</Run>
</Paragraph>

Classe Typography

L’objet Typography expose l’ensemble de fonctionnalités prises en charge par une police OpenType. En définissant les propriétés du Typography balisage, vous pouvez facilement créer des documents qui tirent parti des fonctionnalités OpenType.

Le texte suivant présente des majuscules standard avec la police Pescadero, suivies de lettres de type « SmallCaps » et « AllSmallCaps ». Dans ce cas, la taille de police utilisée est identique pour les trois mots.

Text using OpenType capitals

L’exemple de balisage suivant montre comment définir des majuscules pour la police Cspadero à l’aide des propriétés de l’objet Typography . Quand le format « SmallCaps » est utilisé, les majuscules de début sont ignorées.

<Paragraph FontFamily="Pescadero" FontSize="48">
  <Run>CAPITALS</Run>
  <Run Typography.Capitals="SmallCaps">Capitals</Run>
  <Run Typography.Capitals="AllSmallCaps">Capitals</Run>
</Paragraph>

L’exemple de code suivant effectue la même tâche que l’exemple de balisage précédent.

MyParagraph.FontFamily = new FontFamily("Pescadero");
MyParagraph.FontSize = 48;

Run run_1 = new Run("CAPITALS ");
MyParagraph.Inlines.Add(run_1);

Run run_2 = new Run("Capitals ");
run_2.Typography.Capitals = FontCapitals.SmallCaps;
MyParagraph.Inlines.Add(run_2);

Run run_3 = new Run("Capitals");
run_3.Typography.Capitals = FontCapitals.AllSmallCaps;
MyParagraph.Inlines.Add(run_3);

MyParagraph.Inlines.Add(new LineBreak());
MyParagraph.FontFamily = New FontFamily("Pescadero")
MyParagraph.FontSize = 48

Dim run_1 As New Run("CAPITALS ")
MyParagraph.Inlines.Add(run_1)

Dim run_2 As New Run("Capitals ")
run_2.Typography.Capitals = FontCapitals.SmallCaps
MyParagraph.Inlines.Add(run_2)

Dim run_3 As New Run("Capitals")
run_3.Typography.Capitals = FontCapitals.AllSmallCaps
MyParagraph.Inlines.Add(run_3)

MyParagraph.Inlines.Add(New LineBreak())

Propriétés de la classe Typography

Le tableau suivant répertorie les propriétés, les valeurs et les paramètres par défaut de l’objet Typography .

Propriété Valeur(s) Valeur par défaut
AnnotationAlternates Valeur numérique - octet 0
Capitals AllPetiteCaps | AllSmallCaps | Normal | PetiteCaps | SmallCaps | Titling | Unicase FontCapitals.Normal
CapitalSpacing Boolean false
CaseSensitiveForms Boolean false
ContextualAlternates Boolean true
ContextualLigatures Boolean true
ContextualSwashes Valeur numérique - octet 0
DiscretionaryLigatures Boolean false
EastAsianExpertForms Boolean false
EastAsianLanguage HojoKanji | Jis04 | Jis78 | Jis83 | Jis90 | NlcKanji | Normal | Simplified | Traditional | TraditionalNames FontEastAsianLanguage.Normal
EastAsianWidths Full | Half | Normal | Proportional | Quarter | Third FontEastAsianWidths.Normal
Fraction Normal | Slashed | Stacked FontFraction.Normal
HistoricalForms Boolean false
HistoricalLigatures Boolean false
Kerning Boolean true
MathematicalGreek Boolean false
NumeralAlignment Normal | Proportional | Tabular FontNumeralAlignment.Normal
NumeralStyle Boolean FontNumeralStyle.Normal
SlashedZero Boolean false
StandardLigatures Boolean true
StandardSwashes Valeur numérique - octet 0
StylisticAlternates Valeur numérique - octet 0
StylisticSet1 Boolean false
StylisticSet2 Boolean false
StylisticSet3 Boolean false
StylisticSet4 Boolean false
StylisticSet5 Boolean false
StylisticSet6 Boolean false
StylisticSet7 Boolean false
StylisticSet8 Boolean false
StylisticSet9 Boolean false
StylisticSet10 Boolean false
StylisticSet11 Boolean false
StylisticSet12 Boolean false
StylisticSet13 Boolean false
StylisticSet14 Boolean false
StylisticSet15 Boolean false
StylisticSet16 Boolean false
StylisticSet17 Boolean false
StylisticSet18 Boolean false
StylisticSet19 Boolean false
StylisticSet20 Boolean false
Variants Inferior | Normal | Ordinal | Ruby | Subscript | Superscript FontVariants.Normal

Voir aussi