グラフィックを使用せずにFontMetricsを取得するにはどうすればよいですか?コンストラクターでFontMetricsを取得したいので、次のようにします。
BufferedImage bi = new BufferedImage(5, 5, BufferedImage.TYPE_INT_RGB);
FontMetrics fm = bi.getGraphics().getFontMetrics(font);
int width = fm.stringWidth(pattern);
int height = fm.getHeight();
うーん... FontMetricsを取得するためにグラフィックが必要なのは非常に論理的です。フォントの高さ、幅などは、さまざまなディスプレイで異なる場合があります。
コンポーネントがある場合は、それを使用してFontMetricsを取得できます。
component.getFontMetrics(font);
いいえ、必ずしもグラフィックスオブジェクトを取得/使用する必要はありません。
_Font font = new Font("Helvetica",Font.PLAIN,12);
Canvas c = new Canvas();
FontMetrics fm = c.getFontMetrics(font);
_
ここでc.getGraphics()
を呼び出すと、nullが返されます。これ(キャンバス)は ヘッドレスモード でも機能します。