我知道如何在 MauiProgram.cs
中以标准方式使用字体但是我想看看是否可以从服务器端下载字体,然后以编程方式绑定它,但到目前为止还没有成功。这是我尝试实现的一些代码。
public async Task<string> DownloadAndSetFontAsync(string fontName, string fontTechnicalName)
{
var fontPath = Path.Combine(FileSystem.CacheDirectory, $"{fontTechnicalName}.ttf");
using var client = new HttpClient();
var fontData = await client.GetByteArrayAsync("https://xxxxxx/fonts/"+ fontTechnicalName +".ttf");
await File.WriteAllBytesAsync(fontPath, fontData);
return GetFontName(fontPath);
}
上面的代码成功地将字体下载到用户缓存,但即使在引发属性时也不会在前端呈现?有什么想法吗?
示例:
public MainPage(IFontRegistrar fontRegistrar)
{
...
if(useMaterial3)
fontRegistrar.Register("MaterialIcons-3.ttf", "Icons");
else
fontRegistrar.Register("MaterialIcons-2.ttf", "Icons");
...
}
<Label Text="{x:Static local:MaterialIconsFont.Engineering}" FontFamily="Icons" FontSize="40"/>
这对我有用。
它在运行时注册不同的字体。内部(临时)应用程序的运行时间,如果有一天它停止工作,没有一个人会错过它。
我不会为生产应用程序编写类似的东西,即使我的生活依赖于它。
附加免责声明: 我确实阅读了你的问题,并且我理解“下载”部分。我想指出注册部分以及加载 XAML 时如何解决它。
我知道它并不能真正回答你的问题,但你可能会发现它很有用。