某些手机系统的字体非原生,使用默认字体无法显示,需要嵌入字体文件, 才能正常显示。
嵌入字体
复制字体文件到 Assets 目录或是子目录中, 本例中使用 Assets\Fonts, 该目录默认编译为 AvaloniaResource
macos 下相看字体名称命令 fc-query qweather-icons.ttf | grep family
使用资源嵌入
<Application.Resources>
<!-- 格式为 文件目录#字体名称 -->
<FontFamily x:Key="AaKuangPaiShouShu">avares://KebooApp/Assets/Fonts#AaKuangPaiShouShu</FontFamily>
</Application.Resources>
<!-- 使用资源引入 -->
<Style Selector="Window">
<Setter Property="FontFamily" Value="{StaticResource AaKuangPaiShouShu}" />
</Style>
<TextBlock
FontFamily="{StaticResource AaKuangPaiShouShu}"
FontSize="24"
Text="一只狐狸 " />
动态引入
# 可以加在 AppBuilder.ConfigureFonts 中, avalonia 应用默认有 WithInterFont 扩展函数添加字体,可以参考一下
# 格式指向目录, fonts:App (App 部分可以自行修改)
EmbeddedFontCollection fc = new(new Uri("fonts:App", UriKind.Absolute), new Uri(@"avares://KebooApp/Assets/Fonts", UriKind.Absolute));
FontManager.Current.AddFontCollection(fc);
# 使用时格式 fonts:App#字体名
text.FontFamily = new FontFamily("fonts:App#AaKuangPaiShouShu");
<TextBlock FontSize="24" Text="一只狐狸 " FontFamily="fonts:App#AaKuangPaiShouShu" />
WPF
见 https://blog.xsoft.ltd/2025/06/06/geometry-%e4%b8%80%e4%ba%9b%e8%be%85%e5%8a%a9%e5%87%bd%e6%95%b0/