所以我不确定问题是什么,并且已经用尽了我能想到的所有选择。我的目标是 Ubuntu 18.04 LTS 上的 dotnet core 3.0。在 Windows 环境中,它工作正常,但在这个 Ubuntu 环境中,文本并没有呈现它所支持的方式,并且看起来像这样
它应该如何显示
它在 Ubuntu 上的显示方式
我正在使用 Arial 字体,并且安装了 MS TrueType 字体包,我已经尝试过 Ubuntu 原生的字体系列,但还是一样。
所以我不确定问题是什么,并且已经用尽了我能想到的所有选择。我的目标是 Ubuntu 18.04 LTS 上的 dotnet core 3.0。在 Windows 环境中,它工作正常,但在这个 Ubuntu 环境中,文本并没有呈现它所支持的方式,并且看起来像这样
它应该如何显示
它在 Ubuntu 上的显示方式
我正在使用 Arial 字体,并且安装了 MS TrueType 字体包,我已经尝试过 Ubuntu 原生的字体系列,但还是一样。
我在 Fedora 34 上遇到了同样的问题。
我使用这个示例文件重现了这个问题:
using System.Drawing;
Bitmap bmp = new Bitmap(200, 100);
using var gfx = Graphics.FromImage(bmp);
gfx.Clear(Color.Navy);
Font fnt = new Font("Arial", 18);
gfx.DrawString("test123", fnt, Brushes.Yellow, 10, 10);
bmp.Save("test.bmp");
(请注意,上面的代码使用 .NET 5 和 C# 9.0 编译和运行,因为它支持顶级语句,https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/tutorials/top-水平陈述。)
但是,结果如下所示:
我为解决这个问题所做的是运行以下终端命令:
$ dotnet add package system.drawing.common
之后,重新构建并运行程序会生成此图像:
通过此更改,我的.csproj
文件现在如下所示:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="system.drawing.common" Version="5.0.2" />
</ItemGroup>
</Project>
仅供参考;我偶然发现这个问题的原因是当我尝试使用 ScottPlot 时,我提交了这个错误:https ://github.com/ScottPlot/ScottPlot/issues/1079