avalonia 应用嵌入字体文件

某些手机系统的字体非原生,使用默认字体无法显示,需要嵌入字体文件, 才能正常显示。

嵌入字体

复制字体文件到 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/

上一篇
下一篇