我有一个使用自定义字体绘制文本的功能,其中有一些。我需要将一个字符串名称传递给该函数,并使用与该名称匹配的Family进行绘制。而且我不想盲目地遍历集合并手动查找给定的名称。是否可能,或者迭代是唯一的方法?
System.Drawing.Text.PrivateFontCollection CustomFonts = new System.Drawing.Text.PrivateFontCollection();
// [...]
void LoadCustomFont(Stream font)
{
byte[] fontdata = new byte[font.Length];
font.Read(fontdata, 0, (int)font.Length);
font.Close();
unsafe
{
fixed (byte* pFontData = fontdata)
{
CustomFonts.AddMemoryFont((System.IntPtr)pFontData, fontdata.Length);
}
}
}
using (var font0 = typeof(Program).Assembly.GetManifestResourceStream("font0.ttf"))
LoadCustomFont(font0);
using (var font1 = typeof(Program).Assembly.GetManifestResourceStream("font1.ttf"))
LoadCustomFont(font1);
// [...]
// here, is Families[i] the only possible approach?
var font = new Font(CustomFonts.Families[0], 8, FontStyle.Regular, GraphicsUnit.Pixel);