网上搜索的方法使用接口“IFontManagerImpl”这个方法目前只能用于Avalonia 10.X版本,因为11版本后官方把这个接口的成员都设置成了非plubic,所以之前的版本解决办法用不上了,经过搜索github的官方那边的问题集锦,要解决解决Avalonia 11.X版本的中文字体问题有2个思路:

1.在程序里面嵌入TTF字体文件 2.把字体文件安装到linux系统,设置代码使用

这里我成功了第一种方法,运行环境:银河麒麟v10+net6.0+Avalonia 11.0.2+微软雅黑字体

第一步,创建项目:net6.0+Avalonia 11.0.2,项目文件内容如下所示:

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<Nullable>enable</Nullable>
<!--Avalonia doesen't support TrimMode=link currently,but we are working on that https://github.com/AvaloniaUI/Avalonia/issues/6892 -->
<TrimMode>copyused</TrimMode>
<BuiltInComInteropSupport>true</BuiltInComInteropSupport>
</PropertyGroup>
<ItemGroup>
<None Remove=".gitignore" />
<None Remove="Assets\Fonts\msyh.ttf" />
</ItemGroup>
<ItemGroup>
<AvaloniaResource Include="Assets\Fonts\msyh.ttf" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Avalonia" Version="11.0.2" />
<PackageReference Include="Avalonia.Desktop" Version="11.0.2" />
<PackageReference Include="Avalonia.Themes.Fluent" Version="11.0.2" />
<PackageReference Include="Avalonia.Themes.Simple" Version="11.0.2" />
<PackageReference Include="Avalonia.Markup.Xaml.Loader" Version="11.0.2" />
<PackageReference Include="Avalonia.ReactiveUI" Version="11.0.2" />
<!--Condition below is needed to remove Avalonia.Diagnostics package from build output in Release configuration.-->
<PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="11.0.2" />
</ItemGroup>
</Project>

第二步,在网上去搜索下载你所需的中文字体,我这用的微软雅黑字体,放入项目,然后设置为AvaloniaResource,可以参加第一步项目文件内容。

第三步,在App.axaml文件添加字体资源使用,直接用选择器选择窗体,就行了,参考如下代码:

<Application xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="Avalonia11Test.App">
<Application.Styles>
<!--<FluentTheme />-->
<SimpleTheme />
<Style Selector="Window">
<Setter Property="FontFamily" Value="../Assets/Fonts/msyh.ttf#Microsoft YaHei"/>
</Style>
</Application.Styles>
</Application>

第三步,在主窗体随便整点中文的显示就行了,我这整点文本显示,参考如下代码:

<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="450"
x:Class="Avalonia11Test.MainWindow"
Title="Avalonia11Test">
<StackPanel>
<CheckBox Name="cbtn" Content="Welcome to 阿威罗尼亚!" FontSize="20" />
<Button Click="Open" Content="打开" Width="100" Height="25"/>
<StackPanel>
<TextBlock Text="你好" FontWeight="Regular" FontSize="15"/>
<TextBlock Text="你好" FontWeight="Bold" FontSize="25"/>
<TextBlock Text="你好" FontWeight="UltraBold" FontSize="35"/>
</StackPanel>
</StackPanel>
</Window>

第四步,发布!我懒,我没在linux安装net sdk,所以我在这直接就选择文件夹发布,参数设置为独立框架+独立文件。

第五步,把文件复制到linux系统,根据官方的说法中文字体是来源于skia底层,所以uno也会出现,需要设置一下系统LC_CTYPE的变量,所以安装官方的指示,创建一个sh脚本,内容参考如下:

#!
export LC_CTYPE=en_US.UTF-8 && ./Avalonia11Test

最后,就把sh脚本使用sudo chmod提升一下权限,执行./你的sh 大功告成!

这是没有使用该方法直接执行的效果图:

这是使用了该方法的运行图:

在国产系统上做开发,在当前QT大行其道的情况下,一个来自搞了很多年NET程序员的倔强,特别是JG行业

