Michi -GPSログ整形アプリを.NETへ移行する。 5

scottPlotやNPlotでフォントが化けるのは、結局System.Drawing.Commonが.NET6 unixではサポートされていないから?らしいですね…ということはImageSharpでゴリゴリとグラフを描画するしかないのかなぁ。

という訳で、とりあえずImageSharpで文字が描画できるかだけを確かめた。

using (SixLabors.ImageSharp.Image img = new Image<Rgba32>(500, 100))
 {
  //var font = SixLabors.Fonts.SystemFonts.CreateFont("Arial", 39, SixLabors.Fonts.FontStyle.Regular);
  var font = SixLabors.Fonts.SystemFonts.CreateFont("Ubuntu Mono", 39, SixLabors.Fonts.FontStyle.Regular);

  string text = "Hello World ハローワールド";

  img.Mutate(ctx => ctx
    .Fill(SixLabors.ImageSharp.Color.Gray)
    .DrawText(text, font, SixLabors.ImageSharp.Color.Black, new SixLabors.ImageSharp.PointF(0, 0))
  );

  img.Save("/path/test.png");
}
こんな感じに出力できた。

日本語が出ないのはフォントの指定方法が悪いせいなのか調べてません。とりあえず英語が出れば問題ないので、ImageSharpで(非常に)簡単なグラフ ライブラリを作ってみます。