Поделиться через


FontFamily Класс

Определение

Представляет семейство связанных шрифтов.

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
Наследование
FontFamily
Атрибуты

Комментарии

Семейство шрифтов — это набор шрифтов, которые имеют одно и то же имя семейства, например "Times New Roman", но отличающиеся по функциям. К этим различиям признаков относятся Style, например курсив, и Weight, например полужирный.

Шрифты Шрифты
Пример шрифтов, входящих в семейство шрифтов Times New Roman

Большинство элементов пользовательского интерфейса, таких как Button и TextBlock, предоставляют FontFamily свойство, которое можно использовать для указания шрифта для текстового содержимого элемента управления. Вы определяете шрифт, задав для этого свойства FontFamily значение. В следующих примерах показано, как ссылаться на шрифт в XAML и в коде.

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

В предыдущем примере шрифт, на который ссылается имя Comic Sans MS, называется понятным. Кроме того, в этом примере предполагается, что шрифт находится в системной коллекции шрифтов.

Указание шрифтов в альтернативных каталогах

Приложение Windows Presentation Foundation (WPF) может указать каталог, отличный от каталога, содержащего коллекцию системных шрифтов, для разрешения ссылок на шрифты. Понятное имя шрифта может указывать абсолютное значение универсального идентификатора ресурса (URI) для разрешения ссылки на шрифт, как показано в следующих примерах кода XAML и кода.

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

Понятное имя шрифта также может указывать относительное значение URI, которое требует базового URI для разрешения ссылки на шрифт. Свойство BaseUriFontFamily объекта соответствует базовому значению URI. В следующем примере кода показано, как создать ссылку на шрифт, состоящую из базового значения URI и относительного значения URI.

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

Базовое значение URI можно использовать при ссылке на шрифт, упакованный как часть приложения. Например, базовым значением URI может быть URI "pack://application", который позволяет ссылаться на шрифты, упакованные в качестве ресурсов приложения. В следующем примере кода показана ссылка на шрифт, состоящая из базового значения URI и относительного значения URI.

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

Если указывается FontFamily как атрибут в разметке, базовое значение URI всегда подразумевается — его значение является URI страницы XAML. Подразумеваемое базовое значение URI используется с относительным значением URI в понятной строке имени для получения расположения шрифта. В следующем примере XAML обратите внимание, что относительное значение URI использует нотацию "./", что означает "в текущей папке" базового значения URI.

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

Приложение WPF может упаковыть шрифты как элемент содержимого, элемент ресурса или элемент ресурса библиотеки. Дополнительные сведения см. в разделе Упаковка шрифтов с приложениями.

Резервный шрифт

Под резервным шрифтом подразумевается автоматическая подстановка шрифта, отличного от шрифта, выбранного клиентским приложением. Существует две основные причины, по которым вызывается резервный шрифт.

  • Шрифт, заданный клиентским приложением, не существует в системе.

  • Шрифт, заданный клиентским приложением, не содержит глифов, необходимых для отрисовки текста.

В WPF в качестве замены шрифта используется резервное семейство резервных шрифтов по умолчанию "Глобальный пользовательский интерфейс". Этот шрифт определяется как составной шрифт с именем файла GlobalUserInterface.CompositeFont. Дополнительные сведения о составных шрифтах см. в разделе Составные шрифты этой статьи.

Механизм резервного размещения шрифтов WPF заменяет предыдущие технологии подстановки шрифтов Win32.

Определение резервной последовательности шрифта в коде

Вы можете определить резервную последовательность шрифтов в коде, которая позволяет определить альтернативный шрифт. При создании FontFamily объекта укажите несколько имен семейств шрифтов, разделенных запятыми, для String параметра, например "Comic Sans MS, Verdana". В этом случае, если глифы из шрифта Comic Sans MS недоступны, используются глифы из шрифта Verdana. Если ни "Comic Sans MS", ни "Verdana" не имеют обязательных глифов, используется резервное семейство шрифтов шрифта шрифта, которое по умолчанию является "Глобальным пользовательским интерфейсом".

В следующих примерах показано, как определить резервную последовательность шрифтов в XAML и в коде.

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>

Расположение шрифтов может указывать любой из шрифтов в резервной последовательности. В следующих примерах pericles Light ссылается как на ресурс приложения, а на Verdana — как на системный элемент коллекции шрифтов.

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>

Составные шрифты

