FontFamily Classe

Définition

Représente une famille de polices associées.

public ref class FontFamily
[System.ComponentModel.TypeConverter(typeof(System.Windows.Media.FontFamilyConverter))]
[System.Windows.Localizability(System.Windows.LocalizationCategory.Font)]
public class FontFamily
[<System.ComponentModel.TypeConverter(typeof(System.Windows.Media.FontFamilyConverter))>]
[<System.Windows.Localizability(System.Windows.LocalizationCategory.Font)>]
type FontFamily = class
Public Class FontFamily
Héritage
FontFamily
Attributs

Remarques

Une famille de polices est un ensemble de polices qui partagent le même nom de famille, comme « Times New Roman », mais qui diffèrent par leurs caractéristiques. Ces différences de fonctionnalités incluent Style, par exemple en italique, et Weight, par exemple, en gras.

Polices
Exemple de polices membres de la famille de polices « Times New Roman »

La plupart des éléments d’interface utilisateur, tels que Button et TextBlock, fournissent une FontFamily propriété qui peut être utilisée pour spécifier une police pour le contenu texte d’un contrôle. Vous définissez la police en définissant cette propriété avec une FontFamily valeur. Les exemples suivants montrent comment référencer une police, en XAML (Extensible Application Markup Language) et dans le code.

myTextBlock.FontFamily = new FontFamily("Comic Sans MS");
myTextBlock.FontFamily = New FontFamily("Comic Sans MS")
<TextBlock FontFamily="Comic Sans MS">Hello, world</TextBlock>

Dans l’exemple précédent, la police référencée, « Comic Sans MS », est référencée par son nom convivial. En outre, dans cet exemple, la police est supposée être dans la collection de polices système.

Spécification de polices dans d’autres répertoires

Une application Windows Presentation Foundation (WPF) peut spécifier un répertoire, autre que le répertoire qui contient la collection de polices système, pour la résolution des références de polices. Le nom convivial de la police peut spécifier une valeur d’URI (Uniform Resource Identifier) absolu pour résoudre la référence de police, comme indiqué dans les exemples de code XAML (Extensible Application Markup Language) suivants.

// Create a new FontFamily object, using an absolute URI reference.
myTextBlock.FontFamily = new FontFamily("file:///d:/MyFonts/#Pericles Light");
' Create a new FontFamily object, using an absolute URI reference.
myTextBlock.FontFamily = New FontFamily("file:///d:/MyFonts/#Pericles Light")
<TextBlock FontFamily="file:///d:/MyFonts/#Pericles Light">
  Aegean Sea
</TextBlock>

Le nom convivial de la police peut également spécifier une valeur d’URI relative, ce qui nécessite un URI de base pour résoudre la référence de police. La BaseUri propriété de l’objet FontFamily correspond à la valeur de l’URI de base. L’exemple de code suivant montre comment créer une référence de police composée d’une valeur d’URI de base et d’une valeur d’URI relative.

// Create a new FontFamily object, using a base URI reference and a relative URI reference.
myTextBlock.FontFamily = new FontFamily(new Uri("file:///d:/MyFonts/"), "./#Pericles Light");
' Create a new FontFamily object, using a base URI reference and a relative URI reference.
myTextBlock.FontFamily = New FontFamily(New Uri("file:///d:/MyFonts/"), "./#Pericles Light")

Vous pouvez utiliser une valeur d’URI de base lorsque vous référencez une police empaquetée dans le cadre de l’application. Par exemple, la valeur de l’URI de base peut être un URI « pack://application », qui vous permet de référencer des polices empaquetées en tant que ressources d’application. L’exemple de code suivant montre une référence de police composée d’une valeur d’URI de base et d’une valeur d’URI relative.

