FontFamily Classe

Definizione

Rappresenta una famiglia di tipi di carattere correlati.

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
Ereditarietà
FontFamily
Attributi

Commenti

Una famiglia di caratteri è un set di caratteri tipografici che condividono lo stesso nome della famiglia, ad esempio "Times New Roman", ma che differiscono in caratteristiche. Queste differenze di funzionalità includono Style, ad esempio corsivo e Weight, ad esempio grassetto.

Tipi di carattere
Esempio di caratteri tipografici che sono membri della famiglia di caratteri "Times New Roman"

La maggior parte degli elementi dell'interfaccia utente, ad esempio Button e TextBlock, fornisce una FontFamily proprietà che può essere usata per specificare un tipo di carattere per il contenuto di testo di un controllo. Per definire il tipo di carattere, impostare tale proprietà con un FontFamily valore. Gli esempi seguenti illustrano come fare riferimento a un tipo di carattere, in XAML (Extensible Application Markup Language) e nel codice.

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

Nell'esempio precedente, il tipo di carattere a cui si fa riferimento, "Comic Sans MS", viene indicato dal nome descrittivo. In questo esempio si presuppone inoltre che il tipo di carattere sia incluso nella raccolta di tipi di carattere di sistema.

Specifica dei tipi di carattere nelle directory alternative

Un'applicazione Windows Presentation Foundation (WPF) può specificare una directory diversa dalla directory che contiene la raccolta di tipi di carattere dei sistemi per la risoluzione dei riferimenti ai tipi di carattere. Il nome descrittivo del tipo di carattere può specificare un valore URI (Uniform Resource Identifier) assoluto per risolvere il riferimento al tipo di carattere, come illustrato negli esempi di codice XAML (Extensible Application Markup Language).

// 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>

Il nome descrittivo del tipo di carattere può anche specificare un valore URI relativo, che richiede un URI di base per risolvere il riferimento al tipo di carattere. La BaseUri proprietà dell'oggetto corrisponde al valore dell'URI FontFamily di base. Nell'esempio di codice seguente viene illustrato come creare un riferimento al tipo di carattere composto da un valore URI di base e da un valore URI relativo.

// 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")

È possibile usare un valore URI di base quando si fa riferimento a un tipo di carattere incluso nell'applicazione. Ad esempio, il valore dell'URI di base può essere un URI "pack://application", che consente di fare riferimento ai tipi di carattere inseriti come risorse dell'applicazione. Nell'esempio di codice seguente viene illustrato un riferimento al tipo di carattere composto da un valore URI di base e da un valore URI relativo.

// 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")

Quando un oggetto FontFamily viene specificato come attributo nel markup, il valore dell'URI di base è sempre implicito. Il relativo valore è l'URI della pagina XAML. Il valore URI di base implicito viene usato con il valore URI relativo nella stringa del nome descrittivo per ottenere la posizione del tipo di carattere. Nell'esempio XAML (Extensible Application Markup Language) seguente si noti che il valore URI relativo usa la notazione "./", ovvero "nella cartella corrente" del valore dell'URI di base.

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

Un'applicazione WPF può creare un pacchetto di tipi di carattere come un elemento di contenuto, un elemento di risorsa o un elemento di risorsa della libreria. Per altre informazioni, vedere Includere i tipi di carattere nel pacchetto delle applicazioni.

Fallback del tipo di carattere

Il fallback del tipo di carattere fa riferimento alla sostituzione automatica di un tipo di carattere diverso dal tipo di carattere selezionato dall'applicazione client. Esistono due motivi principali per cui viene richiamato il fallback del tipo di carattere:

  • Il tipo di carattere specificato dall'applicazione client non esiste nel sistema.

  • Il tipo di carattere specificato dall'applicazione client non contiene i glifi necessari per il rendering del testo.

In WPF, il meccanismo di fallback del tipo di carattere usa la famiglia di caratteri di fallback predefinita, "Interfaccia utente globale", come tipo di carattere sostitutivo. Questo tipo di carattere è definito come tipo di carattere composito, il cui nome file è "GlobalUserInterface.CompositeFont". Per altre informazioni sui tipi di carattere compositi, vedere la sezione Tipi di carattere compositi in questo argomento.

Il meccanismo di fallback dei tipi di carattere WPF sostituisce le tecnologie di sostituzione dei tipi di carattere Win32 precedenti.

Definizione di una sequenza di fallback del tipo di carattere nel codice

È possibile definire una sequenza di fallback del tipo di carattere nel codice, che consente di definire un tipo di carattere alternativo. Quando si crea un FontFamily oggetto, specificare più nomi di famiglia di caratteri, separati da virgole, per il String parametro, ad esempio "Comic Sans MS, Verdana". In questo caso, se i glifi del carattere tipografico "Comic Sans MS" non sono disponibili, vengono usati glifi del carattere tipografico "Verdana". Se né "Comic Sans MS" né "Verdana" hanno i glifi necessari, viene utilizzata la famiglia di caratteri di fallback del carattere tipografico, ovvero "Interfaccia utente globale" per impostazione predefinita.

Gli esempi seguenti illustrano come definire una sequenza di fallback del tipo di carattere, in XAML (Extensible Application Markup Language) e nel codice.

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>

Uno dei tipi di carattere nella sequenza di fallback può specificare i percorsi dei tipi di carattere. Negli esempi seguenti viene fatto riferimento a "Pericles Light" come risorsa dell'applicazione e viene fatto riferimento a "Verdana" come membro della raccolta di tipi di carattere di sistema.

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>

