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

Операционная система

Каждая операционная система включает в себя базовый набор шрифтов, однако он может изменяться в зависимости от версии ОС и обновлений. Кроме того, пользователи могут устанавливать дополнительные шрифты вручную или через сторонние приложения. Все шрифты делятся на две основные категории: растровые (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, вопрос работы со шрифтами остается важным. Выбирайте оптимальный способ управления шрифтами в зависимости от условий: в одних случаях достаточно встроить шрифт в ресурсы отчета, в других – удобнее настроить конфигурацию. Финальное решение всегда за вами.
Используя этот сайт, вы соглашаетесь на использование файлов Cookie для аналитики и персонализированного контента. Файлы Cookie хранят полезную информацию на вашем компьютере, чтобы помочь нам повысить эффективность и удобство использования. Для получения дополнительной информации, пожалуйста, прочтите Конфиденциальность и Использование Cookie.