外部字體文件 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文件查看:
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字體