1

我正在尝试为 sar 数据可视化设置 kSar java 工具。一切都很好,除了字体设置。

kSar 用户 jfreechart 构建图形,它使用了一些奇怪的不可读字体。这是输出示例:

在此处输入图像描述

我在 ~/.fonts 中安装了新字体(顺便说一句,我没有 root 权限并且无法在系统范围内进行更改),但是我没有找到任何方法来指定我想直接在 java 中使用哪种字体。

我试图在 ~/.fonts.conf 和 fc-match 中更改字体设置给我看:

 $ fc-match -s
DejaVuSans.ttf: "DejaVu Sans" "Book"
n019003l.pfb: "Nimbus Sans L" "Regular"
s050000l.pfb: "Standard Symbols L" "Regular"

~/.fonts.conf 内容为:

<!--?xml version="1.0"?>-->
<!--DOCTYPE fontconfig SYSTEM "fonts.dtd">-->
<!-- ~/.fonts.conf for per-user font configuration -->
<fontconfig>
<alias>
    <family>sans-serif</family>
    <prefer>
        <family>DejaVu Sans</family>
    </prefer>
</alias>
<alias>
    <family>monospace</family>
    <prefer>
        <family>DejaVu Sans</family>
    </prefer>
</alias>
<match>
    <test name="family"><string>Arial</string></test>
    <edit name="family" mode="prepend" binding="strong">
        <string>DejaVu Sans</string>
    </edit>
</match>
<match>
    <test name="family"><string>helvetica</string></test>
    <edit name="family" mode="prepend" binding="strong">
        <string>DejaVu Sans</string>
    </edit>
</match>
</fontconfig>

和 java 读取这个文件(因为在它的错字的情况下会发生错误),但没有任何变化。

在另一个盒子上,它适用于可读标签(在同一个 sar 文件上)。有什么办法可以解决吗?

在此处输入图像描述

4

1 回答 1

0

终于找到了解决办法。这是非常肮脏的黑客,不幸的是这是我发现的唯一工作方式。每次我需要启动这个 java 时,我都会生成特殊的 .fonts.conf 来禁止除我需要的字体之外的所有字体。我用这段代码来做:

echo '<!--?xml version="1.0"?>-->
<!--DOCTYPE fontconfig SYSTEM "fonts.dtd">-->
<!-- ~/.fonts.conf for per-user font configuration -->
<fontconfig>' > ~/.fonts.conf
# here fc-list will produce small warning about bad ~/.fonts.conf
# don't worry about it
fc-list | grep -vi EXCLUDE_FONT | while read FONT ; do 
echo "<rejectfont><pattern><patelt name=\"family\"><string>${FONT%%:*}</string></patelt></pattern></rejectfont>" >> ~/.fonts.conf ; 
done
echo "</fontconfig>" >> ~/.fonts.conf

当然,我会备份现有的 ~/.fonts.conf 并在 java 完成工作后将其放回原处。

希望有一天有人告诉我真正的unix方式解决方案(:

于 2012-12-11T14:43:55.523 回答