FontFamily Classe

Definição

Representa uma família de fontes relacionadas.

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
Herança
FontFamily
Atributos

Comentários

Uma família de fontes é um conjunto de tipos que compartilham o mesmo nome de família, como "Times New Roman", mas que diferem nas características. Essas diferenças de recursos incluem Style, como itálico e Weight, como negrito.

Fontes
Exemplo de tipos que são membros da família de fontes "Times New Roman"

A maioria dos elementos da interface do usuário, como Button e TextBlock, fornece uma FontFamily propriedade que pode ser usada para especificar uma fonte para o conteúdo de texto de um controle. Defina a fonte definindo essa propriedade com um FontFamily valor. Os exemplos a seguir mostram como fazer referência a uma fonte, em XAML (Extensible Application Markup Language) e no código.

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

No exemplo anterior, a fonte referenciada, "Comic Sans MS", é referenciada pelo nome amigável. Além disso, neste exemplo, supõe-se que a fonte esteja na coleção de fontes do sistema.

Especificando fontes em diretórios alternativos

Um aplicativo de Windows Presentation Foundation (WPF) pode especificar um diretório, diferente do diretório que contém a coleção de fontes de sistemas, para resolver referências de fonte. O nome amigável da fonte pode especificar um valor de URI (identificador de recurso uniforme) absoluto para resolve a referência de fonte, conforme mostrado nos exemplos de código e XAML (Extensible Application Markup Language) a seguir.

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

O nome amigável da fonte também pode especificar um valor de URI relativo, que requer um URI base para resolve a referência de fonte. A BaseUri propriedade do FontFamily objeto corresponde ao valor de URI base. O exemplo de código a seguir mostra como criar uma referência de fonte composta por um valor de URI base e um valor de 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")

Você pode usar um valor de URI base ao referenciar uma fonte que é empacotada como parte do aplicativo. Por exemplo, o valor de URI base pode ser um URI "pack://application", que permite referenciar fontes que são empacotadas como recursos de aplicativo. O exemplo de código a seguir mostra uma referência de fonte composta por um valor de URI base e um valor de 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 um FontFamily é especificado como um atributo na marcação, o valor de URI base é sempre implícito – seu valor é o URI da página XAML. O valor de URI base implícito é usado com o valor de URI relativo na cadeia de caracteres de nome amigável para obter o local da fonte. No exemplo de XAML (Extensible Application Markup Language) a seguir, observe que o valor de URI relativo usa a notação "./", que significa "na pasta atual" do valor de URI base.

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

Um aplicativo WPF pode empacotar fontes como um item de conteúdo, um item de recurso ou um item de recurso de biblioteca. Para obter mais informações, consulte Empacotando fontes com aplicativos.

Fallback de fonte

Fallback de fonte refere-se à substituição automática de uma fonte diferente da fonte selecionada pelo aplicativo cliente. Há dois motivos principais pelos quais o fallback de fonte é invocado:

  • A fonte especificada pelo aplicativo cliente não existe no sistema.

  • A fonte especificada pelo aplicativo cliente não contém os glifos necessários para renderizar texto.

No WPF, o mecanismo de fallback de fonte usa a família de fontes de fallback padrão, "Interface global do usuário", como a fonte substituta. Essa fonte é definida como uma fonte composta, cujo nome de arquivo é "GlobalUserInterface.CompositeFont". Para obter mais informações sobre fontes compostas, consulte a seção Fontes compostas neste tópico.

O mecanismo de fallback de fonte do WPF substitui as tecnologias anteriores de substituição de fonte win32.

Definindo uma sequência de fallback de fonte no código

Você pode definir uma sequência de fallback de fonte em seu código, o que permite definir uma fonte alternativa. Ao criar um FontFamily objeto, forneça vários nomes de família de fontes, separados por vírgulas, para o String parâmetro , como "Comic Sans MS, Verdana". Nesse caso, se os glifos da face de tipo "Comic Sans MS" não estiverem disponíveis, os glifos da face de tipo "Verdana" serão usados. Se nem "Comic Sans MS" nem "Verdana" tiverem os glifos necessários, a família de fontes de fallback da face de tipo será usada, que é "Interface global do usuário" por padrão.

Os exemplos a seguir mostram como definir uma sequência de fallback de fonte, em XAML (Extensible Application Markup Language) e em código.

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>

Qualquer uma das fontes na sequência de fallback pode especificar locais de fonte. Nos exemplos a seguir, "Péricles Light" é referenciado como um recurso de aplicativo e "Verdana" é referenciado como um membro da coleção de fontes do 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>

Fontes compostas

