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

3 篇文章 0 订阅


在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'

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值