Платформа WPF предоставляет функцию составного шрифта, которая позволяет создавать полного диапазона многоязычных шрифтов и не отображать отсутствующие глифы. Составные шрифты заменяют механизмы связывания шрифтов Win32, резервного шрифта, привязки шрифтов, сопоставления шрифтов и символов, определяемых пользователем (EUDC).

Составное семейство шрифтов доступно приложениям через FontFamily конструкторы и , как и Typeface любое другое семейство шрифтов. Каждое составное семейство шрифтов называется и, как и другие шрифты, может предоставлять локализованные варианты его имени на нескольких языках.

В следующем примере разметки показано, как составное семейство шрифтов можно определить как файл диска. Этот файл можно хранить в каталоге шрифтов Windows по умолчанию, как и на любой другой установленный шрифт, или можно ссылаться в любом расположении, включив его универсальный код ресурса (URI) при ссылке на семейство по имени.

В следующем примере показана разметка семейства шрифтов в объекте ". 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>

Следующие четыре составных шрифта отображаются в каталоге шрифтов Windows по умолчанию в рамках установки WPF.

Шрифт Примечания
GlobalMonospace.CompositeFont Отрисовывает текст с использованием монопространствого шрифта, например "Courier New" для латинских символов.
GlobalSanSerif.CompositeFont Отрисовывает текст с помощью шрифта без засечек, например Arial для латинских символов.
GlobalSerif.CompositeFont Отрисовывает текст с помощью шрифта с засечками, например "Times New Roman" для латинских символов.
GlobalUserInterface.CompositeFont Отрисовывает текст с использованием шрифта по умолчанию, например "Times New Roman" для латинских символов.

Использование атрибута XAML

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

Значения XAML

fontFamilyName
Строка, указывающая имя семейства шрифтов. Например, "Arial" или "Century Gothic".

fontFamilyNamesList
Строка, указывающая несколько имен семейств шрифтов, разделенных запятой (любые пробелы после запятой игнорируются). Первое указанное семейство шрифтов выступает в качестве основного семейства шрифтов; последующие семейства шрифтов служат резервными семействами, которые будут использоваться в случаях, когда основное семейство шрифтов недоступно или неприменимо. Например, "Arial, Century Gothic" в качестве основного семейства шрифтов указывается Arial, а в качестве резервного семейства шрифтов — Century Gothic.

fontFamilyFolderReference
Строка, указывающая папку, содержащую шрифт, а также имя семейства шрифтов. Имя папки и семейства шрифтов разделяются символом #. Ссылка на папку может быть абсолютной или относительной. Например, "Custom Fonts\#My Custom Font".

fontFamilyUriReference
Строка, указывающая универсальный код ресурса (URI) для шрифта, а также имя семейства шрифтов. Универсальный код ресурса (URI) и имя семейства шрифтов разделяются символом #. Например, "http://MyFontServer/Fonts/#My Custom Font".

Конструкторы

FontFamily()

Инициализирует новый экземпляр анонимного класса FontFamily.

FontFamily(String)

Инициализирует новый экземпляр класса FontFamily по указанному имени семейства шрифтов.

FontFamily(Uri, String)

Инициализирует новый экземпляр класса FontFamily на основе заданного имени семейства шрифтов и необязательного значения базового универсального кода ресурса (URI).

Свойства

Baseline

Получает или задает расстояние между базовым планом и верхним краем знакоместа.

BaseUri

Возвращает базовый универсальный код ресурса (URI), используемый для разрешения имени семейства шрифтов.

FamilyMaps

Возвращает коллекцию объектов FontFamilyMap.

FamilyNames

Получает коллекцию строк и значений CultureInfo, которые представляют имена семейств шрифтов объекта FontFamily.

FamilyTypefaces

Получает коллекцию гарнитур для объекта FontFamily.

LineSpacing

Получает или задает значение междустрочного интервала для объекта FontFamily. Междустрочный интервал — это рекомендуемое расстояние между базовыми планами для написанного данным шрифтом текста относительно максимального размера.

Source

Получает имя семейства шрифтов, используемого для построения объекта FontFamily.

Методы

Equals(Object)

Получает значение, позволяющее определить, совпадают ли текущий и заданный объекты семейства шрифтов.

GetHashCode()

Служит хэш-функцией для FontFamily. Значение применимо в алгоритмах и структурах данных хэширования, например в хэш-таблицах.

GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
GetTypefaces()

Возвращает коллекцию объектов Typeface, представляющих гарнитуры в расположении системных шрифтов по умолчанию.

MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
ToString()

Возвращает значение свойства Source.

Применяется к

См. также раздел