在 .NET MAUI 中使用自定义字体,核心是把字体文件嵌入到项目中,并在 XAML 或 C# 中正确引用。关键点有三个:字体文件添加方式、
Build Action设置、以及跨平台资源名写法(尤其注意 iOS 和 Android 的差异)。
一、添加字体文件并设置生成操作
将字体文件(如
MyFont.ttf或
MyFont.otf)拖入 MAUI 项目的
Resources/Fonts/文件夹(若无则手动创建)。右键字体文件 → “属性” → 将 Build Action 设为: Android:`MauiFont` iOS:`BundleResource`(且需在
Info.plist中声明) Windows/macOS:`MauiFont`(Windows 支持较好,macOS 需确保字体合法可分发)
⚠️ 注意:
Resources/Fonts/是约定路径,MAUI 会自动识别该目录下的字体用于跨平台加载。
二、iOS 必须注册字体(Info.plist 配置)
iOS 不会自动加载嵌入字体,必须显式声明。打开
Platforms/iOS/Info.plist,在
<dict></dict>内添加:
<key>UIAppFonts</key> <array> <string>Fonts/MyFont.ttf</string> </array>
字体文件路径要和项目中实际位置一致(区分大小写),且仅支持
.ttf/
.otf格式。
三、在 XAML 或代码中使用字体
MAUI 使用 字体文件名(不含扩展名)或 PostScript 名 引用字体。推荐优先用文件名,更稳定:
XAML 示例:FontFamily="MyFont.ttf"(注意带
.ttf后缀) C# 示例:
label.FontFamily = "MyFont.ttf";
✅ 正确写法(推荐):
❌ 错误写法:
(不带后缀可能在某些平台失效)
? 小技巧:如果字体显示异常,可用
FontManager.Current.GetInstalledFonts()在运行时查看已加载的字体名(调试用)。
四、验证与常见问题
字体未生效?按顺序检查:
字体文件是否真在Resources/Fonts/下,且 Build Action 正确 iOS 是否更新了
Info.plist并重新部署(缓存可能导致旧配置残留) FontFamily 值是否拼写准确(含后缀、大小写) 是否在模拟器/设备上完整重装 App(尤其 iOS 更换字体后常需彻底卸载再装)
基本上就这些。不复杂但容易忽略 Info.plist 或后缀名,踩过坑就知道关键在哪了。
