Я пытаюсь загрузить закрытый шрифт, используя System.Drawing.Text.PrivateFontCollection. Цель не устанавливать шрифт в системе.
Все примеры, которые я нахожу, выглядят довольно просто. Просто загрузите с помощью PrivateFontCollection, а затем создайте из него шрифт.
Ниже моего простого класса, чтобы проверить его.
Работает только при установке шрифта. В нет, текст печатается в предварительном просмотре диалога с использованием некоторого шрифта по умолчанию. Я проверил, что шрифт правильно загружен. Что мне не хватает? Спасибо за любую помощь.
public partial class Test : Form
{
private PrintDocument printDocument1 = new PrintDocument();
System.Drawing.Text.PrivateFontCollection privateFonts;
private Font _barCodeFont;
public Test()
{
InitializeComponent();
}
private void Test_Load(object sender, EventArgs e)
{
privateFonts = new System.Drawing.Text.PrivateFontCollection();
privateFonts.AddFontFile("Code128.ttf");
}
private void btbTest_Click(object sender, EventArgs e)
{
PrintDocument pd = new PrintDocument();
pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPage);
pd.DocumentName = "Label";
PrintPreviewDialog pp = new PrintPreviewDialog();
pp.Document = pd;
pp.WindowState = FormWindowState.Normal;
pp.ShowDialog();
}
private void pd_PrintPage(object sender, PrintPageEventArgs ev)
{
_barCodeFont = new Font(privateFonts.Families[0], 12, FontStyle.Regular);
ev.Graphics.DrawString("Should Be a bar code", _barCodeFont, Brushes.Black, 0, 0);
ev.HasMorePages = false;
}
}
попробуйте это
private void pd_PrintPage(object sender, PrintPageEventArgs ev)
{
Font _barCodeFont = new Font(privateFonts.Families[0], 12, FontStyle.Regular);
ev.Graphics.DrawString("Should Be a bar code", _barCodeFont, Brushes.Black, 0, 0);
ev.HasMorePages = false;
}
и удалите
частный шрифт _barCodeFont;