Java程序中文字体配置
出自Linux Wiki
在Linux中,JAVA程序的中文默认可能不正常:或是显示为方框,或是不够清晰。这是由于JRE字体配置不正确所导致的,修改JRE的字体配置文件可以解决这个问题。
Ubuntu用户可以考虑参考这篇文章完成配置。
目录 |
配置文件位置
JRE的字体配置文件存放在[1]:
$JAVA_HOME/jre/lib/fontconfig.properties
其中,$JAVA_HOME环境变量表示JRE所在的路径,在安装了JAVA环境的系统中,通常已经设定。如在Debian、Ubuntu中,$JAVA_HOME可能为/usr/lib/jvm/java-6-sun。
如果这个文件不存在,可以从fontconfig.properties.src复制一个:
cp $JAVA_HOME/jre/lib/fontconfig.properties.src $JAVA_HOME/jre/lib/fontconfig.properties
为了避免受当前fontconfig配置文件的影响,备份并移除所有bfc文件:
mkdir $JAVA_HOME/jre/lib/bfcbak/ mv $JAVA_HOME/jre/lib/*.bfc $JAVA_HOME/jre/lib/bfcbak/
准备字体
首先请确定要使用的字体,如Windows中的宋体、黑体,或Linux中文泉驿正黑体。
本文以宋体为例做介绍,这需要你有一个Windows系统。先将Windows中的WINDOWS\Fonts\simsun.ttc文件复制到某个文件夹,并记录其地址,如可将其复制到$JAVA_HOME/jre/lib/fonts。
修改配置文件
打开配置文件,如$JAVA_HOME/jre/lib/fontconfig.properties,并对其进行如下操作:
获取字体定义
到存放有字体文件的文件夹,如$JAVA_HOME/jre/lib/fonts,运行下述命令[2][3]:
# Make font scale mkfontscale # 寻找文件中含有iso10646的行(对应Unicode类的编码) grep 10646 fonts.scale
会看到这样的一些行:
simsun.ttc -misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1 wqy-microhei.ttc -misc-wenquanyi micro hei-medium-r-normal--0-0-0-0-p-0-iso10646-1
请复制相应字体对应的行备用。
加入字体定义
在version=1后面加入[4](后半部分可按具体使用的字体更改)
allfonts.chinese-arphic1=-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1
如果原来文件中还有设置allfonts.chinese-arphic1的,就把它们注释掉。
指明字体路径
如果已经把字体复制到$JAVA_HOME/jre/lib/fonts,可以略过此步。否则须在配置文件中加上字体文件的完整路径,以宋体为例:
filename.-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1=simsun.ttc的完整路径
修改字体搜索序列
在配置文件中查找sequence.allfonts,如果其后的sequence开头的行中有chinese-arphics1,可以略过此步,否则在其后面加入一行:
sequence.fallback=chinese-arphic1
解决字显示不清晰的问题
有时看到英文显示有锯齿,有时看到中文字边缘不清,这可能都与字体反锯齿的设置不当有关。可以在/etc/profile或~/.bashrc末尾加入:[5]
export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=lcd'
其中的lcd也可改为gasp,但效果较好的常是lcd。