Java:如何判断我的系统当前使用的是哪个fontconfig文件?

时间:2010-04-06 18:53:04

标签: java centos fontconfig

我正在尝试在第三方Java应用程序中调试与字体相关的问题。具体来说,ChemAxon JChem。我一直在咨询这个指南: http://java.sun.com/j2se/1.5.0/docs/guide/intl/fontconfig.html

部分问题是,我不确定我的Java设置当前引用了哪个fontconfig.properties.src文件。

以下是我的fontconfig文件:

$ ls fontconfig*src 
fontconfig.Fedora.properties.src  fontconfig.properties.src   
fontconfig.SuSE.properties.src  fontconfig.Ubuntu.properties.src

我的系统是CentOS系统,所以我想它可能要么放弃默认的fontconfig.properties.src文件或fontconfig.Fedora.properties.src文件,因为CentOS和Fedora都来自Red Hat。

那么,我能否明确告诉我的系统使用哪个fontconfig文件?

谢谢,

-John David

5 个答案:

答案 0 :(得分:2)

您可以使用上述选项,但从JDK 7和8开始,JDK存在问题,不会为任何Linux操作系统选择fontconfig文件。它默认为操作系统中存在的libfontconfig。

以下是缺陷网址http://bugs.java.com/view_bug.do?bug_id=7175487

答案 1 :(得分:1)

它永远不会查看X.properties.src文件 - 那些基本上是告诉你匹配的X.bfc的内容是什么。这描述了检查文件的确切顺序:

http://docs.oracle.com/javase/1.5.0/docs/guide/intl/fontconfig.html#loading

答案 2 :(得分:1)

只需使用 strace 检查哪些文件已成功打开:

$ strace -f -e open java ... 2>&1 | grep fontconfig
[pid  3321] open("/usr/java/jdk1.7.0_55/jre/lib/fontconfig.RedHat.6.bfc", O_RDONLY|O_LARGEFILE) = 115

如果这并没有告诉你它正在使用哪个文件,那么很可能它正在使用系统范围的fonctconfig。然后你会得到一个这样的输出:

[pid  3259] open("/usr/java/jdk1.7.0_55/jre/lib/i386/xawt/libfontconfig.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid  3259] open("/usr/java/jdk1.7.0_55/jre/lib/i386/xawt/../libfontconfig.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid  3259] open("/usr/java/jdk1.7.0_55/bin/../lib/i386/jli/libfontconfig.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid  3259] open("/usr/lib/libfontconfig.so.1", O_RDONLY) = 116

答案 3 :(得分:1)

JRE类sun.awt.FontConfiguration已经为此进行了日志记录,您只需启用它即可。

  • 将此选项添加到Java -Dsun.java2d.debugfonts=true
  • 编辑jre / lib / logging.properties

更改此行

java.util.logging.ConsoleHandler.level = ALL

添加此行

sun.awt.FontConfiguration.level = ALL

然后你会在你的stderr中看到这样的一行(logger因某种原因使用stderr)

CONFIG: Read logical font configuration from /your/path/jre/lib/fontconfig.RedHat.6.bfc

答案 4 :(得分:0)

尝试使用命令行工具lsof监视打开的文件,例如

lsof -r | grep fontconfig