【发布时间】:2019-01-06 20:06:15
【问题描述】:
我正在尝试通过使用 TTF 字体绘制文本来创建图像。我在 MacOS 上使用 .net core 2.1.500,并且拥有 mono-libgdiplus v5.6(通过 brew 安装)。
TTF 文件是 Neo Sans Medium,这是我的代码(我尝试了不同的 TTF 字体,结果总是相同)
using (var bmp = new Bitmap(1024, 512))
{
Graphics g = Graphics.FromImage(bmp);
g.Clear(Color.White);
var rectf = new RectangleF(0, 40, 1024, 90);
// If I specify a font that it doesn't know, it defaults to Verdana
var defaultFont = new Font("DefaultFont", 55);
Console.WriteLine($"defaultFont: {defaultFont.Name}"); // => defaultFont: Verdana
g.DrawString("Text with default", defaultFont, Brushes.Black, rectf);
var privateFontCollection = new PrivateFontCollection();
privateFontCollection.AddFontFile("/path/to/Neo_Sans_Medium.ttf");
var fontFamilies = privateFontCollection.Families;
var family = fontFamilies[0];
var familyHasRegular = family.IsStyleAvailable(FontStyle.Regular);
Console.WriteLine($"familyHasRegular: {familyHasRegular}"); // => familyHasRegular: true
var textFont = new Font(family, 55);
Console.WriteLine($"textFont: {textFont.Name}"); // => textFont: Neo Sans
var rectText = new RectangleF(0, 140, 1024 - 50 - 50, 1024 - 50 - 10);
g.DrawString("Text with loaded font", textFont, Brushes.Black, rectText);
g.Flush();
g.Save();
bmp.Save("test.png", ImageFormat.Png);
}
由于它打印了textFont: Neo Sans,在我看来它已正确加载(否则,它会默认为Verdana)。
但是,我得到的输出是这个:
我错过了什么吗?
【问题讨论】:
标签: c# fonts .net-core drawing