.NET MAUI WebView无法使用自定义字体问题求助
解决.NET MAUI WebView加载Android自定义字体失败的问题
1. 修正字体文件的存放路径与生成操作
.NET MAUI Android平台的资源规则要求,本地Assets资源必须放在Platforms/Android/Assets目录下,而非直接放在Platforms/Android根目录。具体操作:
- 在
Platforms/Android目录下创建Assets文件夹(若不存在) - 在
Assets内新建Fonts子文件夹 - 将
Simplified.ttf移入Assets/Fonts路径 - 选中字体文件,在属性面板设置:
- 生成操作:
AndroidAsset - 复制到输出目录:
始终复制
- 生成操作:
2. 确保HTML路径写法正确
MAUI Android中WebView访问Assets资源的路径规则与Xamarin一致,需严格使用以下@font-face代码:
@font-face{ font-family:Simplified; src: url('file:///android_asset/Fonts/Simplified.ttf') }
注意:android_asset是Android系统规定的固定标识符,不可替换为assets或其他写法。
3. 备选方案:嵌入式资源加载
若上述方法仍无效,可将字体转为嵌入式资源直接嵌入HTML:
- 将字体文件放在项目根目录的
Resources/Fonts下,设置生成操作为EmbeddedResource - 通过代码读取字体并转为Base64编码,嵌入到HTML的CSS中:
var assembly = typeof(YourPageType).Assembly; using var stream = assembly.GetManifestResourceStream("YourAppNamespace.Resources.Fonts.Simplified.ttf"); byte[] fontBytes = new byte[stream.Length]; stream.Read(fontBytes, 0, fontBytes.Length); string fontBase64 = Convert.ToBase64String(fontBytes); // 插入到HTML头部的CSS string fontCss = $"@font-face{{font-family:Simplified; src: url(data:font/truetype;base64,{fontBase64})}}";
4. 常见问题排查
- 检查文件名与路径的大小写(Android文件系统大小写敏感)
- 清理项目缓存后重新生成,避免旧资源残留
- 确认
Assets目录下的所有文件生成操作均为AndroidAsset
内容的提问来源于stack exchange,提问作者user3889844
相关产品推荐
相关产品推荐