// The font resource reference includes the base URI reference (application directory level),
// and a relative URI reference.
myTextBlock.FontFamily = new FontFamily(new Uri("pack://application:,,,/"), "./resources/#Pericles Light");
' The font resource reference includes the base URI reference (application directory level),
' and a relative URI reference.
myTextBlock.FontFamily = New FontFamily(New Uri("pack://application:,,,/"), "./resources/#Pericles Light")

Quand un FontFamily est spécifié en tant qu’attribut dans le balisage, la valeur de l’URI de base est toujours implicite : sa valeur est l’URI de la page XAML. La valeur d’URI de base implicite est utilisée avec la valeur d’URI relative dans la chaîne de nom conviviale pour obtenir l’emplacement de la police. Dans l’exemple XAML (Extensible Application Markup Language) suivant, notez que la valeur d’URI relative utilise la notation « . / », qui signifie « dans le dossier actif » de la valeur d’URI de base.

<TextBlock FontFamily="./resources/#Pericles Light">
  Aegean Sea
</TextBlock>

Une application WPF peut empaqueter des polices en tant qu’élément de contenu, élément de ressource ou élément de ressource de bibliothèque. Pour plus d’informations, consultez Empaquetage de polices avec des applications.

Polices de secours

Le secours de police fait référence à la substitution automatique d’une police autre que la police sélectionnée par l’application cliente. Il existe deux raisons principales pour lesquelles la secours des polices est appelée :

  • La police spécifiée par l’application cliente n’existe pas sur le système.

  • La police spécifiée par l’application cliente ne contient pas les glyphes nécessaires au rendu du texte.

Dans WPF, le mécanisme de secours de police utilise la famille de polices de secours par défaut, « Interface utilisateur globale », comme police de remplacement. Cette police est définie comme une police composite, dont le nom de fichier est « GlobalUserInterface.CompositeFont ». Pour plus d’informations sur les polices composites, consultez la section Polices composites de cette rubrique.

Le mécanisme de secours de police WPF remplace les technologies de substitution de police Win32 précédentes.

Définition d’une séquence de secours de police dans le code

Vous pouvez définir une séquence de secours de police dans votre code, ce qui vous permet de définir une autre police. Lorsque vous créez un FontFamily objet, fournissez plusieurs noms de familles de polices, séparés par des virgules, pour le String paramètre , par exemple « Comic Sans MS, Verdana ». Dans ce cas, si les glyphes de la police « Comic Sans MS » ne sont pas disponibles, les glyphes de la police « Verdana » sont utilisés. Si ni « Comic Sans MS » ni « Verdana » n’ont les glyphes requis, la famille de polices de secours de la police est utilisée, qui est « Interface utilisateur globale » par défaut.

Les exemples suivants montrent comment définir une séquence de secours de police, en XAML (Extensible Application Markup Language) et dans le code.

myTextBlock.FontFamily = new FontFamily("Comic Sans MS, Verdana");
myTextBlock.FontFamily = New FontFamily("Comic Sans MS, Verdana")
<TextBlock FontFamily="Comic Sans MS, Verdana">Hello, world</TextBlock>

N’importe quelle police de la séquence de secours peut spécifier des emplacements de police. Dans les exemples suivants, « Pericles Light » est référencé en tant que ressource d’application et « Verdana » en tant que membre de la collection de polices système.

myTextBlock.FontFamily = new FontFamily(new Uri("pack://application:,,,/"), "./resources/#Pericles Light, Verdana");
myTextBlock.FontFamily = New FontFamily(New Uri("pack://application:,,,/"), "./resources/#Pericles Light, Verdana")
<TextBlock FontFamily="./resources/#Pericles Light, Verdana">Aegean Sea</TextBlock>

Polices composites

La plateforme WPF fournit une fonctionnalité de police composite pour permettre la construction de polices multilingues de gamme complète et pour éviter d’afficher des glyphes manquants. Les polices composites remplacent les mécanismes de liaison de polices Win32, de secours de police, de liaison de polices, d’association de polices et de caractères définis par l’utilisateur final (EUDC).

