menu

开发进行时...

crazy coder

Avatar

Linux下Jfreechart中文解决方案

1、介绍一点背景知道

在Java平台中,字体配置信息主要定义于font.properties系列文件中,存放于JRE/lib目录下。
其中定义了五种平台无关的逻辑字体:Serif, SansSerif, Monospaced, Dialog和DialogInput,
每一个JVM的实现,都必须包含这五种字体。另外,还定义了逻辑字体跟实际字体的映射等信息。
为了支持不同的操作系统版本和Locale,font.properties包含了附带不同后缀的多个版本。
从Sun的文档"Adding Fonts to the Java Runtime"[参见参考文献1]中,我们可以得知:
在英文环境下,字体属性由无后缀的font.properties 定义。为了一些操作系统的特殊问题,
字体属性文件的名字可以加入操作系统的版本号作为后缀。例如,Solaris 2.5.1 不支持 TrueType 字体,
所以字体属性文件font.properties.5.5.1 将只包含 F3 字体。
在大多数操作系统中,版本后缀的值由System.getProperty("os.version")来确定。
如果环境是日文、韩文、简体中文或繁体中文,就必须使用相应于特定环境的 font.properties 文件。
这些文件可以通过文件名后边加上相应的国家或者locale后缀识别,格式为font.properties.<locale>。
该<locale>实际上由<language>_<region>_<encoding>三部分构成。
而< language>、<region>和<encoding>分别对应了系统属性(由 System.getProperty方法返回的字符串)"user.language"、"user.region"和 "file.encoding"。
而这个font.properties.<locale>名也可以跟操作系统的版本结合使用。
概括的讲,Java按照以下顺序搜索字体属性文件:
font.properties.<language>_<region>_<encoding>.<osVersion>
font.properties.<language>_<region>_<encoding>
font.properties.<language>_<region>.<osVersion>
font.properties.<language>_<region>
font.properties.<language>_<encoding>.<osVersion>
font.properties.<language>_<encoding>
font.properties.<language>_<osVersion>
font.properties.<language>
font.properties.<encoding>.<osVersion>
font.properties.<encoding>
font.properties.<osVersion>
font.properties

2、安装中文字体(直接拷贝也可)

 apt-get install ttf-arphic-gbsn001p ttf-arphic-uming

3、将/usr/share/fonts/truetype/arphic/gbsn00lp.ttf
拷贝到$JAVA_HOME/jre/lib/fonts下

cp /usr/share/fonts/truetype/arphic/gbsn00lp.ttf $JAVA_HOME/jre/lib/fonts

4、安装ttmkfdir

apt-get install ttmkfdir

5、制作字体文

cd $JAVA_HOME/jre/lib/fonts
ttmkfdir>fonts.dir
cat fonts.scale>fonts.dir
vi fonts.dir


记住gbsn00lp.ttf后面的名称(iso的那个)

6、修改fontconfig.properties

cd ..
rm fontconfig*
vi fontconfig.properties

将以下内容加入
注意:“-Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--0-0-0-0-c-0-iso10646-1”是上面让记下的

# @(#)linux.fontconfig.properties 1.2 03/10/28
#
# Copyright 2003 Sun Microsystems, Inc. All rights reserved.
#

# Version

version=1

# Component Font Mappings


serif.plain.latin-1=-Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--0-0-0-0-c-0-iso10646-1
serif.bold.latin-1=-Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--0-0-0-0-c-0-iso10646-1
serif.italic.latin-1=-Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--0-0-0-0-c-0-iso10646-1
serif.bolditalic.latin-1=-Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--0-0-0-0-c-0-iso10646-1

sansserif.plain.latin-1=-Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--0-0-0-0-c-0-iso10646-1
sansserif.bold.latin-1=-Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--0-0-0-0-c-0-iso10646-1
sansserif.italic.latin-1=-Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--0-0-0-0-c-0-iso10646-1
sansserif.bolditalic.latin-1=-Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--0-0-0-0-c-0-iso10646-1

monospaced.plain.latin-1=-Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--0-0-0-0-c-0-iso10646-1
monospaced.bold.latin-1=-Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--0-0-0-0-c-0-iso10646-1
monospaced.italic.latin-1=-Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--0-0-0-0-c-0-iso10646-1
monospaced.bolditalic.latin-1=-Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--0-0-0-0-c-0-iso10646-1

dialog.plain.latin-1=-Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--0-0-0-0-c-0-iso10646-1
dialog.bold.latin-1=-Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--0-0-0-0-c-0-iso10646-1
dialog.italic.latin-1=-Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--0-0-0-0-c-0-iso10646-1
dialog.bolditalic.latin-1=-Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--0-0-0-0-c-0-iso10646-1

dialoginput.plain.latin-1=-Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--0-0-0-0-c-0-iso10646-1
dialoginput.bold.latin-1=-Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--0-0-0-0-c-0-iso10646-1
dialoginput.italic.latin-1=-Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--0-0-0-0-c-0-iso10646-1
dialoginput.bolditalic.latin-1=-Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--0-0-0-0-c-0-iso10646-1

# Search Sequences

sequence.allfonts=latin-1

# Exclusion Ranges

# Font File Names

7、修改JVM启动参数,因为服务器上不启动X

vi $TOMCAT_HOME/bin/catalina.sh

在开始的地方加上

export CATALINA_OPTS=-Djava.awt.headless=true

重启Tomcat

done!

评论已关闭