因此,我不确定问题是什么,并且几乎已经想到了每个选项。我的目标是Ubuntu 18.04 LTS上的dotnet core 3.0。在Windows环境中,它可以正常工作,但是在Ubuntu环境中,文本只是无法呈现其支持方式,而看起来像这样
应该如何显示
它在Ubuntu上的显示方式
我正在使用Arial字体,并且安装了MS TrueType字体软件包,我已经尝试了Ubuntu固有的字体系列,并且还是一样。
答案 0 :(得分:1)
我在 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-level-statements。)
然而,结果是这样的:
我为解决这个问题所做的是运行以下终端命令:
$ 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