Tipi di carattere compositi

La piattaforma WPF offre una funzionalità di tipo di carattere composito per consentire la costruzione di tipi di carattere multilingue completi ed evitare di visualizzare glifi mancanti. I tipi di carattere compositi sostituiscono i meccanismi di collegamento dei tipi di carattere Win32, fallback, associazione dei tipi di carattere, associazione di tipi di carattere e caratteri definiti dall'utente finale (EUDC).

Una famiglia di caratteri composita è disponibile per le applicazioni tramite i FontFamily costruttori e Typeface esattamente come qualsiasi altra famiglia di caratteri. Ogni famiglia di caratteri composita è denominata e, come con altri tipi di carattere, può fornire varianti localizzate del nome in più lingue.

Nell'esempio di markup seguente viene illustrato come una famiglia di caratteri composita può essere definita come file su disco. Questo file può essere archiviato nella directory predefinita dei tipi di carattere di Windows come con qualsiasi altro tipo di carattere installato o può essere fatto riferimento in qualsiasi posizione includendo il relativo URI quando si fa riferimento alla famiglia in base al nome.

Nell'esempio seguente viene illustrato il markup della famiglia di caratteri in un oggetto ". File 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>

I quattro tipi di carattere compositi seguenti vengono visualizzati nella directory predefinita dei tipi di carattere di Windows come parte dell'installazione di WPF.

Carattere Note
GlobalMonospace.CompositeFont Esegue il rendering del testo usando un tipo di carattere monospace, ad esempio "Courier New" per i caratteri latini.
GlobalSanSerif.CompositeFont Esegue il rendering del testo usando un tipo di carattere sans serif, ad esempio "Arial" per i caratteri latini.
GlobalSerif.CompositeFont Esegue il rendering del testo usando un tipo di carattere serif, ad esempio "Times New Roman" per i caratteri latini.
GlobalUserInterface.CompositeFont Esegue il rendering del testo usando un tipo di carattere predefinito, ad esempio "Times New Roman" per i caratteri latini.

Uso della sintassi XAML per gli attributi

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

Valori XAML

fontFamilyName
Stringa che specifica un nome di famiglia di caratteri. Ad esempio, "Arial" o "Century Gothic".

fontFamilyNamesList
Stringa che specifica più nomi di famiglia di caratteri, ognuno separato da una virgola (qualsiasi spazio vuoto dopo una virgola viene ignorato). La prima famiglia di caratteri specificata funge da famiglia di caratteri principale; le famiglie di caratteri successive fungono da famiglie di fallback da usare nei casi in cui la famiglia di caratteri principale non è disponibile o non è applicabile. Ad esempio, "Arial, Century Gothic" specifica Arial come famiglia di caratteri principale, con Century Gothic come famiglia di caratteri di fallback.

fontFamilyFolderReference
Stringa che specifica una cartella contenente il tipo di carattere, insieme a un nome della famiglia di caratteri. Il nome della famiglia di caratteri e della cartella è delimitato da un carattere #. Il riferimento alla cartella può essere assoluto o relativo. Ad esempio: "Custom Fonts\#My Custom Font".

fontFamilyUriReference
Stringa che specifica un URI (Uniform Resource Identifier) per il tipo di carattere, insieme a un nome di famiglia di caratteri. L'URI e il nome della famiglia di caratteri sono delimitati da un carattere #. Ad esempio: "http://MyFontServer/Fonts/#My Custom Font".

Costruttori

FontFamily()

Inizializza una nuova istanza di una classe FontFamily anonima.

FontFamily(String)

Inizializza una nuova istanza della classe FontFamily in base al nome di famiglia di caratteri specificato.

FontFamily(Uri, String)

Inizializza una nuova istanza della classe FontFamily in base al nome di famiglia di caratteri specificato e a un valore URI (Uniform Resource Identifier) di base facoltativo.

Proprietà

Baseline

Ottiene o imposta la distanza tra la linea di base e la parte superiore della cella del carattere.

BaseUri

Ottiene l'URI (Uniform Resource Identifier) di base usato per risolvere un nome di famiglia di caratteri.

FamilyMaps

Ottiene la raccolta di oggetti FontFamilyMap.

FamilyNames

Ottiene un insieme di stringhe e di valori CultureInfo che rappresentano i nomi di famiglia di caratteri dell'oggetto FontFamily.

FamilyTypefaces

Ottiene un insieme di caratteri tipografici per l'oggetto FontFamily.

LineSpacing

Ottiene o imposta il valore di interlinea per l'oggetto FontFamily. L'interlinea è la distanza indicata tra una linea di base e l'altra per il testo in questo tipo di carattere, relativa alla dimensione em.

Source

Ottiene il nome della famiglia di caratteri utilizzato per costruire l'oggetto FontFamily.

Metodi

Equals(Object)

Ottiene un valore che indica se la famiglia di caratteri corrente e la famiglia di caratteri specificata sono equivalenti o meno.

GetHashCode()

Usato come funzione hash per FontFamily. Adatto per l'uso in algoritmi hash e in strutture dei dati, ad esempio una tabella hash.

GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
GetTypefaces()

Restituisce un insieme di oggetti Typeface che rappresentano i caratteri tipografici nel percorso del carattere di sistema predefinito.

MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ToString()

Restituisce il valore della proprietà Source.

Si applica a

Vedi anche