1

fontpalace.com から Helvetica フォントをダウンロードし (Helvetica を検索してください)、Font.createFont() を使用して Java アプリケーションに組み込みました。しかし、フォント メトリクスはこれでは機能しません。つまり、計算されたラベルの最小サイズが間違っています。

この問題を示す簡単なサンプル アプリケーション:

package fontTest;
import java.awt.Font;
import java.io.InputStream;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class FontTest extends JFrame {
    public FontTest() {
        JLabel label = new JLabel("Test");
        try {
            InputStream is = FontTest.class.getResourceAsStream("Helvetica.ttf");
            Font font = Font.createFont(Font.TRUETYPE_FONT, is);
            label.setFont(font.deriveFont(12f));
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        add(label);
        pack();
    }

    public static void main(String[] args) {
        FontTest fontTest = new FontTest();
        fontTest.setVisible(true);
    }
}

label.setFont(..) で行を削除すると、pack() コマンドが機能し、テキストが読めるようにウィンドウのサイズが変更されます。ただし、これでは pack() が正しく機能せず、ラベルとウィンドウのサイズが非常に小さいサイズに変更され、テキストが切り取られます。Linux と Windows でこの問題が発生しました。

何か不足していますか?一部の ttf フォント ファイルは機能するようですが、一部は機能しないようです。しかし、正常に動作する Helvetica (Neue Helvetica などではなく、オリジナルのもの) を見つけることができませんでした。

何か案は?

4

1 に答える 1

1

font.deriveFont は int ではなく float を取ります。label.setFont(font.deriveFont(12f)); を試してください。

于 2012-10-25T21:14:56.410 に答える