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