Поддержка шрифтов#
Использование шрифтов движками шаблонизации#
Движок FreeMarker#
Движок FreeMarker не использует шрифтов.
Движок XDocReport#
Движок XDocReport при генерации документа использует шрифты шаблона или доступные системные шрифты.
Движок JasperReports#
Движок JasperReports имеет возможность при генерации документа поставлять шрифты через расширение библиотеки JasperReports, подключая их в момент генерации. Подробнее читайте в документации продукта JasperReports.
Компонент DCGL подключает расширения:
jasperreports-font, которое содержит шрифты семейства DejaVu:DejaVu Sans;
DejaVu Sans Mono;
DejaVu Serif;
jasperreports-fonts-liberation, которое содержит шрифты семейства Liberation:Liberation Sans;
Liberation Serif;
Liberation Mono.
Важно
Шрифты семейства Liberation метрически эквивалентны коммерческим шрифтам компании Monotype: Arial, Times New Roman и Courier New. При использовании в шаблонах шрифтов Arial, Times New Roman и Courier New, документы будут генерироваться со шрифтами Liberation Sans, Liberation Serif и Liberation Mono соответственно. При использовании в шаблонах специальных символов, например символа валюты, из шрифтов компании Monotype, убедитесь в наличии данного специального символа в шрифтах семейства Liberation.
В шаблоне JasperReports рекомендуется явно указывать шрифт. Если шрифт не задан, используется шрифт по умолчанию — Liberation Sans из пакета шрифтов Liberation.
Важно
Шрифт по умолчанию не является контрактом и может измениться в других версиях компонента.
При использовании в шаблоне JasperReports шрифтов, которые не поставляются с DCGL, необходимо их наличие в ОС, в которой развернут DCGL.
Если в шаблоне указан шрифт, который отсутствует в classpath при генерации, или он не был указан как используемый дополнительный шрифт, возвращается ошибка об его отсутствии — net.sf.jasperreports.engine.util.JRFontNotFoundException.
Добавление шрифтов в ОС с использованием утилиты fontconfig#
Важно
В разделе не рассматриваются вопросы скачивания данных шрифтов из первичных источников и загрузки файлов со шрифтами на сервер Linux.
Уилита fontconfig служит в Linux для управления шрифтами. Дистрибутив/базовый образ Linux должен содержать fontconfig по умолчанию. Если утилиты нет, установите пакет fontconfig.
Установка шрифтов производится в подпапку в домашней директории для текущего пользователя.
Шрифты по умолчанию зависят от дистрибутива/базового образа Linux.
Для установки шрифтов выполните следующие шаги:
Проверьте наличие папки
~/.fonts(например, можно перейти в эту папку командойcd ~/.fonts).Если папка
~/.fontsотсутствует, создайте ее командойmkdir ~/.fonts.Скопируйте в эту папку файлы шрифтов (
cp –rvf ~/.downloaded_fonts— заменить на папку, в которую были предварительно скачаны шрифты).Выполните команду
fc-cache ~/.fonts.Убедитесь, что шрифты установились в систему, используя команду
fc-listдля просмотра доступных шрифтов.Проверьте, что необходимые шрифты сконфигурированы в
fonts.conf(для поиска конфигурации выполнитеfind / -name "fonts.conf").
Подключение дополнительных шрифтов посредством DCGL (без утилиты fontconfig)#
Компонент DCGL для шаблонов движков XDocReport и JasperReports позволяет использовать дополнительные шрифты при генерации документа.
Поддерживаются шрифты типов Type 1 и TrueType.
Для каждого семейства шрифтов в подсемейство можно добавить шесть стилей в соответствии со спецификацией OpenType (см. описание кода 1 в приведенной по ссылке таблице):
Regular(обычный);Bold(жирный);Italic(курсив);Oblique(наклонный);Bold Italic(жирный курсив);Bold Oblique(жирный наклонный).
Для движка XDocReport для шрифтов любых подтипов (Black, Semibold, Thin, иные) могут быть добавлены все шесть перечисленных выше стилей.
Для движка JasperReports для шрифтов любых подтипов (Black, Semibold, Thin, Display, иные) могут быть добавлены четыре стиля: Regular, Bold, Italic/Oblique (при наличии обоих стилей предпочтение будет отдано стилю Italic), Bold Italic/Bold Oblique (при наличии обоих стилей предпочтение будет отдано стилю Bold Italic).
Настройка параметров#
Для использования дополнительных шрифтов при установке требуется выполнить следующие действия:
Выставить для параметра
dcgn.customFonts.enabledзначениеtrue.Задать путь до директории с дополнительными шрифтами параметром
dcgn.customFonts.path. В директории, указанной в параметреdcgn.customFonts.path, могут присутствовать файлы шрифтов, ZIP-архивы, содержащие файлы шрифтов, а также директории, в которых содержатся файлы шрифтов и ZIP-архивы, содержащие файлы шрифтов.При необходимости настроить подключаемые шрифты (задать псевдонимы, задать пути до файлов шрифтов):
выставить для параметра
dcgn.customFonts.fineTune.enabledзначениеtrue;выставить для параметра
dcgn.customFonts.fineTune.fontFamiliesзначение список псевдонимов шрифтов, разделенных точкой с запятой:(<псевдоним_1;...;псевдоним_N>);выставить для параметра
dcgn.customFonts.fineTune.fontFilesPathsзначение список сопоставлений шрифтов к стилю для каждого псевдонима, разделенных точкой с запятой:(<сопоставление1>;...;<сопоставлениеN>).
Указанные параметры описаны в разделе Конфигурирование.
Требования к файлам#
Могут использоваться файлы шрифтов типов
Type 1иTrueType, а также наборы шрифтов, сжатых в один ZIP-архив (не более 20 файлов на один архив).Имена файлов могут содержать любые латинские символы, а также дефис.
Файлы могут быть закодированы в Base64. В таком случае они должны именоваться по следующей маске:
{имя-файла}.{расширение}.base64;Значение суммы
Размер закодированного файла + размер {имя-файла} + размер {имя-файла}.{расширение}должно быть таким, чтобы результирующийConfigMap, содержащий данные о шрифте, не превышал 1 Мбайт.
Требования к сопоставлению стилей шрифтов для псевдонимов#
Каждому псевдониму сопоставляется шесть стилей, разделенных двоеточием, в следующем порядке:
обычный:курсив:наклонный:жирный:жирный курсив:жирный наклонный. При отсутствии шрифта для конкретного стиля соответствующую позицию оставляют пустой.Сопоставления требуется указывать в порядке определения псевдонимов и разделять точкой с запятой.
Каждому стилю следует задать путь до файла шрифта.
Путь должен начинаться с директории, названной так же, как и исходный файл шрифта, но в нижнем регистре.
Если файл шрифта находится в архиве, имя файла требуется отделять от пути до архива вертикальной чертой (
|).
Пример
Пусть в директорию шрифтов добавлен calibri.zip — ZIP-архив, содержащий файлы шрифтов: Calibri.ttf (обычный), Calibri-Italic.ttf (курсивный), Calibri-Bold.ttf (жирный), Calibri-Bold-Italic.ttf (жирный курсив).
Тогда сопоставление стилей будет выглядеть следующим образом:
calibri/calibri.zip|Calibri.ttf:calibri-italic/calibri.zip|Calibri-Italic.ttf::calibri-bold/Calibri-Bold.ttf:calibri-bold-italic/Calibri-Bold-Italic.ttf::