字体“Arial”不可用于JVM

我正在开发一个使用Jasperreports的Java项目。 我在其他项目中使用相同的技术多次工作,在尝试在Unix环境中打印报告时遇到了同样的问题。

我的项目使用:

  • JBoss 4.2.3.GA
  • Java 1.6
  • Jasperreports 4.7.0

抛出的exception是:

net.sf.jasperreports.engine.util.JRFontNotFoundException: Font 'Arial' is not available to the JVM. See the Javadoc for more details. 

我找到了一个解决这个问题的通用解决方案,并且确实有效:

 sudo apt-get install msttcorefonts 

但是,我想了解Jasper如何使用字体,以及如何搜索Unix环境中安装的字体。 也许更好的问题是:JVM如何处理原生字体? 谁能给我一个关于这个主题的详细解释? 系统字体如何在运行时为JVM提供?

Java要求操作系统提供字体。 工作原理取决于操作系统。

http://en.wikipedia.org/wiki/Arial声明它安装在MS-Windows和MAC OSX上

如果您不想轻松下载jar子的麻烦,那么只需转到软件中心并单击安装Ubuntu限制额外内容即可 。 此软件包不仅会安装MS字体,还会为版权受限的应用程序提供其他支持。

这适用于Ubuntu Systems。

我在Jasper 5.0上也遇到了同样的问题。 我已按照以下步骤操作:

  1. 放置jasper-fonts.jar ;
  2. 在linux中安装缺少的字体;
  3. 重启JBoss服务器。

2015年更新:

将此添加到(或取消注释)/etc/apt/sources.list

 deb http://us.archive.ubuntu.com/ubuntu/ trusty multiverse deb-src http://us.archive.ubuntu.com/ubuntu/ trusty multiverse deb http://us.archive.ubuntu.com/ubuntu/ trusty-updates multiverse deb-src http://us.archive.ubuntu.com/ubuntu/ trusty-updates multiverse 

然后运行:

 sudo apt-get update sudo apt-get install msttcorefonts 

对于OpenSuse

在SO fc-list上validation字体是不可用的 grep“Arial”

安装以下rpm sudo rpm -ivh msttcore-fonts-2.0-3.noarch.rpm

或从页面下载:

http://www.mjmwired.net/resources/mjm-fedora-f11.html#ttf

安装rpm

再次validationfc-list | grep“Arial”

重新启动应用程序服务器