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 для разрешения ссылки на шрифт. Свойство BaseUri FontFamily объекта соответствует базовому значению 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 может упаковыть шрифты как элемент содержимого, элемент ресурса или элемент ресурса библиотеки. Дополнительные сведения см. в разделе Упаковка шрифтов с приложениями.

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

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

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

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

В inWPF резервный механизм шрифта использует семейство резервных шрифтов по умолчанию "Глобальный пользовательский интерфейс" в качестве замены шрифта. Этот шрифт определяется как составной шрифт, имя файла которого — 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 Выполняет отрисовку текста с помощью шрифта sans serif, например 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.

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

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