При создании отчетов или дашбордов пользователи нередко сталкиваются с вопросами, связанными со шрифтами: какие из них доступны, как они работают и как отображаются на разных устройствах. В сегодняшней статье детально разберем эти и другие вопросы и выясним, от чего зависит список доступных шрифтов в дизайнере отчетов. И сразу ответим: основные факторы – это операционная система и используемый продукт.
Операционная система
Каждая операционная система включает в себя базовый набор шрифтов, однако он может изменяться в зависимости от версии ОС и обновлений. Кроме того, пользователи могут устанавливать дополнительные шрифты вручную или через сторонние приложения. Все шрифты делятся на две основные категории: растровые (bitmap) и векторные (TrueType, OpenType, PostScript).Поскольку наши продукты поддерживают различные технологии, способы отображения шрифтов в них могут отличаться. Важную роль играет версия операционной системы. Например, Reports.NET и Reports.WPF работающие на платформе .NET Framework, поддерживают шрифты TrueType и OpenType в Windows 8/10/11, а в более ранних версиях Windows – только TrueType. Поэтому в дизайнере отчетов отображаются только те шрифты, которые установлены в системе и поддерживаются используемым продуктом.
Эти принципы применимы к Reports.NET, Reports.WPF и Dashboards.WIN. В случае с Web-продуктами (клиент-серверными технологиями) список шрифтов определяется операционной системой серверной части. Если же в проектах используется JS-генератор отчетов, то перечень доступных шрифтов определяется разработчиками.
В этой статье мы рассмотрим примеры подключения шрифтов для JS-генератора отчетов. Сразу оговоримся, что при экспорте отчета в PDF рекомендуется режим встраивания шрифтов. По умолчанию, этот режим включен, и его можно выключать, так как это влияет на размер выходного файла. Однако, для корректного отображения PDF-файла на различных устройствах и в различных операционных системах рекомендуется шрифты встраивать.
Встраиванием шрифта в ресурсы отчета
Очень простой и гарантированный способ доступности шрифта в отчете для различных операционных семейств Windows и macOS. При создании или редактировании отчета файл шрифта добавляется в ресурсы отчета. После этого шрифт можно использовать в отчете или в дашборде. Это надежный способ добавления шрифта в случаях, если необходимо открыть отчет на другом устройстве или в другой операционной системе.Основным недостатком этого способа является то, что размер файла шаблона отчета будет увеличен. Поскольку файл шрифта фактически будет встроен в файл шаблона отчета, то возможно значительное увеличение файла шаблона отчета. Особенно если, например, добавить несколько файлов шрифтов в ресурсы.
Видео о том, как добавлять файлы шрифтов в ресурсы отчета при работе в дизайнере вы найдёте здесь.
Все остальные способы предполагают добавление шрифтов из кода проекта. Основной класс по работе со шрифтами StiFontCollection, который и содержит различные статические методы.
Добавление файлов шрифтов в ресурсы из кода
При разработке проектов, файлы шрифтов могут быть встроены в ресурсы отчета из кода. Недостатки те же, что и при встраивании файла шрифта в ресурсы из режима дизайна. Размер файла отчета при этом может значительно увеличиться.Пример встраивания шрифта в ресурсы отчета из кода.
Добавление файла шрифтов
Добавление файла шрифта осуществляется при помощи метода addFontFile(). Обязательным аргументом для этого метода являет путь к файлу шрифта, остальные же аргументы являются опциональными. Кроме указания пути к файлу шрифта, также можно передать имя шрифта, его стиль, параметр загрузки файла шрифта.Недостаток: Не очень удобно, если следует добавить несколько файлов шрифтов, поскольку фактически будет происходить дублирование строк кода.
Пример добавления шрифта можно посмотреть в наших примерах.
Добавление папки шрифтов
Если необходимо загружать набор файлов шрифтов, то для каждого из них можно воспользоваться методом addFontFile(). Однако, логичнее в этом случае определить папку со шрифтами. Для этого в StiFontCollection присутствует специальный метод setFontsFolder(). Этот метод принимает только один аргумент – путь к папке со шрифтами.Недостаток: Этот метод актуален только для Node.js-проектов. Поскольку из-за политики безопасности браузеры не имеют доступа к чтению файлов системы.
Пример добавления папки со шрифтами.
Добавление конфигурации
Как уже было сказано выше, невозможно использовать метод setFontsFolder() для Web-дизайнера отчетов. Однако, файлы шрифтов можно загружать в дизайнер отчетов как ресурсы сервера при помощи метода addFontFile(). . Вместо дублирования строк кода, если необходимо загружать набор из файлов шрифтов, можно создать конфигурацию шрифтов и передать ее в метод registerFontConfig().Конфигурация должна быть представлена как массив объектов, где каждый объект определяет атрибуты шрифта, такие как путь к файлу (обязательный), имя шрифта, стиль шрифта (дополнительно).
По сути, метод registerFontConfig() использует в своей основе метод addFontFile() и проходит циклом по переданной конфигурации (массиву объектов), загружая таким образом все указанные шрифты.
Недостаток: Необходимо создание конфигурации.
В итоге, единого решения для всех ситуаций не существует, но для каждой есть подходящий метод. При создании систем отчетности и аналитики данных, особенно для различных операционных систем, таких как Windows и macOS, вопрос работы со шрифтами остается важным. Выбирайте оптимальный способ управления шрифтами в зависимости от условий: в одних случаях достаточно встроить шрифт в ресурсы отчета, в других – удобнее настроить конфигурацию. Финальное решение всегда за вами.