Мне нужно распечатать отчет в формате PDF из Java-приложения (Spring boot), который может отображать японские символы, а при смене шрифта - правильно отображать шрифт. Мое приложение, использующее jasperreports-fonts-6.10.0.jar и настроенное в jasperreports_extension.properties, настроено следующим образом:
net.sf.jasperreports.extension.registry.factory.simple.font.families=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
net.sf.jasperreports.extension.registry.factory.fonts=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
# font.xml place
net.sf.jasperreports.extension.simple.font.families.myfont=fonts/fonts.xml
и в файле fonts / fonts.xml настроено следующим образом:
<fontFamily name="Meiryo UI">
<normal>fonts/Meiryo UI.ttf</normal>
<pdfEncoding>Identity-H</pdfEncoding>
<pdfEmbedded>true</pdfEmbedded>
<exportFonts>
</exportFonts>
</fontFamily>
<fontFamily name="Tahoma">
<normal>fonts/tahoma.ttf</normal>
<bold>fonts/tahomabd.ttf</bold>
<pdfEncoding>Identity-H</pdfEncoding>
<pdfEmbedded>true</pdfEmbedded>
<fontFamily name="MS UI Gothic">
<normal>fonts/msgothic.ttc</normal>
<pdfEncoding>Identity-H</pdfEncoding>
<pdfEmbedded>true</pdfEmbedded>
</fontFamily>
<fontFamily name="Times New Roman">
<normal>fonts/times.ttf</normal>
<pdfEncoding>Identity-H</pdfEncoding>
<pdfEmbedded>true</pdfEmbedded>
</fontFamily>
и в коде Java:
myReport.getDefaultStyle().setPdfFontName(newfontReport); // newfontReport is setting in DB
Все вышеперечисленные шрифты существуют в ресурсе веб-приложения. Но в отчете с «Meiryo UI» отображается только текст на японском и правильный текст. Другие шрифты (например: «Times New Roman»), в нем отображаются только текстовые части английского языка, японские текстовые части являются невидимыми.