在AvalonEdit中使用嵌入资源字体失败,求解决方案
问题分析与解决
你的代码主要存在两个核心问题:
1. FontFamily的引用格式错误
嵌入资源字体的FontFamily构造参数格式不符合WPF资源引用规范,你使用的./#pixels.ttf缺少程序集名称、完整的资源路径,且混淆了文件名和字体内部名称的位置。
2. 混淆了字体文件名与字体实际名称
#后缀需要填写的是字体的内部实际名称(打开字体文件后标题栏显示的名称),而非.ttf文件名。比如你的文件叫pixels.ttf,但字体内部名称可能是Pixel Regular这类标识。
修正后的实现步骤
第一步:确认字体的嵌入配置
确保字体文件的生成操作设置为「嵌入的资源」,如果字体放在项目的Fonts子文件夹下,资源路径对应为/Fonts/pixels.ttf。
第二步:获取字体的实际名称
右键打开pixels.ttf文件,查看窗口标题栏的名称(比如标题显示「Pixels Mono」,则实际名称为Pixels Mono)。
第三步:修正代码
假设你的程序集名称是YourAppName,字体放在项目根目录,字体实际名称为Pixels,代码修改如下:
var newEditor = new TextEditor(); newEditor.SyntaxHighlighting = highlighter; // 正确的嵌入资源字体引用格式 var customFont = new FontFamily("pack://application:,,,/YourAppName;component/pixels.ttf#Pixels"); // 只需设置Editor的FontFamily,TextArea会自动继承该配置 newEditor.FontFamily = customFont;
如果字体在Fonts文件夹下,路径调整为/Fonts/pixels.ttf:
var customFont = new FontFamily("pack://application:,,,/YourAppName;component/Fonts/pixels.ttf#Pixels");
内容的提问来源于stack exchange,提问作者TheGrovesy
相关产品推荐
相关产品推荐

