MAUI 字体适用于 Windows 计算机,但不适用于模拟器

问题描述 投票:0回答:3

我有一个 MAUI 项目,我正在尝试在我的应用程序中添加自定义字体。当我在 Windows 计算机上运行它时它可以工作,但从模拟器运行它时它不会应用字体。 有人知道原因吗? 谢谢

我的自定义字体已添加到资源 -> 字体

enter image description here

我已经在 MauiProgram 类中声明了它

enter image description here

为我的自定义字体设置属性

enter image description here

当它在 Windows 机器上运行时它是正确的

enter image description here

当它在 Android 模拟器上运行时,它不会被应用

enter image description here

我也尝试使用其他字体,结果又发生了!

c# visual-studio android-emulator maui
3个回答
2
投票

我无法在我的项目中重现您的问题。

我的程序代码.cs:

builder
           .UseMauiApp<App>()
           .ConfigureFonts(fonts =>
           {
               fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
               fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
             fonts.AddFont("Conquest-8MxyM.ttf", "MyFont");
            })

还有 ttf 文件:

enter image description here

使用xaml中的字体:

<Label
                Text="Hello, World!"
                SemanticProperties.HeadingLevel="Level1"
                FontSize="32"
                HorizontalOptions="Center"
                FontFamily="MyFont"/>

Android模拟器中的结果图像:

enter image description here


0
投票

我更改了代码,现在它可以工作了:

    <Label Text="Hello World!"
            FontSize="{OnPlatform iOS=20, Android=22, WinUI=50}">
            <Label.FontFamily>
                <OnPlatform x:TypeArguments="x:String">
                    <On Platform="iOS" Value="OpenSans-Regular" />
                    <On Platform="Android" Value="DUEL" />
                    <On Platform="WinUI" Value="OpenSansSemibold" />
                </OnPlatform>
            </Label.FontFamily>
     </Label>

这个问题帮助了我:

在 .NET MAUI 中使用粗体和斜体以外的 FontAttributes

白光宇 - MSFT回答这个问题


0
投票

在Android-Maui中使用字体时,字体的Add方法需要指定清晰的路径。因此,我使用以下代码来实现此目的。首先,属性将 MauiFont 中的字体设置为嵌入资源,然后手动将字体提取到特定文件路径,然后添加此特定文件路径。

using (var resource = Assembly.GetExecutingAssembly().GetManifestResourceStream("RawMaterial.Resources.Fonts.simhei.ttf"))
       {
           var ReadByte = new byte[resource.Length];
           resource.Read(ReadByte, 0, (int)resource.Length);
           File.WriteAllBytes(Path.Combine(FileSystem.CacheDirectory, "simhei.ttf"), ReadByte);
       }
       var builder = MauiApp.CreateBuilder();
       builder
           .UseMauiApp<App>()
           .UseSkiaSharp()
           .UseXceedMauiToolkit()
           .ConfigureFonts(fonts =>
           {
               fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
               fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
               fonts.AddFont(Path.Combine(FileSystem.CacheDirectory, "simhei.ttf"), "simhei");
           });
© www.soinside.com 2019 - 2024. All rights reserved.