解决Avalonia 11.X版本的中文字体问题的更多相关文章

  1. 解决Ubuntu下Chrome浏览器网页中文字体混乱

    在Ubuntu下使用Chrome浏览器时碰到了网页中文字体混乱的现象: 黑体和楷体混杂,看起来非常不美观. 这是由于许多网页并没有指定字体,然后浏览器将调用系统默认字体配置. 首先,安装文泉驿字体: ...

  2. Kindle Windows版本 中文字体修改工具

    近来想要用Windows看Kindle电子书,无奈Windows 版本的Kindle不能修改中文字体,非常难看.把Kindle拉到IDA PRO看了一下,发现Kindle Windows版本的中文字体 ...

  3. Gitbook 生成 pdf 中文字体错乱问题解决办法

    Gitbook 生成 pdf 中文字体错乱问题解决办法   用过 Gitbook 的都知道, Gitbook 会自动生成 pdf 以提供下载, 但十分遗憾的是自动生成的 pdf 对中文的支持并不好, ...

  4. Sass、Less编译器koala及koala不支持中文字体的解决方法

    一款很好用的Sass编译器,还可以编译Less.coffeescript等 去官网下载适合自己电脑的版本 http://koala-app.com/index-zh.html 打开后拖动或者打开项目目 ...

  5. 编码 - 坑 - win10 下采用 utf-8, 导致 gitbash 中文字体异常, 待解决

    blog01 概述 使用 git 中, 遇到一个坑 背景 最近遇到一个 编码转换 问题 本来也 一知半解 要是有人能给我讲讲就好了 环境 win10 1903 git 2.20.1 1. 问题 概述 ...

  6. Eclipse 3.7(代号Indigo) 中文字体太小解决办法(转)

    升级到3.7Eclipse最直观的反映就是,中文怎么那么小啊---- 相当不方便. 其实这是Eclipse的默认字体换了,以前的一直是Courier New,现在修改字体也找不到了,算了不找了. 这次 ...

  7. CSS3 关于@font-face引用中文字体解决办法

    有两种方法,一种简单的,一种比较复杂,都可以实现(注:这里的方法只适合使用少量的中文字体,如果使用的字量过大,请使用其他方法解决) 第一种:简单的 1.下载需要的中文字体的.ttf格式,这个都不难找到 ...

  8. 解决CentOS无法显示中文字体 | 系统运维 | Web2.0

    解决CentOS无法显示中文字体 | 系统运维 | Web2.0 About Me    博客园    devops    前端    张家港水蜜桃 傍晚好! 2013年09月12日 17:56:08 ...

  9. 解决larave-dompdf中文字体显示问题

    1.安装laravel-dompdf依赖. Packagist:https://packagist.org/packages/barryvdh/laravel-dompdf composer requ ...

  10. html网页引用中文字体,解决加载缓慢办法

    [ttf 压缩]html网页引用中文字体,文件过大,加载缓慢的解决办法[字蛛][web font] [字蛛]http://font-spider.org/ 先安装好 NodeJS,然后执行: npm ...

随机推荐

  1. 2022-10-25:在一个 2 * 3 的板上(board)有 5 块砖瓦,用数字 1~5 来表示, 以及一块空缺用 0 来表示。一次 移动 定义为选择 0 与一个相邻的数字(上下左右)进行交换.

    2022-10-25:在一个 2 * 3 的板上(board)有 5 块砖瓦,用数字 1~5 来表示, 以及一块空缺用 0 来表示.一次 移动 定义为选择 0 与一个相邻的数字(上下左右)进行交换. ...

  2. AcWing 1209. 带分数

    题目描述: 分析: 题意就是说给定一个整数N,求给定a,b,c,求a+b/c==N且a,b,c恰好包括0-9的答案的个数,需要注意的是,b/c可能得到的是小数,所以要尽量避免除法,将等式转换为乘法格式 ...

  3. openlayers获取绘制多边形的顶点坐标

    虽使用Interaction无数次,进行图形绘制与用户交互等,但当需要获取绘制图形的顶点坐标时还是不晓得咋弄? 都知道在绘制完成后回调中能获取到当前的event对象draw.on('drawend', ...

  4. 《HTML入门笔记2》

    HTML常用标签 分别有:a 标签.img 标签.table 标签.form 标签.input 标签等. a 标签(特别常用) a 标签即超级链接,又叫超链接.一个网站通常由多个页面构成,进入网站时首 ...

  5. wait,notify,notifyAll,sleep,join等线程方法的全方位演练

    一.概念解释 1. 进入阻塞: 有时我们想让一个线程或多个线程暂时去休息一下,可以使用 wait(),使线程进入到阻塞状态,等到后面用到它时,再使用notify().notifyAll() 唤醒它,线 ...

  6. 在 Linux 和 Windows 下源码安装 Perl

    Perl 是一种功能丰富的计算机程序语言,运行在超过 100 种计算机平台上,适用广泛,从大型机到便携设备,从快速原型创建到大规模可扩展开发.在生物信息分析领域,Perl 主要是做数据预处理.文本处理 ...

  7. CANoe_ Trace 和 Graphics 窗口的介绍和使用

    Canoe是一款用于汽车网络分析和仿真的工具,其中包括Trace和Graphics两个窗口,用于显示和分析CAN网络数据.以下是对Canoe的Trace和Graphics窗口的简要介绍和使用说明: 1 ...

  8. 一篇文章带你入门HBase

    本文已收录至Github,推荐阅读 Java随想录 微信公众号:Java随想录 目录 HBase特性 Hadoop的限制 基本概念 NameSpace Table RowKey Column Time ...

  9. Linux目录结构及常用命令

    目录 Linux目录结构... 1 Linux目录结构... 1 1. Linux常用命令... 4 1.1 Linux命令初体验... 4 1.2 文件目录操作命令... 8 1.3 拷贝移动命令. ...

  10. chatgpt入口,免费在线chatgpt--与人工智能聊天?尝试chatgpt入口,免费在线chatgpt吧!

    介绍一款人工智能聊天机器人--chatgpt入口 chatgpt是一款智能聊天机器人,它能够与人类进行自然语言对话,可以回答问题.提供建议,还可以玩游戏和聊天互动,是当前最受欢迎的人工智能聊天工具之一 ...