.NET MAUI Blazor无法修改默认字体?恳请确认问题
解决.NET MAUI Blazor中CSS引入本地字体失效的问题
可能的触发原因
- 字体文件的嵌入资源配置错误,导致WebView无法寻址到文件
- CSS中字体路径写法不符合MAUI Blazor的资源加载规则
- WebView2版本更新后,本地资源的访问逻辑发生变化
具体修复步骤
1. 正确配置字体文件属性
把下载的字体文件(例如Roboto-Regular.ttf)放到Blazor项目的wwwroot/fonts目录下,然后在文件属性窗口设置:
- 生成操作:
Embedded resource - 复制到输出目录:
如果较新则复制
2. 修正CSS字体引入路径
在wwwroot/css/app.css中使用相对路径正确引入字体,示例代码:
@font-face { font-family: 'Roboto'; src: url('../fonts/Roboto-Regular.ttf') format('truetype'); font-weight: normal; font-style: normal; } /* 全局应用自定义字体 */ body { font-family: 'Roboto', sans-serif; }
3. 确认MAUI项目资源注册完整性
在MauiProgram.cs中检查是否已正确注册BlazorWebView服务(默认模板已包含,若手动修改过需确认):
builder.Services.AddMauiBlazorWebView(); #if DEBUG builder.Services.AddBlazorWebViewDeveloperTools(); #endif
4. Windows平台WebView2特殊处理
如果仅Windows平台出现问题,可在Platforms/Windows/App.xaml.cs中配置虚拟主机映射来兼容WebView2的资源访问:
protected override void OnLaunched(LaunchActivatedEventArgs args) { base.OnLaunched(args); var blazorWebView = Window.Content as BlazorWebView; if (blazorWebView?.WebView is WebView2 webView2) { webView2.CoreWebView2InitializationCompleted += (s, e) => { webView2.CoreWebView2.SetVirtualHostNameToFolderMapping( "fonts.local", "wwwroot/fonts", CoreWebView2HostResourceAccessKind.Allow); }; } }
同时修改CSS中的字体路径为虚拟主机地址:
src: url('https://fonts.local/Roboto-Regular.ttf') format('truetype');
验证方式
运行项目后,打开WebView调试工具(Windows按F12,移动端可通过MAUI远程调试功能),在Network标签下查看字体文件的加载状态,返回200即说明路径配置正确。
内容的提问来源于stack exchange,提问作者perfectcode
相关产品推荐
相关产品推荐