Une famille de polices composite est disponible pour les applications par le biais des FontFamily constructeurs et Typeface , comme n’importe quelle autre famille de polices. Chaque famille de polices composite est nommée et, comme avec d’autres polices, peut fournir des variantes localisées de son nom dans plusieurs langues.

L’exemple de balisage suivant montre comment une famille de polices composite peut être définie en tant que fichier de disque. Ce fichier peut être stocké dans le répertoire de polices Windows par défaut comme avec n’importe quelle autre police installée, ou peut être référencé à n’importe quel emplacement en incluant son URI lors du référencement de la famille par son nom.

L’exemple suivant montre le balisage de la famille de polices dans un « . CompositeFont " fichier.

<FontFamily
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/composite-font"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:System="clr-namespace:System;assembly=mscorlib"
    Baseline="0.9"
    LineSpacing="1.2">

    <!-- Name mapping -->
    <FontFamily.FamilyNames>
        <System:String x:Key="en-US">Global User Interface</System:String>
    </FontFamily.FamilyNames>

    <!-- Faces to report in font chooser UI -->
    <FontFamily.FamilyTypefaces>
        <FamilyTypeface
            Weight="Normal" Stretch="Normal" Style="Normal"
            UnderlinePosition="-0.1" UnderlineThickness="0.05"
            StrikethroughPosition="0.3" StrikethroughThickness="0.05"
            CapsHeight="0.5" XHeight="0.3" />

        <FamilyTypeface
            Weight="Bold" Stretch="Normal" Style="Normal"
            UnderlinePosition="-0.1" UnderlineThickness="0.05"
            StrikethroughPosition="0.3" StrikethroughThickness="0.05"
            CapsHeight="0.5" XHeight="0.3" />
    </FontFamily.FamilyTypefaces>

    <!-- Character to family lookups (in lookup order) -->
    <FontFamily.FamilyMaps>

        <!--
            Basic Latin                 0000-007F
            Latin-1 Supplement          0080-00FF
            Latin Extended-A            0100-017F
            Latin Extended-B            0180-024F
            IPA Extensions              0250-02AF
            Spacing Modifier Letters    02B0-02FF 
            Combining Diacritics Marks  0300-036F 
            Greek and Coptic            0370-03FF
            Cyrillic                    0400-04FF 
            Cyrillic Supplement         0500-052F 
            Phonetic Extensions         1D00-1D7F
            Latin Extended Additional   1E00-1EFF
            Greek Extended              1F00-1FFF
            Alpha Pres Forms Latin      FB00-FB0F -->
        <!-- CHS -->    
        <FontFamilyMap
            Unicode="0000-052F, 1D00-1FFF, FB00-FB0F"
            Language="zh-Hans"
            Target="Times New Roman"
            Scale="1.0" />
        <!-- CHT -->    
        <FontFamilyMap
            Unicode="0000-052F, 1D00-1FFF, FB00-FB0F"
            Language="zh-Hant"
            Target="Times New Roman"
            Scale="1.0" />
        <!-- Other (include JA and KO) -->    
        <FontFamilyMap
            Unicode="0000-052F, 1D00-1FFF, FB00-FB0F"
            Target="Comic Sans MS, Verdana"
            Scale="4.0" />

        <!--
            Armenian                    0530-058F    
            Georgian                    10D0-10FF
            Alpha Pres Forms Armenian   FB10-FB1C -->
        <FontFamilyMap
            Unicode="0530-058F, 10D0-10FF, FB10-FB1C"
            Target="Sylfaen"
            Scale="1.0" />

        <!-- Other FontFamilyMap elements defined ... --> 

    </FontFamily.FamilyMaps>

</FontFamily>

Les quatre polices composites suivantes apparaissent dans le répertoire de polices Windows par défaut dans le cadre de l’installation de WPF.

