You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在.NET C#项目中如何导入自定义ttf字体并正确创建FontFamily实例

自定义TTF字体加载失败解决方案

第一步:先配置字体文件属性

这是最容易被遗漏的前置操作:

  • 在解决方案资源管理器中找到你存放的.ttf字体文件,右键选择【属性】
  • 将【生成操作】设置为资源/内容(根据你使用的技术栈调整,WPF选资源,WinForms/控制台选内容即可)
  • 将【复制到输出目录】设置为如果较新则复制

第二步:根据技术栈选择正确加载方式

如果你使用WPF/WinUI/MAUI

你之前的写法错误出在路径格式和字体名规则:

  1. 不能直接用根路径/开头的写法,建议用pack URI格式指定字体位置
  2. #后接的不是字体文件名,是字体的内部正式名称:你可以双击打开ttf字体文件,第一行显示的「字体名称」才是需要填写的内容
    正确写法示例:
// 替换为你自己的程序集名称、字体路径、字体内部名即可
FontFamily fontFamily = new FontFamily("pack://application:,,,/你的程序集名称;component/myfontpath/fontname.ttf#思源黑体 Regular");

如果你使用WinForms/控制台项目

更推荐用PrivateFontCollection加载自定义字体,不会出现路径找不到的问题,写法如下:

using System.Drawing.Text;
using System.IO;

// 先拼完整的字体文件路径,避免相对路径解析错误
string fontPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"myfontpath\fontname.ttf");
PrivateFontCollection pfc = new PrivateFontCollection();
pfc.AddFontFile(fontPath);
FontFamily fontFamily = pfc.Families[0];

路径校验小技巧

如果还是报错,可以先加一行代码验证文件是否能被程序正常识别:

// 输出为True说明路径没问题,输出False则需要调整路径写法
Console.WriteLine(File.Exists(fontPath));

内容的提问来源于stack exchange,提问作者emirryhn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 14:24:03