Отчет Jasper, загрузка нескольких расширений шрифтов

я хочу, чтобы мой Jasper Report динамически поддерживал что-то вроде 5 или 6 языков.

я хочу использовать шрифт google noto-sans (www.google.com/get/noto) и google noto, иметь по одному файлу для каждого языка (рядом с основным файлом шрифта)

я должен создать пару расширений шрифта и добавить их в свой путь к классам?

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


person Shay_t    schedule 25.02.2016    source источник
comment
Неясно, нравится ли вам другой шрифт для разных экспортов с использованием одного и того же jrxml (тот же отчет, только с одним определенным шрифтом)?   -  person Petter Friberg    schedule 25.02.2016
comment
В jrxml вы определяете 1 имя шрифта, и относительно этого у вас может быть только 1 расширение шрифта (вы можете попытаться обойти проблему, не позволяя pdf находить ваш шрифт и динамически устанавливать значение по умолчанию), но мне кажется, что вам нужно 1 шрифт, который поддерживает все ваши языки или разные отчеты с разными шрифтами (разными языками) и несколькими шрифтами в расширениях шрифтов   -  person Petter Friberg    schedule 25.02.2016
comment
Итак, как я могу решить on-sans (они предоставляют один основной файл и другой файл шрифта для любого другого языка)   -  person Shay_t    schedule 25.02.2016
comment
Используйте единственный основной файл!, создайте расширение шрифта, установите правильное имя шрифта и запустите...   -  person Petter Friberg    schedule 25.02.2016
comment
я думаю, что в itext (не очень хорошо знаком с API, просто погуглил) возможно иметь запасной вариант шрифта, просто представив, можно ли определить цепочку шрифтов.   -  person Shay_t    schedule 25.02.2016
comment
Вам не нужно ничего делать в itext.... (пример itext, который вы видели, предназначен только для тестирования... отладки). Вы не можете предоставить расширение шрифта и установить шрифт по умолчанию для использования в отчете jasper (динамически меняйте шрифт по умолчанию).   -  person Petter Friberg    schedule 25.02.2016
comment
Я ответил на этот вопрос, скажите мне, если у вас есть какие-то сомнения.   -  person Petter Friberg    schedule 27.02.2016


Ответы (2)


В отчете о яшме у вас есть

<font fontName="google_noto"/>

В связи с этим шрифтом у вас может быть только 1 расширение шрифта с family name google_noto (содержащее шрифт для обычного, полужирного, курсивного и т. д.).

Вы не можете динамически переключать это расширение шрифта, решение будет таким:

  1. Используйте шрифт, который содержит все соответствующие языки.

  2. Создайте другой jrxml (отчеты) для другого языка с разными fontName и создайте расширение шрифта со всеми разными family names:

    //report in English
    <font fontName="google_noto_en"/>
    //report in Italian        
    <font fontName="google_noto_it"/>
    

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

net.sf.jasperreports.awt.ignore.missing.font="true"
net.sf.jasperreports.default.font.name="google_en"

Этот вопрос касается настройки свойств JRProperties устарели, рекомендуемый способ замены

Тем не менее, я бы настоятельно рекомендовал и выбрал: «1. Используйте шрифт, который содержит все относительные языки».

person Petter Friberg    schedule 25.02.2016
comment
я согласен, использование одного и того же шрифта — лучший подход, так как я не хочу управлять разными копиями своего отчета. - person Shay_t; 28.02.2016
comment
также я хотел бы сделать это в одном отчете, но я думаю, что сейчас мне придется использовать один шрифт - person Shay_t; 28.02.2016

есть способ сделать это...

вы можете поместить несколько полей текстового поля и в отдельном текстовом поле использовать одно имя шрифта, которое вы хотите отобразить. Преимущество было бы в том, что если какой-либо шрифт не отображается в google_noto, тогда в этом текстовом поле ничего не будет отображаться (пусто), а если этот шрифт отображается в google_noto1, тогда это текстовое поле будет отображать это текст.

Я надеюсь, что это работает нормально (Y)

person Nitin Gaur    schedule 21.01.2017