解决Avalonia 11.X版本的中文字体问题

这篇具有很好参考价值的文章主要介绍了解决Avalonia 11.X版本的中文字体问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

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

 文章来源地址https://www.toymoban.com/news/detail-635827.html

第一步,创建项目: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 大功告成!

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

解决Avalonia 11.X版本的中文字体问题

 

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

解决Avalonia 11.X版本的中文字体问题

解决Avalonia 11.X版本的中文字体问题

 

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

 

到了这里,关于解决Avalonia 11.X版本的中文字体问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Mac系统下matplotlib中SimHei中文字体缺失报错的解决办法

    使用matplotlib画图时,因为缺少字体,、图像上label上的中文显示时空白小方块。因为matplotlib默认没有中文。 Step 1. 在终端进入python3环境,查看matplotlib字体路径: 找到自己的matplotlib字体文件路径: /Users/zhangzhang/miniforge3/envs/py38_pytorch/lib/python3.8/site-packages/matplotlib/mpl-data/ fon

    2023年04月13日
    浏览(69)
  • Qt5项目拆解第一集解决:中文乱码| 全局字体|注册表|QSS/CSS

    # 一、乱码解决代码片段 QTextCodec是Qt中用于处理文本编码和字符集转换的类。它提供了一系列静态函数来实现不同编码的文本转换,包括编码转换、字符集检测和转换、以及数据流中的文本编码处理。QTextCodec类使得Qt可以在不同的编码和字符集之间进行无缝转换,从而方便地

    2024年01月21日
    浏览(64)
  • Rocky(Centos)安装中文字体(防止中文乱码)

    运行下列命令 若出现,下面截图,则需要安装字体管理软件  安装字体库,运行: 当看到下图的提示信息时说明已安装成功: 1)windows系统中就可以找到,打开c盘下的Windows/Fonts目录: 如上图,我们只需要将我们需要的字体拷贝出来并上传至linux服务器即可(例如:宋体和黑

    2024年02月09日
    浏览(61)
  • unity添加中文字体

    1.随便打开一个unity工程 2.将字体文件拖至project目录下 3.点击Window-TextMeshPro-Font Asset Creator 4.将中文文件(*.txt)拖至Project路径下 5.修改设置如下 6.点击Generate Font Atlas开始生成

    2024年03月22日
    浏览(68)
  • CentOS中安装中文字体

    在CentOS上安装宋体字体的过程可能因为不同版本而有所差异。以下是一种常见的安装宋体字体的方法: 1.下载SimSun.ttf 宋体字体文件并把对应字体的的ttf文件拷到/usr/share/fonts/的目录下如:     /usr/share/fonts/chinese/SimSun.ttf 2.安装宋体字体: cd /usr/share/fonts/chinese/     //进入字

    2024年02月07日
    浏览(60)
  • Unity TextMeshPro使用中文字体

      TextMeshPro是Unity新一代字体,是 Unity 的最终文本解决方案。它是 Unity UI Text 和旧版 Text Mesh 的完美替代方案。功能强大、易于使用、性能高效。目前TextMeshPro对中文的支持也还可以,不过默认不能用,需要自己成生成。    本文就介绍TextMeshPro中文字体文件的生成方法,并

    2024年02月08日
    浏览(62)
  • docker Dockerfile增加中文字体支持

    很多时候在部署应用时候,因docker没有中文字体支持,导致中文乱码问题,需要在构建Docker镜像时候增加中文字体支持 1、下载中文字体ttl文件点击下载 2、将中文字体文件上传到同需要构建的文件放在同一目录 3、编写Dockerfie配置安装中文字体

    2024年02月04日
    浏览(52)
  • Ubuntu下让matplotlib显示中文字体

    参考文章: https://zodiac911.github.io/blog/matplotlib-chinese.html Ubuntu下python的matplotlib库显示中文字体很不方便,本文快速解决这个问题。 Ubuntu的字体目录在 /usr/share/fonts 下,自带的中文字体很烂,先安装一下中文字体库。 终端输入: 你会发现在 /usr/share/fonts/MyFonts 下添加了很多新字

    2024年02月07日
    浏览(73)
  • 树莓派系统汉化教程(汉语+中文字体库+中文输入法pinyin(拼音))

    1.在putty登录树莓派,在命令行输入sudo nano raspi-config,然后回车如下图: 2.选择 5 Localisation Options Configure language and regional settings,并回车 结果如下图: 因为Timezone(时区)/keyboard(键盘)/WLAN country (wifi国家),用官方的烧录器烧录时已经设置好了,不会设置的可以参考上一

    2024年02月07日
    浏览(61)
  • Python的Matplotlib 设置中文字体,字号

      生成需要绘图的数据:  设定曲线的标签、横纵坐标、横纵轴名称、图例。 其中的“size = 12”、“fontsize=12”是指12像素,在mpl中,默认单位是像素,而word中的字号单位是磅。1磅=4/3像素,所以size=12对应的是小五号字(9磅)。    

    2024年02月02日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包