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, par exemple « Times New Roman », mais qui diffèrent dans les fonctionnalités. Ces différences de fonctionnalités incluent Style , par exemple, italique, et Weight , telles que le gras.

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

La plupart des éléments de l’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 de texte d’un contrôle. Vous définissez la police en affectant une valeur à cette propriété FontFamily . Les exemples suivants montrent comment référencer une police, en Extensible Application Markup Language (XAML) 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 se trouver dans la collection de polices système.

Spécification des 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 Systems, pour la résolution des références de police. Le nom convivial de la police peut spécifier une valeur d’URI (Uniform Resource Identifier) absolue pour résoudre la référence de police, comme indiqué dans les exemples de code Extensible Application Markup Language (XAML) 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, qui requiert un URI de base pour résoudre la référence de police. La BaseUri propriété de l' FontFamily objet correspond à la valeur de l’URI de base. L’exemple de code suivant montre comment créer une référence de police qui est composée d’une valeur d’URI de base et d’une valeur 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 d’URI de base peut être un URI « pack://application », ce qui vous permet de référencer des polices qui sont empaquetées comme ressources d’application. L’exemple de code suivant montre une référence de police qui est composée d’une valeur d’URI de base et d’une valeur 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 convivial pour obtenir l’emplacement de la police. Dans l’exemple de Extensible Application Markup Language (XAML) suivant, Notez que la valeur d’URI relative utilise la notation « ./ », ce qui signifie « dans le dossier actif » de la valeur de l’URI de base.

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

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

Police de secours

La police de substitution 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 police de secours 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 requis pour le rendu du texte.

InWPF, le mécanisme de substitution de police utilise la famille de polices de secours par défaut, « Global user interface », comme police de substitution. Cette police est définie en tant que police composite, dont le nom de fichier est « GlobalUserInterface. CompositeFont ». Pour plus d’informations sur les polices composites, consultez la section polices composites dans cette rubrique.

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

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

Vous pouvez définir une séquence de polices de secours dans votre code, ce qui vous permet de définir une police alternative. Lorsque vous créez un FontFamily objet, fournissez plusieurs noms de famille de polices, séparés par des virgules, pour le String paramètre, tel que « 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 » ne possèdent 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 substitution de police, en Extensible Application Markup Language (XAML) 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>

L’une des polices 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 » est référencé en tant que membre de 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 à plage complète, et pour éviter d’afficher des glyphes manquants. Les polices composites remplacent les mécanismes de liaison de police Win32, de substitution de police, de liaison de police, d’association de police et de caractères définis par l’utilisateur final (EUDC).

Une famille de polices composite est disponible pour les applications via les FontFamily Typeface constructeurs et 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 comme un fichier disque. Ce fichier peut être stocké dans le répertoire de polices Windows par défaut comme avec toute 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».

<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 s’affichent dans le répertoire de polices Windows par défaut dans le cadre de l’installation de WPF.

Police Notes
GlobalMonospace.CompositeFont Restitue le texte à l’aide d’une police à espacement fixe, par exemple « Courier New » pour les caractères latins.
GlobalSanSerif.CompositeFont Restitue le texte à l’aide d’une police sans serif, par exemple, « Arial » pour les caractères latins.
GlobalSerif.CompositeFont Restitue le texte à l’aide d’une police serif, par exemple « Times New Roman » pour les caractères latins.
GlobalUserInterface.CompositeFont Restitue 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 famille de polices, séparés par une virgule (tout espace blanc après 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 nom de la famille de polices et le dossier 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 famille de polices 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