JasperReport| JasperReport中使用自定义字体(font) Font 'MS 明朝' is not available to the JVM. See the Javadoc for more details.

写在前面:
在网上看到很多关于ireport对JasperReport的操作,关于使用JasperReport Studio的相关资料很少.本文主要是使用JasperReport Studio操作来自定义字体然后在报表中使用.

操作坏境:
Windows10 64位

1.获取字体
Windows10系统C:WindowsFonts文件夹下字体,这里的字体都是TTC格式的合成字体.
由于在JasperReport中使用的字体格式是TTF字体,这里需要将TTC合成字体中提取出需要的TTF字体.TTC和TTF相关介绍和字体的提取见我的另外一篇文章.
 TTF和TTC字体介绍

2.制作字体Jar包
这里以微软的雅黑字体TTC字体来提取TTF字体为例子:
雅黑的所有字体: 通过字体预览可以知道各种格式的雅黑字体.每一个TTC字体都可以展开成多个TTF字体.
msyh.ttc 雅黑
msyhl.ttc 雅黑高亮
msyhbd.ttc 雅黑加粗

msyh.ttc字体分解成了两个TTF的字体: (这个字体功能基本一致,具体可以看字体详情)
msyh001.ttf
msyh002.ttf

选中项目右键->Properties->搜font->Configure Workspace Settings
设置字体,注意在Bold,Italic…选项卡中可以设置字体相应对应的的ttf文件.

配置解释:
PDF Encoding : 配置该字体可以在生成PDF报表时候使用,尤其是在解决PDF中中文不显示问题,但是并不是所有的字体都是支持在PDF中显示中文的.
 

 导出字体成jar包: Yves-雅黑.jar

3.使用字体

直接将导出生成的Yves-雅黑.jar加进工程的classpath既可.
然后在工程知直接使用.

PS:有时候当我们需要自己定义多个字体的的时候,不想像上面一样每一个字体都生成一个Jar包.这里我们使用配置的方式来完成自定义多个字体.
首先用上面的方式生成一个字体的jar包.然后修改jar包中的配置文件.

在配置文件fontsfamilyXXXXX.xml中可以看见其配置,每一个fontFamily 标签下的设置代表一个字体,name属性代表配置字体的显示名称.配置完成后将相应的字体文件按照路径fonts/Yves_雅黑/msyh001.ttf存放既可.
 

<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
    <fontFamily name="Yves-雅黑">
        <normal><![CDATA[fonts/Yves_雅黑/msyh001.ttf]]></normal>
        <pdfEncoding><![CDATA[Identity-H]]></pdfEncoding>
        <pdfEmbedded><![CDATA[true]]></pdfEmbedded>
        <exportFonts/>
    </fontFamily>
</fontFamilies>

两次遇到这个问题 必须的记录下来了,本文转载自https://blog.csdn.net/u011479200/article/details/78607812

谢谢这位博主很好的解决了我的问题

原文地址:https://www.cnblogs.com/zhangyuanbo12358/p/12768461.html