Запретить LocalReport.Render использовать лирику шрифтов Calibri

У меня возникла проблема с сообщением RDLC о пустых символах при создании в формате PDF. Это влияет только на шрифты ligatures, которые я понимаю как буквенные комбинации, такие как:

  • ти
  • фт
  • фи
  • тт

Мои исследования показывают, что эти комбинации символов объединены в один глиф, который я вижу как пустое пространство при распечатке. Примеры вырезков:

В PDF:

enter image description here

enter image description here

Отпечатано:

enter image description here

enter image description here

Поэтому симптомы:

  • На экране отображается PDF файл
  • При печати (физически или с помощью XPS writer) все лигатуры отображаются как пустое пространство

До сих пор я сузил его до определенного шрифта (Calibri) и определенного сервера (Windows Server 2003 R2). PDF имеет встроенный шрифт:

enter image description here

Я решил разрешить это, я был бы доволен:

  • Предотвратить LocalReport.Render из сочетания лигатур
  • Включить Server 2003 для обработки шрифта, как моя машина Windows 7

Я не уверен, как/где я начал бы сравнивать среду шрифтов, поэтому идеи и указатели очень ценятся.

UPDATE:

Благодаря приведенным ниже ответам я проверил charmaps на обеих машинах, но они выглядят одинаково:

Сервер (где проблема лежит):

enter image description here

Локальный (без проблем):

enter image description here

Это также напомнило мне, что я установил шрифт, скопировав файлы шрифтов и установив их напрямую. Обе версии: 5.72, Digitally Signed, TrueType Outlines, однако сервер отображает OpenType Font, тогда как локальные дисплеи OpenType Layout (могут быть просто разными операционными системами).

Интересным моментом является то, что я использую Calibri Regular 48 локально, я вижу лигатуру:

enter image description here

тогда как сервер не использует его:

enter image description here

Кроме того, оба PDF файла печатаются на одном компьютере, но это только PDF файл, созданный на сервере, который обнаруживает проблему, поэтому я думаю, что драйверы принтера не могут быть проблемой?

Ответ 1

Можете ли вы выполнить поиск и заменить и сломать лигатуры, вставив между символами символ joiner (U + 2060) или более старые системы с нулевой шириной без разрыва (U + FEFF)? Это должно заставить его не использовать лигатуры.

Ответ 2

В общем, PDF файлы, созданные ReportViewer и даже из служб Reporting Services не будут вставлять шрифты:

Расширение PDF-рендеринга не встраивает шрифты. Шрифты, которые используются в отчете, должны быть установлены на сервере отчетов и на клиентских компьютерах, используемых для просмотра отчета.

Таким образом, я бы:

  • Убедитесь, что версия шрифта Calibrì на сервере 2003 года присутствует на клиенте (перейдите к %windir%\fonts на двух машинах, нажмите "Калибровка", щелкните правой кнопкой мыши каждый файл ttf, выберите Properties и найдите File version > на вкладке Details).
  • Исправить отличия: удалить более старую версию с сервера 2003 и импортировать новый ttf, который вы найдете в Windows 7, все с помощью инструмента, предоставляемого os (см. рисунок ниже) tool provided by the os
  • Повторите попытку: если вы получите то, что вам нужно, вы сделали.
  • Если вам действительно необходимо распространять полученные отчеты для клиентов, которые могут иметь такую ​​же проблему, вам необходимо установить GhostScript и послепроцесса ваши pdf файлы с чем-то вроде следующего (это приведет к созданию выходного файла PDF/A)
gs -dPDFA -dBATCH -dNOPAUSE -dUseCIEColor -dHaveTransparency=false -sProcessColorModel=DeviceCMYK -sDEVICE=pdfwrite -sPDFACompatibilityPolicy=1 -sOutputFile=output_filename.pdf input_filename.pdf

Несколько примечаний:

  • в прошлом у меня были подобные проблемы с пользовательскими шрифтами, которые исчезают после перезагрузки сервера, поэтому после шага 2 попробуйте перезагрузить сервер, прежде чем продолжить
  • GhostScript - это почтенный бесплатное программное обеспечение, двойное лицензирование под Affero GNU/General Public License (подходит только для проектов с открытым исходным кодом, используя ту же лицензию) и под Artifex Commercial Лицензия для всех остальных. Здесь вы можете найти подробности.
  • В прошлом меня попросили попробовать много более дешевых альтернатив GhostScript и поверьте мне: нет более дешевой альтернативы, которая работает.