MigraDoc / PdfSharpCore — запрашивает шрифт «Новый»

#.net-core #pdfsharp #migradoc

#.net-core #pdfsharp #migradoc

Вопрос:

 table.Rows[0].Cells[4].AddParagraph("0123456789ABCDEFGHIJKLMNOPQRSTUVWYXZ")
   .Format.Font.ApplyFont(new Font("barcode", 36));
...

var documentRenderer = new DocumentRenderer(_document);
documentRenderer.PrepareDocument(); //<--- crash here
  

Он поступает через мой пользовательский распознаватель шрифтов ResolveTypeface("barcode", false, false) и GetFont("barcode.ttf") , как и ожидалось.

Затем он завершается ResolveTypeface("New", false, false) . Я не знаю, откуда берется «Новый».

Если я изменю новый шрифт («barcode», 36) на новый шрифт («Arial», 36), все хорошо, и он никогда не запрашивает шрифт «New». Я попробовал другой шрифт, на всякий случай, если там что-то перепуталось. Я просмотрел исходный код MigraDoc / PdfSharpCore, но не вижу ссылки на жестко закодированную «новую» строку.

Ответ №1:

Мое лучшее предположение заключается в том, что преобразование MigraDoc в PDF ищет семейство шрифтов из шрифта, который он использовал для разрешения, а затем использует это семейство шрифтов (не исходное) при создании PDF.

Это означает 2 вещи:

  • При его разрешении лучше использовать точное имя семейства шрифтов, которое есть в шрифте.
  • Ваш шрифт должен быть правильным / не поврежден. Где-то он берет «Новый» из шрифта, который я использовал.