Поддержка шрифтов#

При создании шаблона необходимо учесть наличие используемых в нем шрифтов в ОС, в которой будет создаваться документ. В противном случае при генерации документа может возникать ошибка или не отображаться текст в сгенерированном документе.

Движок шаблона JasperReports имеет дополнительную возможность: при формировании печатной формы не устанавливать шрифты в ОС, а поставлять их как расширение библиотеки, которое подключает шрифты в момент генерации. DCGN подключает расширения:

  • jasperreports-font, которое содержит шрифты семейства DejaVu:

    • DejaVu Sans.

    • DejaVu Sans Mono.

    • DejaVu Serif.

  • jasperreports-fonts-liberation, которое содержит шрифты семейства Liberation:

    • Liberation Sans.

    • Liberation Serif.

    • Liberation Mono.

Важно!

Шрифты Liberation — общее название трех семейств шрифтов TrueType: Liberation Sans, Liberation Serif и Liberation Mono. Они метрически эквивалентны коммерческим шрифтам компании Monotype: Arial, Times New Roman и Courier New. При указании шрифтов правообладателя Monotype: Arial, Times New Roman и Courier New в разметке шаблонов движка JasperReports, документы будут генерироваться со шрифтами Liberation Sans, Liberation Serif и Liberation Mono соответственно. При использовании специальных символов, например символа валюты, в шрифтах Arial, Times New Roman и Courier New в разметке шаблонов движка JasperReports, убедитесь в наличие данного специального символа в шрифтах Liberation Sans, Liberation Serif и Liberation Mono.

В DCGN также существует функционал настройки дополнительных шрифтов при генерации документа.

При верстке шаблонов рекомендуется явно указывать необходимый шрифт. Если шрифт шаблона не был явно задан, в DCGN для JasperReports поддерживается функциональность шрифтов по умолчанию — для генерации документа будет использован шрифт Arial из пакета шрифтов Liberation. Если же в шаблоне указан шрифт, который отсутствует в classpath при генерации, или он не был добавлен с помощью функционала настройки дополнительных шрифтов, будет выдана ошибка об его отсутствии — net.sf.jasperreports.engine.util.JRFontNotFoundException.

ВАЖНО!

Шрифт по умолчанию не является контрактом и может измениться в других версиях компонента.

При генерации документа, на движке FreeMarker, в выходном формате TXT или HTML, шрифты в момент генерации документа не требуются

Для XDocReport при генерации документа в формате PDF необходимо выполнение одного из условий:

  • шрифт загружен на сервер в папку шрифтов ОС, где происходит генерация;

  • шрифт добавлен с помощью функционала настройки дополнительных шрифтов.

Если требуется использовать дополнительные шрифты, то их нужно добавить:

  • Если подключена Библиотека генерации документов Docgen-lib, то установка дополнительных шрифтов производится самостоятельно.

  • Если подключен Docgen service, то установка шрифтов производится по запросу к администраторам сервиса. подробнее читайте в Конфигурация подключения дополнительных шрифтов.

Рекомендации по использованию шрифтов в окружении Platform V Frontend Std, Platform V Frontend High и Load Platform V Backend

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

Добавление шрифтов на машину/контейнер при использовании библиотеки генерации#

В данном документе не рассматриваются вопросы скачивания данных шрифтов из первичных источников и загрузки файлов со шрифтами на сервер Linux. Установка шрифтов производится в подпапку в домашней директории для текущего пользователя. Шрифты по умолчанию зависят от дистрибутива/базового образа Linux.

Управление шрифтами в Linux осуществляется утилитой fontconfig, по умолчанию дистрибутив/базовый образ Linux должен содержать ее. Если нет, то необходимо установить пакет fontconfig.

Пример установки пакетным менеджером:

  • apt-get: apt-get install fontconfig;

  • yum: yum install fontconfig.

  1. Проверить наличие папки ~/.fonts (например, можно перейти в эту папку командой cd ~/.fonts).

  2. Если папка ~/.fonts отсутствует, создать ее командой mkdir ~/.fonts.

  3. Скопировать в эту папку файлы шрифтов (cp –rvf ~/.fonts — заменить на папку, в которую были предварительно скачаны шрифты).

  4. Выполнить команду fc-cache ~/.fonts.

  5. Убедиться, что шрифты установлены в системе, используя fc-list для просмотра доступных шрифтов.

  6. Проверить, что необходимые шрифты сконфигурированы в fonts.conf (для поиска find / -name "fonts.conf").

Для движка JasperReports есть возможность подключить шрифты как расширение библиотеки, подробнее читайте в Документации.

Настройка дополнительных шрифтов без использования утилиты fontconfig и расширения библиотеки JasperReports при использовании библиотеки генерации#

Для подключения дополнительных шрифтов необходимо задать значения следующих параметров:

  • dcgn.customFonts.enabled=true;

  • dcgn.customFonts.path=<путь до директории с дополнительными шрифтами>.

В директории, указанной в параметре dcgn.customFonts.path, могут присутствовать файлы шрифтов, zip-архивы, содержащие файлы шрифтов, а также директории, в которых содержатся файлы шрифтов и ZIP-архивы, содержащие файлы шрифтов.

Чтобы настроить названия семейств шрифтов и используемых файлов шрифтов, задайте следующие значения параметров:

  • dcgn.customFonts.fineTune.enabled=true;

  • dcgn.customFonts.fineTune.fontFamilies=<список подключаемых семейств шрифтов, используемых в приложении, разделенных точкой с запятой>;

  • dcgn.customFonts.fineTune.fontFilesPaths=<список файлов подключаемых шрифтов, формат параметра аналогичен параметру dcgn.docgen-service.dcgn.customFonts.fineTune.fontFilesPaths. Подробнее о параметре читайте в Конфигурация подключения дополнительных шрифтов.