「JAVA中的字体配置」

  CREATED BY JENKINSBOT

系统环境:Kali GNU/Linux Rolling
其他环境:JAVA 8

字体配置文件的位置

如果你安装的是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用来表示字体大小,运行时会自动填充这个值。

  1. 等号右边是字体的绝对路径。

使用物理字体

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文件,加入:

sequence.allfonts=
latin-1

此时,所有的字体都会使用latin-1指向的物理字体。但也可以根据不同的条件加载不同的字体:

sequence.allfonts.UTF-8.zh.CN=
chinese-cn-iso10646

这里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

TODO JAVA中的字体配置