linux JAVA图片中文不显示 jrobin

这两天用jrobin画图,发现中文标题一直显示不出来。java应用程序的中文会变成一个一个的“口”字.

产生这个问题的原因。java程序启动的时候会去在$JAVA_HOME/jre/lib/fonts目录下寻找相应的字体来显示。由于 JDK默认没有中文字体,所以我们需要手工的来设置一下,让java应用程序能够找到相应的中文字体。这样就能够解决问题了。

 

网传的办法:

 基本步骤如下:

  1)cd $JAVA_HOME/jre/lib/fonts

  2)mkdir fallback

  3)cp xxx.ttf fallback #xxx.ttf代表你想要的中文字体文件, 并设置文件可读

$sudo cp 字体路径/simhei.ttf      fallback/

$sudo cp 字体路径 /simsun.ttc   fallback/

$sudo chmod -R 644 fallback 

  4)cd fallback

  5)mkfontscale

  6)mkfontdir

这个时候就会在fallback目录下生成fonts.dir 和fonts.scale 文件,再将fonts.scale的内容追加到父目录的fonts.dir (如果不存在直接创建 touch ../fonts.dir ),  

 

$cat fonts.scale >> ../fonts.dir 

 

到这里应该就可以了,如果还不行的话fc-cache刷新一下字体缓存。

  其实,我们可以一条命令解决这个问题。将Linux系统的字体目录作为JDK下面的一个字体目录连接。

  ln -s $FONTS_PATH/FONT_DIR $JAVA_HOME/jre/lib/fonts/fallback

  你在打开你的java应用程序就会看到久违的中文了。

 

在我的环境下:

vim /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/fontconfig.properties.src

(或者你的$JAVA_HOME下面)

 

 

# Version
 
# Uses Fedora Core 6 fonts and file paths.
version=1

# Component Font Mappings

monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni
monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni

# Font File Names

filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/chinese/TrueType/uming.ttf
filename.AR_PL_ZenKai_Uni=/usr/share/fonts/chinese/TrueType/ukai.ttf

 

然后ll /usr/share/fonts/chinese/TrueType/ukai.ttf

两个文件都不存在。

 

然后从网上下载了 uming.ttc和ukai.ttc,分别改后缀 ttc为ttf

 

然后重启tomcat

 

jrobin显示中文成功!!

 

 

总结~~

刚开始网上查找一通,由于各自环境和配置不一样,始终找不到答案。

然后沉下去看配置文件,终于自己发现了问题所在。

 

 

===========================================

另外,之前还遇到一个问题是:

jrobin 在生成图片时Could not initialize class sun.awt.X11GraphicsEnvironment的异常,但在window下却又可显示的。

原因是没是加载java.awt.headless,于是修改${TOMCAT_HOME}/bin/catalina.sh

 

网上找解决方案:

 

一、查到-Djava.io.tmpdir="$CATALINA_TMPDIR"这行,并在这一行下加入:-Djava.awt.headless=true \共有七处的。修改好保存再重启即可

 

 

二、在catalina.sh里加上一句 CATALINA_OPTS=-Djava.awt.headless=true”,问题解决。

 

 

set CATALINA_OPTS = " -Djava.awt.headless=true"

export CATALINA_OPTS

你可能感兴趣的:(linux JAVA图片中文不显示 jrobin)