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”字体系列成员的字体示例
大多数用户界面 (UI) 元素(如
Button
和
TextBlock
)提供
FontFamily
可用于为控件的文本内容指定字体的属性。 可以通过使用 值设置该属性
FontFamily
来定义字体。 以下示例演示如何在 Extensible Application Markup Language (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 值可以是“pack://application”URI,这使你可以引用打包为应用程序资源的字体。 下面的代码示例演示由基 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 值 - 其值为 XAML 页的 URI。 隐含基 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>
在 WPF 安装过程中,默认 Windows 字体目录中会显示以下四种复合字体。
<object FontFamily="fontFamilyNamesList"/>
- or -
<object FontFamily="fontFamilyFolderReference"/>
- or -
<object FontFamily="fontFamilyUriReference"/>
XAML 值
fontFamilyName
指定字体系列名称的字符串。 例如 "Arial"
或 "Century Gothic"
。
fontFamilyNamesList
指定多个字体系列名称的字符串,每个用逗号分隔 (逗号后的任何空格都会被忽略) 。 指定的第一个字体系列用作主要字体系列;后续字体系列用作回退系列,用于主要字体系列不可用或不适用的情况。 例如, "Arial, Century Gothic"
指定 Arial 作为主要字体系列,将 Century 哥特作为回退字体系列。
fontFamilyFolderReference
指定包含字体的文件夹以及字体系列名称的字符串。 文件夹和字体系列名称由 # 字符分隔。 文件夹引用可以是绝对引用,也可以是相对的。 例如,"Custom Fonts\#My Custom Font"
。
fontFamilyUriReference
指定字体的统一资源标识符 (URI) 以及字体系列名称的字符串。 URI 和字体系列名称由 # 字符分隔。 例如,"http://MyFontServer/Fonts/#My Custom Font"
。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:https://aka.ms/ContentUserFeedback。
提交和查看相关反馈