公司动态
Ursa.Avalonia 中文乱码:3 条路径 10 分钟修好字体回退
Ursa.Avalonia 中文乱码3 条路径 10 分钟修好字体回退【免费下载链接】Ursa.AvaloniaUrsa是一个用于开发Avalonia程序的控件库项目地址: https://gitcode.com/IRIHI_Technology/Ursa.Avalonia你把 Ursa.Avalonia 的 demo 跑起来界面上中文全是一排排豆腐块英文控件却正常布局也没坏就差字本身。这在浏览器WebView环境最常见桌面端部署到没有中文字体的机器上也会中招。核心原因就一句字体文件没带上字体回退链也缺。 快速诊断30 秒定位你属于哪种情况只在浏览器出现还是桌面端也有只有浏览器 → 路径 3只有桌面 → 路径 2是整个界面乱码还是只有个别控件整个 → 缺回退链个别 → 查那个控件的 FontFamily项目里有没有 .otf/.ttf 字体文件没有 → 走路径 3 补字体机器上装没装 Microsoft YaHei有 → 路径 2 直接能用️ 三条路径按改动代价从小到大路径一控件上设 FontFamily改动范围1 行 XAML耗时约 2 分钟适合只想先把某几处中文修好、不动全局配置的。打开乱码控件所在的 .axaml给目标 TextBlock 加 FontFamily改在MainWindow.axaml的乱码元素上TextBlock FontFamilyMicrosoft YaHei, SimHei Text中文内容/验证→ 重新编译运行那个控件的中文恢复正常即生效。路径二桌面端 Program.cs 加系统字体回退改动范围2 行代码耗时约 5 分钟适合桌面端整个界面乱码、又不想往项目里塞字体文件的Windows 自带微软雅黑。打开桌面端入口 Program.cs在 AppBuilder 链上插入 FontFallbacks改在Program.cs的构建链上.With(new FontManagerOptions { FontFallbacks [new FontFallback { FontFamily new FontFamily(Microsoft YaHei) }] })验证→ 跑桌面应用菜单和按钮里的中文正常渲染即生效。路径三浏览器端内嵌字体文件改动范围字体文件 1 处配置耗时约 15 分钟适合浏览器 / WebView 场景浏览器读不到本地系统字体字体文件必须打包进应用。把开源字体 .otf如思源黑体放进浏览器项目的 Assets 目录确认 csproj 里被 AvaloniaResource 包含用 avares 协议把 DefaultFamilyName 和 FontFallbacks 都指向该字体在 Main 里调用一次参考demo/Ursa.Demo.Browser/AvaloniaAppBuilderExtensions.cs的做法改浏览器项目Program.csconst string font avares://YourProject/Assets#Source Han Sans CN; return AppBuilder.ConfigureApp() .With(new FontManagerOptions { DefaultFamilyName font, FontFallbacks [new FontFallback { FontFamily new FontFamily(font) }] });验证→ 发布到浏览器打开页面标题栏和菜单中文正常渲染即生效。 路径对比一眼选定路径改动范围平台覆盖回滚难度路径一 控件 FontFamily1 行 XAML桌面 浏览器低删 1 行路径二 系统字体回退2 行代码Windows/Linux/macOS 桌面低删一个 .With路径三 浏览器内嵌字体字体文件 配置浏览器/WebView中需删字体文件⚠️ 踩坑提示⚠️avares 里的字体名别写错#后面是字体文件内的 family name如Source Han Sans CN写文件名必失效。 ⚠️Linux 上没有微软雅黑路径二依赖系统字体Linux 没装就换已安装字体或直接走路径三内嵌字体。 ⚠️字体文件放进去还不够.otf 必须在 AvaloniaResource 包含的目录下如 Assets/**否则 avares 读不到。【免费下载链接】Ursa.AvaloniaUrsa是一个用于开发Avalonia程序的控件库项目地址: https://gitcode.com/IRIHI_Technology/Ursa.Avalonia创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考