Police Notes
GlobalMonospace.CompositeFont Restitue du texte à l’aide d’une police monospace, par exemple, « Courier New » pour les caractères latins.
GlobalSanSerif.CompositeFont Affiche le texte à l’aide d’une police sans serif, par exemple, « Arial » pour les caractères latins.
GlobalSerif.CompositeFont Affiche le texte à l’aide d’une police serif, par exemple, « Times New Roman » pour les caractères latins.
GlobalUserInterface.CompositeFont Affiche le texte à l’aide d’une police par défaut, par exemple , « Times New Roman » pour les caractères latins.

Utilisation d'attributs XAML

<object FontFamily="fontFamilyName"/>  
- or -  
<object FontFamily="fontFamilyNamesList"/>  
- or -  
<object FontFamily="fontFamilyFolderReference"/>  
- or -  
<object FontFamily="fontFamilyUriReference"/>  

Valeurs XAML

fontFamilyName
Chaîne spécifiant un nom de famille de polices.  Par exemple, "Arial" ou "Century Gothic".

fontFamilyNamesList
Chaîne spécifiant plusieurs noms de familles de polices, chacun séparé par une virgule (tout espace suivant une virgule est ignoré). La première famille de polices spécifiée sert de famille de polices principale ; les familles de polices suivantes servent de familles de secours à utiliser dans les cas où la famille de polices principale n’est pas disponible ou n’est pas applicable. Par exemple, "Arial, Century Gothic" spécifie Arial comme famille de polices principale, avec Century Gothic comme famille de polices de secours.

fontFamilyFolderReference
Chaîne spécifiant un dossier contenant la police, ainsi qu’un nom de famille de polices. Le dossier et le nom de la famille de polices sont délimités par un caractère # . La référence de dossier peut être absolue ou relative. Par exemple : "Custom Fonts\#My Custom Font".

fontFamilyUriReference
Chaîne spécifiant un URI (Uniform Resource Identifier) pour la police, ainsi qu’un nom de famille de polices. L’URI et le nom de la famille de police sont délimités par un caractère # . Par exemple : "http://MyFontServer/Fonts/#My Custom Font".

Constructeurs

FontFamily()

Initialise une nouvelle instance d'une classe anonyme FontFamily.

FontFamily(String)

Initialise une nouvelle instance de la classe FontFamily à partir du nom de famille de polices spécifié.

FontFamily(Uri, String)

Initialise une nouvelle instance de la classe FontFamily à partir du nom de famille de polices spécifié et d’une valeur d’URI (Uniform Resource Identifier) de base facultative.

Propriétés

Baseline

Obtient ou définit la distance entre la ligne de base et le haut de la cellule de caractère.

BaseUri

Obtient l’URI (Uniform Resource Identifier) de base utilisé pour résoudre un nom de famille de polices.

FamilyMaps

Obtient la collection d'objets FontFamilyMap.

FamilyNames

Obtient une collection de chaînes et de valeurs CultureInfo qui représentent les noms de famille de polices de l'objet FontFamily.

FamilyTypefaces

Obtient une collection de types de caractères pour l'objet FontFamily.

LineSpacing

Obtient ou définit la valeur d'interligne pour l'objet FontFamily. L'interligne est la distance recommandée de ligne de base à ligne de base pour le texte dans cette police, par rapport à la taille exprimée en em.

Source

Obtient le nom de famille de polices qui est utilisé pour construire l'objet FontFamily.

Méthodes

Equals(Object)

Obtient une valeur qui indique si l'objet de la famille de polices actuel et l'objet de la famille de polices spécifié sont identiques.

GetHashCode()

Sert de fonction de hachage pour FontFamily. Son utilisation est indiquée dans les algorithmes de hachage et les structures de données telles qu’une table de hachage.

GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
GetTypefaces()

Renvoie une collection d'objets Typeface qui représentent les caractères dans l'emplacement de polices système par défaut.

MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
ToString()

Retourne la valeur de la propriété Source.

S’applique à

Voir aussi