欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

WPF 引用字体文件资源

程序员文章站 2022-03-02 13:16:06
外部字体文件 1.后台代码引用字体 将一个名为“ChineseCharacterSpecialFont.ttf”的ttf文件,放在桌面路径,后台引用方式如下: 1 var ttfFilePath = @"C:\Users\user\Desktop\"; 2 HanziTextBlock.FontFa ......

外部字体文件

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为 “./#指定字体类型名称“。

注意:

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

#后面表示字体类型名称,可以通过双击打开ttf文件查看:

WPF 引用字体文件资源

2.wpf-xaml资源引用

把一个名为“chinesecharacterspecialfont.ttf”的ttf文件,放在wpfapp2工程下。引用方式如下:

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获取。

xaml字体就不用说了。后台设置字体类型,可以通过:

1     var systemfontfamilies = fonts.systemfontfamilies;
2     var songtifamily = systemfontfamilies.firstordefault(i=>i.source=="kaiti");
3     hanzitextblock.fontfamily = songtifamily;

系统字体fontfamily数据,source名称是英文的。怎么通过中文名称获取相应字体?

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字体