这里以 MiSans 为例,因为尝试了下 阿里巴巴普惠体 失败了。。。其它字体还未尝试
1、添加字体需要将所需字体文件添加到项目中,并将其“生成操作”设置为“AvaloniaResource”,如图:
2、在 App.axaml 中添加字体引用
<Application xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="AvaloniaApplication1.App"
RequestedThemeVariant="Default">
<!-- "Default" ThemeVariant follows system theme variant. "Dark" or "Light" are other available options. -->
<Application.Styles>
<FluentTheme />
</Application.Styles>
<Application.Resources>
<!-- 指定字体文件(#号后是字体名称,必须指定,否则不生效。貌似不支持字体的变体,如:MiSans Bold) -->
<FontFamily x:Key="MiSans">avares://AvaloniaApplication1/fonts/MiSans-Normal.ttf#MiSans</FontFamily>
<!-- 指定字体文件夹(#号后是字体名称,必须指定,否则不生效。) -->
<!--<FontFamily x:Key="MiSans">avares://AvaloniaApplication1/fonts#MiSans</FontFamily>-->
</Application.Resources>
</Application>
3、最后,在需要使用字体的地方,进行使用,此处以将窗口字体设置为 MiSans 为例:
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="660"
x:Class="AvaloniaApplication1.MainWindow"
FontFamily="{StaticResource MiSans}">
<!--...... 其它代码......-->
</Windows>
4、还可以通过代码进行全局设置,修改 Program.cs 内代码:
using Avalonia;
using Avalonia.Media;
using System;
namespace AvaloniaApplication1
{
internal class Program
{
// Initialization code. Don't use any Avalonia, third-party APIs or any
// SynchronizationContext-reliant code before AppMain is called: things aren't initialized
// yet and stuff might break.
[STAThread]
public static void Main(string[] args) => BuildAvaloniaApp()
.StartWithClassicDesktopLifetime(args);
// Avalonia configuration, don't remove; also used by visual designer.
public static AppBuilder BuildAvaloniaApp()
=> AppBuilder.Configure<App>()
.UsePlatformDetect()
// 此处是添加了一个内置默认字体
.WithInterFont()
// 此处配置自定义字体
.With(new FontManagerOptions
{
// 设置为默认字体
DefaultFamilyName = "avares://AvaloniaApplication1/fonts/MiSans-Normal.ttf#MiSans",
FontFallbacks = new[]
{
// 且必须再设置一个回落字体,否则会被前面添加的内置默认字体覆盖
// 或者也可以不添加内置默认字体,此处即可不再设置
new FontFallback
{
FontFamily = new FontFamily("avares://AvaloniaApplication1/fonts/MiSans-Normal.ttf#MiSans")
}
}
})
.LogToTrace();
}
}
5、配置完默认字体后,发现字体边缘锯齿非常明显,影响观感。
可以进行字体渲染的配置,但目前只找到在单个窗口或控件上进行配置的方法,不知道全局如何配置。
using Avalonia.Controls;
using Avalonia.Media;
using Avalonia.Media.Imaging;
namespace AvaloniaApplication1
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
// 字体渲染模式:Alias - 锯齿、Antialias - 抗锯齿、SubpixelAntialias - 次像素抗锯齿
RenderOptions.SetTextRenderingMode(this, TextRenderingMode.SubpixelAntialias);
// 如果发现图片呈现不清晰,应该可以通过该配置优化渲染:位图插值模式
RenderOptions.SetBitmapInterpolationMode(this, BitmapInterpolationMode.HighQuality);
// 如果发现形状边缘有锯齿,应该可以通过该配置优化渲染:边缘渲染模式
RenderOptions.SetEdgeMode(this, EdgeMode.Antialias);
}
}
}
结束。
参考链接:
https://github.com/AvaloniaUI/Avalonia/pull/9584
https://github.com/AvaloniaUI/Avalonia/pull/15676
标签:MiSans,自定义,AvaloniaApplication1,添加,字体,using,Avalonia From: https://www.cnblogs.com/xwgli/p/18493648