WPF 引用字体文件资源

外部字体文件

1.后台代码引用字体

将一个名为“ChineseCharacterSpecialFont.ttf”的ttf文件,放在桌面路径,后台引用方式以下:前端

1 var ttfFilePath = @"C:\Users\user\Desktop\";
2 HanziTextBlock.FontFamily = new System.Windows.Media.FontFamily(new Uri(ttfFilePath), "./#楷体_GB2312");

路径Uri只须要文件夹就好了,后面一个参数family为 “./#指定字体类型名称“。app

注意:字体

  • 路径Uri不是ttf文件完整路径;ttf文件所在文件夹,后须要添加”/“或者”\\“;
  • 参数family中不能少了./#任何一个特殊字符。不然界面显示的字,就不是指定字体中的字符显示了。
  • 引用字体,与字体文件的名称无关,只能引用字体类型名称。

#后面表示字体类型名称,能够经过双击打开ttf文件查看:spa

2.WPF-Xaml资源引用

把一个名为“ChineseCharacterSpecialFont.ttf”的ttf文件,放在WpfApp2工程下。引用方式以下:code

1     <Window.Resources>
2         <FontFamily x:Key="HanziCharacterFontFamily">pack://application:,,,/WpfApp2;component/#楷体_GB2312</FontFamily>
3     </Window.Resources>
4     <Grid>
5         <TextBlock x:Name="HanziTextBlock" Text="a" FontFamily="{StaticResource HanziCharacterFontFamily}"
6                    FontSize="50" HorizontalAlignment="Center" VerticalAlignment="Center"/>
7     </Grid>

本地安装字体文件

本地已安装的字体,能够经过Fonts.SystemFontFamilies获取。component

Xaml字体就不用说了。后台设置字体类型,能够经过:blog

1     var systemFontFamilies = Fonts.SystemFontFamilies;
2     var songTiFamily = systemFontFamilies.FirstOrDefault(i=>i.Source=="KaiTi");
3     HanziTextBlock.FontFamily = songTiFamily;

系统字体FontFamily数据,Source名称是英文的。怎么经过中文名称获取相应字体?ci

FamilyNames为一个含有多语言项的字典,Key为语言项,Value为字体类型名称。资源

 1     var systemFontFamilies = Fonts.SystemFontFamilies;
 2     FontFamily filteredChineseFamily = null;
 3     foreach (FontFamily family in systemFontFamilies)
 4     {
 5         LanguageSpecificStringDictionary familyNames = family.FamilyNames;
 6         if (familyNames.ContainsKey(XmlLanguage.GetLanguage("zh-cn")))
 7         {
 8             if (familyNames.TryGetValue(XmlLanguage.GetLanguage("zh-cn"), out var chineseFontName)&&chineseFontName=="楷体")
 9             {
10                 filteredChineseFamily = family;
11                 break;
12             }
13         }
14     }
15     HanziTextBlock.FontFamily = filteredChineseFamily;

 

关键字:后台代码引用ttf字体,WPF前端引用ttf字体io

相关文章
相关标签/搜索