4

所以我不确定问题是什么,并且已经用尽了我能想到的所有选择。我的目标是 Ubuntu 18.04 LTS 上的 dotnet core 3.0。在 Windows 环境中,它工作正常,但在这个 Ubuntu 环境中,文本并没有呈现它所支持的方式,并且看起来像这样

它应该如何显示

它应该如何显示

它在 Ubuntu 上的显示方式

它在 Ubuntu 上的显示方式

我正在使用 Arial 字体,并且安装了 MS TrueType 字体包,我已经尝试过 Ubuntu 原生的字体系列,但还是一样。

4

1 回答 1

3

我在 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

于 2021-05-27T20:52:58.347 回答