在Linux中,有时Java程序的中文字体显示可能会显示为乱码或者方框,有时还会出现虽然没有乱码但文字显示的不清晰.这通常是由于Jre中字体相关设置不正确所导致的,修改Jre的字体配置文件可以解决这些问题.
解决Java字体显示为乱码或方块
找到配置文件
通常,Jre的字体配置文件存放在
1
|
$JAVA_HOME
/jre/lib/fontconfig
.properties
|
其中,$JAVA_HOME环境变量表示Jre所在的路径,在安装了Java环境的系统中,通常已经设定。如/usr/lib/jvm/java-7-openjdk
如果不存在这个文件,可以检查看看有没有fontconfig.properties.src 并将这个文件复制一份命名为fontconfig.properties
添加字体
准备想要在Java程序中使用的字体(需要带中文字符),将字体文件或字体文件的符号链接复制到$JAVA_HOME/jre/lib/fonts
修改配置文件
到存放有字体文件或字体符号链接的文件夹,如$JAVA_HOME/jre/lib/fonts,运行下述命令:
1
2
3
4
5
6
7
8
|
# Make font scale
mkfontscale
# 寻找文件中含有iso10646的行
cat
fonts.scale |
grep
iso10646
# 会看到如下面这样的输出
wqy-microhei.ttc -misc-wenquanyi micro hei-medium-r-normal--0-0-0-0-p-0-iso10646-1
|
编辑$JAVA_HOME/jre/lib/fontconfig.properties文件,在version=1后面加入:
1
|
allfonts.chinese-arphic1=-misc-wenquanyi micro hei-medium-r-normal--0-0-0-0-p-0-iso10646-1
|
注意allfonts.chinese-arphic1=后面加的是前面输出的字体名后面的部分.如果原来文件中还有allfonts.chinese-arphic1开头的行,就把它们注释掉.
在配置文件中查找sequence.allfonts,如果其后的sequence开头的行中有chinese-arphics1,可以略过此步,否则在其后面加入一行:
1
|
sequence.fallback=chinese-arphic1
|
解决字显示不清晰
有时运行的Java程序显示模糊或者字体边缘锯齿严重,可以在/etc/profile或~/.bashrc末尾加入:
1
2
|
export
_JAVA_OPTIONS=
'-Dawt.useSystemAAFontSettings=lcd'
#export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=gasp'
|
其中这两行是两种不同的渲染方法,可以根据爱好选择其中一种.
在Linux中,有时Java程序的中文字体显示可能会显示为乱码或者方框,有时还会出现虽然没有乱码但文字显示的不清晰.这通常是由于Jre中字体相关设置不正确所导致的,修改Jre的字体配置文件可以解决这些问题.
解决Java字体显示为乱码或方块
找到配置文件
通常,Jre的字体配置文件存放在
1
|
$JAVA_HOME
/jre/lib/fontconfig
.properties
|
其中,$JAVA_HOME环境变量表示Jre所在的路径,在安装了Java环境的系统中,通常已经设定。如/usr/lib/jvm/java-7-openjdk
如果不存在这个文件,可以检查看看有没有fontconfig.properties.src 并将这个文件复制一份命名为fontconfig.properties
添加字体
准备想要在Java程序中使用的字体(需要带中文字符),将字体文件或字体文件的符号链接复制到$JAVA_HOME/jre/lib/fonts
修改配置文件
到存放有字体文件或字体符号链接的文件夹,如$JAVA_HOME/jre/lib/fonts,运行下述命令:
1
2
3
4
5
6
7
8
|
# Make font scale
mkfontscale
# 寻找文件中含有iso10646的行
cat
fonts.scale |
grep
iso10646
# 会看到如下面这样的输出
wqy-microhei.ttc -misc-wenquanyi micro hei-medium-r-normal--0-0-0-0-p-0-iso10646-1
|
编辑$JAVA_HOME/jre/lib/fontconfig.properties文件,在version=1后面加入:
1
|
allfonts.chinese-arphic1=-misc-wenquanyi micro hei-medium-r-normal--0-0-0-0-p-0-iso10646-1
|
注意allfonts.chinese-arphic1=后面加的是前面输出的字体名后面的部分.如果原来文件中还有allfonts.chinese-arphic1开头的行,就把它们注释掉.
在配置文件中查找sequence.allfonts,如果其后的sequence开头的行中有chinese-arphics1,可以略过此步,否则在其后面加入一行:
1
|
sequence.fallback=chinese-arphic1
|
解决字显示不清晰
有时运行的Java程序显示模糊或者字体边缘锯齿严重,可以在/etc/profile或~/.bashrc末尾加入:
1
2
|
export
_JAVA_OPTIONS=
'-Dawt.useSystemAAFontSettings=lcd'
#export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=gasp'
|
其中这两行是两种不同的渲染方法,可以根据爱好选择其中一种.