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

.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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 03:07:44