6

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

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

这是我的字体配置文件:

$ 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我的系统正在使用哪个文件吗?

谢谢,

——约翰·大卫

4

5 回答 5

3

JRE 类sun.awt.FontConfiguration已经为此提供了日志记录,您只需启用它。

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

更改此行

java.util.logging.ConsoleHandler.level = ALL

添加这一行

sun.awt.FontConfiguration.level = ALL

然后你会在你的标准错误中看到这样的一行(记录器出于某种原因使用标准错误)

CONFIG: Read logical font configuration from /your/path/jre/lib/fontconfig.RedHat.6.bfc
于 2016-02-04T14:58:08.427 回答
2

只需使用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

如果这不能告诉您它正在使用哪个文件,则很可能它正在使用系统范围的 fontconfig。然后你会得到这样的输出:

[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
于 2014-09-04T09:35:28.717 回答
2

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

这是缺陷 URL http://bugs.java.com/view_bug.do?bug_id=7175487

于 2016-04-26T17:40:38.863 回答
1

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

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

于 2012-02-01T19:27:56.267 回答
0

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

lsof -r | grep fontconfig
于 2010-04-06T19:24:10.560 回答