Java的内置字体和第三方字体有什么区别?

时间:2012-05-21 21:27:29

标签: java macos swing fonts jlabel

试图弄清楚MultiLineLabel代码中可能存在的错误:http://samuelsjoberg.com/archive/2009/10/multiline-labels-in-swing

基本上,该样本将运行得很好,例如Arial。但是如果我在我的Mac上安装自定义字体,比如ITCKorinna-Bold,它仍会呈现MultiLineLabel,但它不会添加任何换行符,所以 “这是一个 长线。“变成”这是......“

1 个答案:

答案 0 :(得分:0)

在Linux上使用OpenJDK 7更新19它运行得很好。你还没有提供你的代码,所以我们很难看出它是否有任何问题。

当我修改示例以使用Roboto时,换行符按预期工作。

我不知道您正在使用哪个Java运行时,但如果您使用Apple提供的Java运行时,FontMetrics对象返回的值可能会有所不同(因为Apple Java运行时字体呈现的不同然后例如Linux上的OpenJDK)。我建议尝试OpenJDK,看看是否有所不同,或者在不同的平台上运行你的应用程序,看看是否有所作为。

    Font robotoFont = null;
    try {
        robotoFont = Font.createFont(Font.TRUETYPE_FONT, new File("/usr/share/fonts/roboto/Roboto-Black.ttf"));
        robotoFont = robotoFont.deriveFont(14f);
    } catch (Exception e) {
        e.printStackTrace();
    }

    // Using the MultiLineLabel class.
    final MultiLineLabel mLabel = new MultiLineLabel(
            "Lorem ipsum dolor sit amet, consectetur adipiscing elit. "
                    + "Phasellus non sapien quam. Fusce posuere, nisl "
                    + "vitae tristique volutpat, augue erat faucibus nisl, "
                    + "nec venenatis metus sem vel enim. Cras in libero "
                    + "sapien, vitae euismod neque. Proin hendrerit, odio "
                    + "et faucibus suscipit, eros tellus blandit justo, "
                    + "ac cursus risus elit ut risus.");
    mLabel.setForeground(Color.WHITE);
    mLabel.setFont(robotoFont);

enter image description here