Linux下解决Java程序中文字体乱码问题

时间:2021-10-07 06:32:06


在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,运行下述命令:

?
12345678 #
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末尾加入:

?
12 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,运行下述命令:

?
12345678 #
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末尾加入:

?
12 export
_JAVA_OPTIONS=
'-Dawt.useSystemAAFontSettings=lcd'
#export
_JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=gasp'

其中这两行是两种不同的渲染方法,可以根据爱好选择其中一种.