A plataforma WPF fornece um recurso de fonte composta para permitir a construção de fontes multilíngues de intervalo completo e para evitar a exibição de glifos ausentes. As fontes compostas substituem os mecanismos de vinculação de fonte win32, fallback de fonte, associação de fonte, associação de fontes e caracteres definidos pelo usuário final (EUDC).

Uma família de fontes compostas está disponível para aplicativos por meio dos FontFamily construtores e Typeface , assim como qualquer outra família de fontes. Cada família de fontes compostas é nomeada e, como acontece com outras fontes, pode fornecer variantes localizadas de seu nome em vários idiomas.

O exemplo de marcação a seguir mostra como uma família de fontes compostas pode ser definida como um arquivo de disco. Esse arquivo pode ser armazenado no diretório de fonte padrão do Windows como com qualquer outra fonte instalada ou pode ser referenciado em qualquer local, incluindo seu URI ao referenciar a família pelo nome.

O exemplo a seguir mostra a marcação da família de fontes em um ". Arquivo 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>

As quatro fontes compostas a seguir aparecem no diretório de fonte padrão do Windows como parte da instalação do WPF.

Fonte Observações
GlobalMonospace.CompositeFont Renderiza o texto usando uma fonte de monospace, por exemplo, "Courier New" para caracteres latinos.
GlobalSanSerif.CompositeFont Renderiza o texto usando uma fonte sans serif, por exemplo, "Arial" para caracteres latinos.
GlobalSerif.CompositeFont Renderiza o texto usando uma fonte serif, por exemplo, "Times New Roman" para caracteres latinos.
GlobalUserInterface.CompositeFont Renderiza o texto usando uma fonte padrão, por exemplo, "Times New Roman" para caracteres latinos.

Uso do Atributo XAML

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

Valores XAML

fontFamilyName
Uma cadeia de caracteres que especifica um nome de família de fontes. Por exemplo, "Arial" ou "Century Gothic".

fontFamilyNamesList
Uma cadeia de caracteres que especifica vários nomes de família de fontes, cada um separado por uma vírgula (qualquer espaço em branco após uma vírgula é ignorado). A primeira família de fontes especificada serve como a família de fontes primária; as famílias de fontes subsequentes servem como famílias de fallback para serem usadas nos casos em que a família de fontes primária não está disponível ou não é aplicável. Por exemplo, "Arial, Century Gothic" especifica Arial como a família de fontes primária, com Century Gothic como a família de fontes de fallback.

fontFamilyFolderReference
Uma cadeia de caracteres que especifica uma pasta que contém a fonte, juntamente com um nome de família de fontes. A pasta e o nome da família de fontes são delimitados por um caractere # . A referência de pasta pode ser absoluta ou relativa. Por exemplo, "Custom Fonts\#My Custom Font".

fontFamilyUriReference
Uma cadeia de caracteres que especifica um URI (uniform resource identifier) para a fonte, juntamente com um nome de família de fontes. O URI e o nome da família de fontes são delimitados por um caractere # . Por exemplo, "http://MyFontServer/Fonts/#My Custom Font".

Construtores

FontFamily()

Inicializa uma nova instância de uma classe FontFamily anônima.

FontFamily(String)

Inicializa uma nova instância da classe FontFamily do nome da família de fontes especificado.

FontFamily(Uri, String)

Inicializa uma nova instância da classe FontFamily do nome da família de fontes especificado e um valor de URI (Uniform Resource Identifier) de base opcional.

Propriedades

Baseline

Obtém ou define a distância entre a linha de base e a parte superior da célula do caractere.

BaseUri

Obtém o URI (Uniform Resource Identifier) de base usado para resolver um nome da família de fontes.

FamilyMaps

Obtém a coleção de objetos FontFamilyMap.

FamilyNames

Obtém uma coleção de cadeias de caracteres e valores CultureInfo que representam os nomes das famílias de fontes do objeto FontFamily.

FamilyTypefaces

Obtém uma coleção de fates de tipo para o objeto FontFamily.

LineSpacing

Obtém ou define o valor de espaçamento de linha para o objeto FontFamily. O espaçamento de linha é a distância da linha de base para linha de base recomendada para o texto nesta fonte com relação ao tamanho em.

Source

Obtém o nome da família de fontes que é usada para construir o objeto FontFamily.

Métodos

Equals(Object)

Obtém um valor que indica se o objeto de família de fontes atual e o especificado são os mesmos.

GetHashCode()

Serve como uma função de hash para FontFamily. Ele é adequado para uso em algoritmos de hash e estruturas de dados como uma tabela de hash.

GetType()

Obtém o Type da instância atual.

(Herdado de Object)
GetTypefaces()

Retorna uma coleção de objetos Typeface que representam as faces de tipo no local de fontes padrão do sistema.

MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ToString()

Retorna o valor da propriedade Source.

Aplica-se a

Confira também