在用unix类的平台中开发java程序,有时候会出现字体显示方块或者乱码,很有可能是当前unix的平台当中没有安装对应的字体,因此解决方法有两种:
1)更改配置文件
更改$JAVA_HOME/jre/lib/fontconfig.properties文件,其中记载了字体的情况,然后添加指定字体到指定的位置即可
2)添加字体到fallback文件夹
添加字体到$JAVA_HOME/jre/lib/fonts/fallback文件夹下,同时注意更改fonts文件夹和fallback文件夹有可读可执行权限,同时复制的字体要有可读权限
字体从windows系统中拷贝出来:simsunb.ttf simsun.ttc两个文件
如果没有fallback的文件夹则自己手动创建一个
整个操作流程应该是:
cd $JAVA_HOME/jre/lib/fonts
mkdir -p fallback
chmod 0755 fallback
cd fallback
cp $YOUR_PATH/simsunb.ttf $YOUR_PATH/simsun.ttc .
chmod 0644 *
网上很多地方都有说这么做,但是却没有说这么做的依据,直到我找到了这么一句话:
whenever the JVM fails to find a font defined with the configuration files in it's own font directories (happens commonly on linux with the east-asian fonts) - it looks for a folder named $JAVA_HOME\jre\lib\fonts\fallback and check to see if any of the missing fonts are there. Many east-asian java linux users already know about this bug and have configured their systems either by changing the fontconfig files or by creating the fallback folder. Generally the fallback folder solution is preffered, because it doesn't override the original settings if they exist.
即:当没有配置相应字体的时候,会上jre/lib/fonts/fallback目录中去找