12

FontMetricsには、フォントのキャップハイトエックスハイトのゲッターはありません。

これらの値を取得するにはどうすればよいですか?

キャップハイトに関する限り、特定の大文字については、文字の上昇がキャップハイトと同じであるという保証はありません。(たとえば、大文字のHは上部が平らであるとは限りません)

xの高さに関しては、おそらく「x」の高さと同じだと思いますが、これも保証はありません。


編集:Grr!特定の文字シーケンスを試したところFontMetrics.getBounds()FontMetrics.getLineMetrics()高さについては常に同じ答えが得られました(getBounds()は、明らかに幅によって異なります)。hasUniformLineMetrics()このメソッドには、文字セットをカバーするために複数のフォントを使用するfontmetricsに関する注記がありますが、これは個々の文字ではなく、文字グループをカバーします。

4

4 に答える 4

4

探しているのは、テキストの正確なサイズを示すスクリーン レンダー ボックスです。

これは、描画しているサーフェスと描画している文字列について、ある時点で情報を提供する必要があることを意味します。その理由は、システムはレンダリングの後半まで視覚的な結果を認識できないためです。私が使用した:

Graphics2D g;
g.getFont().createGlyphVector(g.getFontRenderContext(),"abc").getVisualBounds();

あなたも試してみてください:

Graphics2D g;
g.getFont().getMaxCharBounds(g.getFontRenderContext());

私も、これらすべてのフォント メソッドをまっすぐに保つのに苦労しています。

于 2012-05-06T06:58:16.833 に答える
0

さて、あなたがテキストに合うテキストでボックスを作ろうとしているなら、私はあなたがちょうど高さをフォントサイズ自体にすることができると思います

よくわかりませんが、それは私が過去にやったことだと思います

于 2012-05-06T02:27:50.877 に答える
0

私はそれを扱っていませんが、GlyphView.GlyphPainterクラスにはgetAscentgetDescentおよびgetHeightメソッドがあります。それはチェックすべきことかもしれません。

于 2011-06-18T05:51:41.530 に答える
0

x-height については、次のコードでうまくいきます。

    public double getXHeight(Font font)
    {
        FontRenderContext fc = new FontRenderContext(null, false, false);
        TextLayout layout = new TextLayout("x", font, fc);
        return layout.getBounds().getHeight();
    }
于 2014-07-10T12:10:49.410 に答える