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為 “./#指定字體類型名稱“。

注意:

  • 路徑Uri不是ttf文件完整路徑;ttf文件所在文件夾,后需要添加”/“或者”\\“;
  • 參數family中不能少了./#任何一個特殊字符。否則界面顯示的字,就不是指定字體中的字符顯示了。
  • 引用字體,與字體文件的名稱無關,只能引用字體類型名稱。

#后面表示字體類型名稱,可以通過雙擊打開ttf文件查看:

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM