TODO JAVA中的字体配置
系统环境:Debian
其他环境:JAVA 8
字体配置文件的位置
多个 JDK 版本的 fontconfig.properties 配置文件:
1)JDK 8u73/jre/lib/fontconfig.properties.src
2)JDK 8u73/jre/lib/fontconfig.SuSE.10.properties.src
如果你安装的是JRE,那配置文件的位置为:/path/to/jre/lib/fontconfig.properties
如果你使用的是JDK,那配置文件的路径为:/path/to/JDK/jre/lib/fontconfig.properties
有关配置文件的命名方法要注意的问题
fontconfig.properties配置文件的命名存在一定的问题,有些版本的JDK中fontconfig.properties文件无法正常工作,有关该文件的命名参考Font Configuration中的“Loading Font Configuration Files”部分的说明。但是为了方便描述,这里统一称配置文件为fontconfig.properties。
生成物理字体的XLFD描述
进入系统字体目录(/usr/share/fonts,或者其他的字体目录)。
执行mkfontscale命令,之后会在字体目录中生成fonts.scale文件,即X逻辑字体描述文件。
声明物理字体
修改 fontconfig.properties 文件,加入:
filename.-microsoft-microsoft_yahei-medium-r-normal--*-%d-*-*-p-*-gb18030.2000-0=/usr/share/fonts/yahei/msyh.ttf 参数说明 1. filename:为固定的,后面跟一个点(.); 2. 紧接着是字体的物理名:-microsoft-microsoft_yahei-medium-r-normal--*-%d-*-*-p-*-gb18030.2000-0 字体的物理名在fonts.scale文件中是这样表示的:-microsoft-microsoft yahei-medium-r-normal--0-0-0-0-p-0-gb18030.2000-0,但差别就是: * 需要用`_‘替换名字中的空格; * 并且把--0-0-0-0-p-0-改为--*-%d-*-*-p-*-,其中%d用来表示字体大小,运行时会自动填充这个值。 3. 等号右边是字体的绝对路径。
使用物理字体
allfonts.latin-1=-microsoft-microsoft yahei-medium-r-normal–*-%d-*-*-p-*-gb18030.2000-0
在这里的-microsoft-microsoft yahei-medium-r-normal–*-%d-*-*-p-*-gb18030.2000-0即是声明的物理字体,但是空格不需要使用下划线替换。
配置字体搜索顺序
这也是最重要的部分,修改fontconfig.properties文件,加入:
此时,所有的字体都会使用latin-1指向的物理字体。但也可以根据不同的条件加载不同的字体:
这里chinese-cn-iso10646并未定义,以同样的方式定义一下即可。
参考文献
Java程序中文字体配置: http://linux-wiki.cn/wiki/zh-hans/Java%E7%A8%8B%E5%BA%8F%E4%B8%AD%E6%96%87%E5%AD%97%E4%BD%93%E9%85%8D%E7%BD%AE
Java 5/6 中字体的设置、映射原理:http://www.cnblogs.com/super119/archive/2011/01/03/1924534.html
Font Configuration Files: https://docs.oracle.com/javase/8/docs/technotes/guides/intl/fontconfig.html