7

Javaで文字列の真の境界ボックスを見つけることは可能ですか? つまり、実際に描画されるピクセルを含む最小の長方形ですか?

FontMetrics と LineMetrics を見てきましたが、文字列を渡すことはできますが、文字自体を考慮していないようです。「a」、「p」、「P」はすべて同じ高さを返します。

具体的には、実際の文字がベースラインを下回っていなくても、文字列の高さの降下が含まれているようです。真の境界ボックスを返す、アクセスできる他のメトリックはありますか?

または、特定の文字にディセンダーがあるかどうかを確認する方法はありますか?

4

2 に答える 2

4

テキストの測定に関するこのチュートリアルを参照してください。これはFontMetricsに重点を置いています。

より高度な測定 (特定の文字列の境界ボックスを取得するため) では、ここで説明されているようにTextLayoutが役に立ちます。

TextLayout に関するチュートリアルに加えて、javadoc にはその使用例が含まれています。

于 2012-04-13T17:40:01.767 に答える
0

使用できますjavax.swing.SwingUtilities.layoutCompoundLabel。多くのパラメーターに惑わされないでください。2 つのバージョンがあり、JComponent (null の場合もある) を含むバージョンは、より多くのフラグを実行します。これは JLabel に使用されるため、非常に用途が広く、Rectangle を生成します。

ところで、「a」でもディセンダーが境界に追加される可能性がありますが、ここでも発生する可能性があります。GlyphVector を取得してそこでバウンディング ボックスを計算することもできますが、フォント ヒンティングがオンになっていると、ピクセル位置がわずかにずれて、数文字にわたって蓄積される可能性があるエラーが発生する可能性があります。

于 2012-04-13T18:04:39.540 に答える