WPF 加载外部字体
例如将字体放入d:/Fonts 文件夹。然后就可以通过类似
btn.FontFamily = new FontFamily("file:///d:/Fonts/#Ashley");的形式使用。
获取字体文件的字体名称:
1 2 3 4 5 | string fontFilePath = "d:\\Fonts\\ygyxsziti2.0.ttf" ; GlyphTypeface glyphTypeface = new GlyphTypeface( new Uri(fontFilePath,UriKind.RelativeOrAbsolute)); String fontFamily = glyphTypeface.Win32FamilyNames[ new System.Globalization.CultureInfo( "en-us" )]; String fontFace = glyphTypeface.Win32FaceNames[ new System.Globalization.CultureInfo( "en-us" )]; Console.WriteLine( "Font: " + fontFamily + " " + fontFace); |
完整代码:
1 2 3 4 5 6 7 8 9 10 | string fontFilePath = "d:\\Fonts\\ygyxsziti2.0.ttf" ; GlyphTypeface glyphTypeface = new GlyphTypeface( new Uri(fontFilePath,UriKind.RelativeOrAbsolute)); String fontFamily = glyphTypeface.Win32FamilyNames[ new System.Globalization.CultureInfo( "en-us" )]; String fontFace = glyphTypeface.Win32FaceNames[ new System.Globalization.CultureInfo( "en-us" )]; Console.WriteLine( "Font: " + fontFamily + " " + fontFace); string fontFolerPath=System.IO.Path.GetDirectoryName(fontFilePath); string fontOK = "file:///" + fontFolerPath.Replace( "\\\\" , "/" ).Replace( "\\" , "/" ) + "/#" + fontFamily; btnFontColor.FontFamily = new FontFamily(fontOK); //btnFontColor.FontFamily= new FontFamily("file:///d:/Fonts/#叶根友毛笔行书2.0版"); |
另外获取字体名称的方法1:
using System.Drawing; using System.Drawing.Text;
您需要将字体添加到私有集合( PrivateFontCollection
),然后请求FontFamily
实例并获取其Name
属性。
像这样:
PrivateFontCollection fontCol = new PrivateFontCollection(); fontCol.AddFontFile(@"PATH TO FONT"); Console.WriteLine(fontCol.Families[0].Name);
另外获取字体名称的方法2:
1 | foreach (FontFamily fontFamily in Fonts.GetFontFamilies( "file:///D:/MyFonts/" )) { string name = fontFamily .ToString().Split( '#' )[fontFamily .ToString().Split( '#' ).Count() - 1]; } |
fffffffffffffffff
test red font.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构