クラスFontMetrics
- すべての実装されたインタフェース:
Serializable
FontMetricsクラスは、特定の画面上での特定のフォントのレンダリングに関する情報をカプセル化するフォント・メトリックス・オブジェクトを定義します。
サブクラスについてのノート: これらのメソッドの多くは相互に再帰的な閉じたループを形成するため、サブクラスを使用するときは無限の再帰を避けるために、このようなループの各々に少なくとも1つのメソッドを実装するように留意する必要があります。 特に次に挙げるものは、正確さを保証し無限の再帰を避けるために、オーバーライドが推奨される最低限のメソッドです(同様のメソッドは他にもあります)。
このクラスの各メソッドでの実装は効率的ではないため、通常は、より効率的なツールキット特有の実装でオーバーライドされます。
アプリケーションが座標(x, y)に文字を配置するように要求すると、文字はその参照ポイント(添付イメージでドットとして表示されている)がその位置に置かれるように配置されます。 参照ポイントは、文字のベースラインと呼ばれる水平ラインを指定します。 通常の出力では、文字のベースラインの位置揃えをしてください。
さらに、フォントのすべての文字はアセント、ディセント、および有効幅を持ちます。 アセントは、ベースラインから文字の上端までの量のことです。 ディセントは、ベースラインから文字の下端までの量のことです。 有効幅は、AWTによる次の文字の配置位置を示します。
文字配列または文字列も、アセント、ディセント、および有効幅を持つことができます。 配列のアセントは、配列内の文字の最大アセントです。 ディセントは配列内の文字の最大ディセントです。 有効幅は、配列内の各文字の有効幅の合計です。 Stringの有効幅は、Stringのベースラインに沿った距離です。 この距離は、Stringのセンタリングまたは、右揃えのために使用される幅です。
文字の幅はそのコンテキストによりばらつきがあるため、Stringの有効幅は必ずしも単独で測定した文字の有効幅の合計ではありません。 たとえば、アラビア語のテキストの場合、ほかの文字と結合するために文字の形が変わります。 ほかのスクリプトの場合でも、特定の文字シーケンスは合字という単一形状で表現されます。 個々に文字をカウントするときには、このような変換はカウントされません。
フォント・メトリックスはベースラインを基準にしています。つまり、通常は、フォントに適用される回転には依存しません(可能なグリッド・ヒンティング効果を法とします)。 Fontを参照してください。
- 導入されたバージョン:
- 1.0
- 関連項目:
-
フィールドのサマリー
フィールド -
コンストラクタのサマリー
コンストラクタ修飾子コンストラクタ説明protectedFontMetrics(Font font) 指定されたFontおよびそのFont内の特定の文字グリフに関する高さと幅の情報を見つけるための新しいFontMetricsオブジェクトを作成します。 -
メソッドのサマリー
修飾子と型メソッド説明intbytesWidth(byte[] data, int off, int len) 指定されたバイトの配列をこのFontで表示するための有効幅の合計を返します。intcharsWidth(char[] data, int off, int len) 指定された文字の配列をこのFontで表示するための有効幅の合計を返します。intcharWidth(char ch) このFont内の指定された文字の有効幅を返します。intcharWidth(int codePoint) このFont内の指定された文字の有効幅を返します。intこのFontMetricsオブジェクトによって記述されたFontのフォント・アセントを判定します。intこのFontMetricsオブジェクトによって記述されたFontのフォント・ディセントを判定します。getFont()このFontMetricsオブジェクトによって記述されたFontを取得します。テキストを測定するためにこのFontMetricsオブジェクトによって使用されるFontRenderContextを取得します。intこのフォントのテキスト1行の標準の高さを取得します。intこのFontMetricsオブジェクトによって記述されたFontの標準レディングを判定します。getLineMetrics(char[] chars, int beginIndex, int limit, Graphics context) 指定されたGraphicsコンテキスト内の指定されたchar配列のLineMetricsオブジェクトを返します。getLineMetrics(String str, int beginIndex, int limit, Graphics context) 指定されたGraphicsコンテキスト内の指定されたStringのLineMetricsオブジェクトを返します。getLineMetrics(String str, Graphics context) 指定されたGraphicsコンテキスト内の指定されたStringのLineMetricsオブジェクトを返します。getLineMetrics(CharacterIterator ci, int beginIndex, int limit, Graphics context) 指定されたGraphicsコンテキスト内の指定されたCharacterIteratorのLineMetricsオブジェクトを返します。int次に列挙されている重要な注意事項とともに、このFontMetricsオブジェクトによって記述されるFont内の任意の文字の最大有効幅の推定値を返します。intこのFontMetricsオブジェクトによって記述されたFontの最大アセントを判定します。getMaxCharBounds(Graphics context) 指定されたGraphicsコンテキスト内の最大の境界を持つ文字の境界を返します。int非推奨。intこのFontMetricsオブジェクトによって記述されたFontの最大ディセントを判定します。getStringBounds(char[] chars, int beginIndex, int limit, Graphics context) 指定されたGraphicsコンテキスト内の指定された文字の配列の境界を返します。getStringBounds(String str, int beginIndex, int limit, Graphics context) 指定されたGraphicsコンテキスト内の指定されたStringの境界を返します。getStringBounds(String str, Graphics context) 指定されたGraphicsコンテキスト内の指定されたStringの境界を返します。getStringBounds(CharacterIterator ci, int beginIndex, int limit, Graphics context) 指定されたGraphicsコンテキスト内の指定されたCharacterIteratorでインデックスが付けられた文字の境界を返します。int[]Font内の最初の256文字の有効幅を取得します。booleanFontに均一のライン・メトリックスが含まれているかどうかを確認します。intstringWidth(String str) 指定されたStringをこのFontで表示するための有効幅の合計を返します。toString()このFontMetricsオブジェクトの値の表現をStringとして返します。
-
フィールド詳細
-
font
-
-
コンストラクタの詳細
-
FontMetrics
protected FontMetrics(Font font) 指定されたFontおよびそのFont内の特定の文字グリフに関する高さと幅の情報を見つけるための新しいFontMetricsオブジェクトを作成します。- パラメータ:
font-Font- 関連項目:
-
-
メソッドの詳細
-
getFont
public Font getFont()このFontMetricsオブジェクトによって記述されたFontを取得します。- 戻り値:
- この
FontMetricsオブジェクトによって記述されたFont。
-
getFontRenderContext
public FontRenderContext getFontRenderContext()テキストを測定するためにこのFontMetricsオブジェクトによって使用されるFontRenderContextを取得します。Graphicsパラメータを取るこのクラスのメソッドは、このFontRenderContextではなく、そのGraphicsオブジェクトのFontRenderContextを使用してテキストを測定します。- 戻り値:
- この
FontMetricsオブジェクトが使用するFontRenderContext。 - 導入されたバージョン:
- 1.6
-
getLeading
public int getLeading()このFontMetricsオブジェクトによって記述されたFontの標準レディングを判定します。 標準レディング(行間の間隔)は、テキストのある行のディセントとその次の行のアセントの間で確保される論理的な量です。 高さのメトリックスは、この余分な空間を含めて計算されます。- 戻り値:
Fontの標準レディング。- 関連項目:
-
getAscent
public int getAscent()このFontMetricsオブジェクトによって記述されたFontのフォント・アセントを判定します。 フォント・アセントは、フォントのベースラインからほとんどの英数字の上端までの距離です。Fontの文字によっては、フォントのアセント・ラインからはみ出す場合があります。- 戻り値:
Fontのフォント・アセント。- 関連項目:
-
getDescent
public int getDescent()このFontMetricsオブジェクトによって記述されたFontのフォント・ディセントを判定します。 フォント・ディセントは、フォントのベースラインからディセンダを持つほとんどの英数字の下端までの距離です。Fontの文字によっては、フォントのディセント・ラインからはみ出す場合があります。- 戻り値:
Fontのフォント・ディセント。- 関連項目:
-
getHeight
public int getHeight()このフォントのテキスト1行の標準の高さを取得します。 これは、隣接するテキスト行のベースラインの間の距離です。 この距離は、レディング、アセント、およびディセントの合計値です。 四捨五入の都合上、この値はgetAscent()、getDescent()、getLeading()の合計と一致しないことがあります。 ただし、この距離間隔で位置付けられるテキスト行が互いに離れている保証はありません。たとえば、ある文字が標準アセント・メトリックスまたは標準ディセント・メトリックスのどちらかを越えている場合、行がオーバーラップすることがあります。- 戻り値:
- フォントの標準高さ
- 関連項目:
-
getMaxAscent
public int getMaxAscent()このFontMetricsオブジェクトによって記述されたFontの最大アセントを判定します。 文字がこの高さからはみ出すことはありません。- 戻り値:
Font内の任意の文字の最大アセント。- 関連項目:
-
getMaxDescent
public int getMaxDescent()このFontMetricsオブジェクトによって記述されたFontの最大ディセントを判定します。 文字がこの高さからはみ出すことはありません。- 戻り値:
Font内の任意の文字の最大ディセント。- 関連項目:
-
getMaxDecent
@Deprecated public int getMaxDecent()非推奨。JDKバージョン1.1.1で、getMaxDescent()に置き換えられています。下位互換性のためだけに用意されています。- 戻り値:
Font内の任意の文字の最大ディセント。- 関連項目:
-
getMaxAdvance
public int getMaxAdvance()次に列挙されている重要な注意事項とともに、このFontMetricsオブジェクトによって記述されるFont内の任意の文字の最大有効幅の推定値を返します。前進は、文字をベースラインに沿って右端のポイントに配置するために使用される左端のポイントからの距離です。 これは、文字を表すイメージの表示幅とは異なります。
Stringの有効幅は、必ずしも各文字の有効幅の合計ではありません。 適切なレンダリングのために複雑なテキスト・レイアウトが必要な場合は、大幅に異なることがあります。レポートされる値の注意事項には、次のものがあります。
- 戻り値は、基礎となるシステム・フォントの情報に依存しており、その情報の正確性はAWTコントロール外です。
- 特定の文字がレンダリング・コンテキストでグリフにマップされている場合、フォント自体の命令がラスタライズ・プロセスとともに原因で、一部のグリフがレポートされるよりも広範囲に進める可能性があります。
- 完全一致を使用できないスタイル(
Font.BOLDなど)でフォントがリクエストされた場合、リクエストされたレンダリングを満たす技術によっては、報告された最大値よりも広いグリフが生じる可能性があります。 - 実装によっては、AWT論理フォントまたは物理フォントでは、プライマリの基礎となる物理フォントで文字がサポートされていない場合に、1つ以上の"フォールバック"フォントから一部の文字を検索する必要があります。 これらのフォントはすべて、レポートされた最大仮払金の計算で認識または考慮されるわけではありません。 このようなフォールバック・フォントのデザイン・センターは、プライマリ・フォントのデザイン・センターとは異なるスクリプト用であることが一般的であるため、進歩は大きく異なる場合があります。 これにより、
Font.MONOSPACEDなどのフォントがすべて同じ幅ではないグリフをレンダリングできるという予期しない結果になる可能性もあります。
Stringの表示幅は必ずしも注意して使用する必要がある仮払金の合計ではないため、最大仮払金の見積りをより適切に必要とし、表示する文字のサブセットを知っているアプリケーションでは、前述のように、各文字の拡張を問い合せて最も幅を見つけることができます。要約すると、このメソッドでは絶対的な保証は行われず、エラーのマージン内での正しい保証も行われません。 そのため、フォントから一部の数の未知の文字を表示するのに十分な合計領域を見積もるためにのみ使用する必要があります。 これは、特定のテキストおよびレンダリング・コンテキストに応じて、過大評価または過小評価のいずれかになります。
- 戻り値:
Font内の任意の文字の最大拡張幅の見積り。最大拡張幅が不明な場合は-1。
-
charWidth
public int charWidth(int codePoint) このFont内の指定された文字の有効幅を返します。 有効幅は、文字列のベースラインの左端の点から右端の点までの距離です。Stringの有効幅は、必ずしも各文字の有効幅の合計ではありません。このメソッドは、指定された文字が有効なUnicodeコード・ポイントであることを検証しません。 呼出し側で、必要に応じて
Character.isValidCodePointを使用して、文字値を検証する必要があります。- パラメータ:
codePoint- 測定する文字(Unicodeコード・ポイント)- 戻り値:
- この
FontMetricsオブジェクトによって記述されたFont内の指定された文字の有効幅。 - 関連項目:
-
charWidth
public int charWidth(char ch) このFont内の指定された文字の有効幅を返します。 有効幅は、文字列のベースラインの左端の点から右端の点までの距離です。Stringの有効幅は、必ずしも各文字の有効幅の合計ではありません。ノート: このメソッドは、補助文字を処理できません。 補助文字を含むすべてのUnicode文字をサポートするには、
charWidth(int)メソッドを使用してください。- パラメータ:
ch- 測定対象の文字- 戻り値:
- この
FontMetricsオブジェクトによって記述されたFont内の指定された文字の有効幅。 - 関連項目:
-
stringWidth
public int stringWidth(String str) 指定されたStringをこのFontで表示するための有効幅の合計を返します。 有効幅は、文字列のベースラインの左端の点から右端の点までの距離です。Stringの有効幅は、必ずしも各文字の有効幅の合計ではありません。- パラメータ:
str- 測定対象のString- 戻り値:
- この
FontMetricsが記述するFontの指定されたStringの有効幅。 - スロー:
NullPointerException- strがnullの場合。- 関連項目:
-
charsWidth
public int charsWidth(char[] data, int off, int len) 指定された文字の配列をこのFontで表示するための有効幅の合計を返します。 有効幅は、文字列のベースラインの左端の点から右端の点までの距離です。Stringの有効幅は、必ずしも各文字の有効幅の合計ではありません。 これは、指定された範囲内にある文字のStringを測定することと同等です。- パラメータ:
data- 測定される文字の配列off- 配列中の文字の開始オフセットlen- 配列から測定される文字数- 戻り値:
- この
FontMetricsオブジェクトが記述するフォントの指定されたchar配列の部分配列の有効幅。 - スロー:
NullPointerException-dataがnullの場合。IndexOutOfBoundsException-off引数とlen引数が、data配列の境界の外側の文字を指す場合。- 関連項目:
-
bytesWidth
public int bytesWidth(byte[] data, int off, int len) 指定されたバイトの配列をこのFontで表示するための有効幅の合計を返します。 有効幅は、文字列のベースラインの左端の点から右端の点までの距離です。Stringの有効幅は、必ずしも各文字の有効幅の合計ではありません。 これは、指定された範囲内にある文字のStringを測定することと同等です。- パラメータ:
data- 測定されるバイトの配列off- 配列中のバイトの開始オフセットlen- 配列から測定されるバイト数- 戻り値:
- この
FontMetricsオブジェクトが記述するFontの指定されたbyte配列の部分配列の有効幅。 - スロー:
NullPointerException-dataがnullの場合。IndexOutOfBoundsException-off引数とlen引数が、data配列の境界の外側のバイトを指す場合。- 関連項目:
-
getWidths
public int[] getWidths()Font内の最初の256文字の有効幅を取得します。 有効幅は、文字列のベースラインの左端の点から右端の点までの距離です。Stringの有効幅は、必ずしも各文字の有効幅の合計ではありません。- 戻り値:
- この
FontMetricsオブジェクトが記述するFontの文字の有効幅が格納されている配列。
-
hasUniformLineMetrics
public boolean hasUniformLineMetrics()Fontに均一のライン・メトリックスが含まれているかどうかを確認します。 複合フォントは、さまざまな文字セットを網羅するために複数のフォントで構成されることがあります。 その場合、FontLineMetricsオブジェクトは均一ではありません。 フォントごとに、別々のアセント、ディセント、メトリックスなどを持つことがあります。 この情報は、行測定および行分割に必要になる場合があります。- 戻り値:
- このフォントが均一のライン・メトリックスを持つ場合は
true、そうでない場合はfalse。 - 関連項目:
-
getLineMetrics
public LineMetrics getLineMetrics(String str, Graphics context) 指定されたGraphicsコンテキスト内の指定されたStringのLineMetricsオブジェクトを返します。- パラメータ:
str- 指定されたStringcontext- 指定されたGraphicsコンテキスト- 戻り値:
- 指定された
StringとGraphicsコンテキストで作成されたLineMetricsオブジェクト。 - 関連項目:
-
getLineMetrics
public LineMetrics getLineMetrics(String str, int beginIndex, int limit, Graphics context) 指定されたGraphicsコンテキスト内の指定されたStringのLineMetricsオブジェクトを返します。- パラメータ:
str- 指定されたStringbeginIndex-strの初期オフセットlimit-strの終了オフセットcontext- 指定されたGraphicsコンテキスト- 戻り値:
- 指定された
StringとGraphicsコンテキストで作成されたLineMetricsオブジェクト。 - 関連項目:
-
getLineMetrics
public LineMetrics getLineMetrics(char[] chars, int beginIndex, int limit, Graphics context) 指定されたGraphicsコンテキスト内の指定されたchar配列のLineMetricsオブジェクトを返します。- パラメータ:
chars- 指定された文字配列beginIndex-charsの初期オフセットlimit-charsの終了オフセットcontext- 指定されたGraphicsコンテキスト- 戻り値:
- 指定された文字配列と
Graphicsコンテキストで作成されたLineMetricsオブジェクト。 - 関連項目:
-
getLineMetrics
public LineMetrics getLineMetrics(CharacterIterator ci, int beginIndex, int limit, Graphics context) 指定されたGraphicsコンテキスト内の指定されたCharacterIteratorのLineMetricsオブジェクトを返します。- パラメータ:
ci- 指定されたCharacterIteratorbeginIndex-ciの初期オフセットlimit-ciの終了インデックスcontext- 指定されたGraphicsコンテキスト- 戻り値:
- 指定された引数で作成された
LineMetricsオブジェクト。 - 関連項目:
-
getStringBounds
public Rectangle2D getStringBounds(String str, Graphics context) 指定されたGraphicsコンテキスト内の指定されたStringの境界を返します。 この境界は、Stringをレイアウトするために使用されます。ノート: 返された境界は、ベースラインを基準にした座標で表されています(
class notesを参照してください)。- パラメータ:
str- 指定されたStringcontext- 指定されたGraphicsコンテキスト- 戻り値:
- 指定された
Graphicsコンテキストで、指定されたStringのバウンディング・ボックスを表すRectangle2D。 - 関連項目:
-
getStringBounds
public Rectangle2D getStringBounds(String str, int beginIndex, int limit, Graphics context) 指定されたGraphicsコンテキスト内の指定されたStringの境界を返します。 この境界は、Stringをレイアウトするために使用されます。ノート: 返された境界は、ベースラインを基準にした座標で表されています(
class notesを参照してください)。- パラメータ:
str- 指定されたStringbeginIndex-strの先頭のオフセットlimit-strの終了オフセットcontext- 指定されたGraphicsコンテキスト- 戻り値:
- 指定された
Graphicsコンテキストで、指定されたStringのバウンディング・ボックスを表すRectangle2D。 - 関連項目:
-
getStringBounds
public Rectangle2D getStringBounds(char[] chars, int beginIndex, int limit, Graphics context) 指定されたGraphicsコンテキスト内の指定された文字の配列の境界を返します。 この境界は、指定された文字配列、beginIndex、およびlimitで作成されたStringを配置するために使用されます。ノート: 返された境界は、ベースラインを基準にした座標で表されています(
class notesを参照してください)。- パラメータ:
chars- 文字の配列beginIndex- 文字配列の開始オフセットlimit- 文字配列の終了オフセットcontext- 指定されたGraphicsコンテキスト- 戻り値:
- 指定された
Graphicsコンテキストで、指定された文字配列のバウンディング・ボックスを表すRectangle2D。 - 関連項目:
-
getStringBounds
public Rectangle2D getStringBounds(CharacterIterator ci, int beginIndex, int limit, Graphics context) 指定されたGraphicsコンテキスト内の指定されたCharacterIteratorでインデックスが付けられた文字の境界を返します。ノート: 返された境界は、ベースラインを基準にした座標で表されています(
class notesを参照してください)。- パラメータ:
ci- 指定されたCharacterIteratorbeginIndex-ciの初期オフセットlimit-ciの終了インデックスcontext- 指定されたGraphicsコンテキスト- 戻り値:
- 指定された
Graphicsコンテキストで、指定されたCharacterIterator内のインデックス付き文字のバウンディング・ボックスを表すRectangle2D。 - 関連項目:
-
getMaxCharBounds
public Rectangle2D getMaxCharBounds(Graphics context) 指定されたGraphicsコンテキスト内の最大の境界を持つ文字の境界を返します。- パラメータ:
context- 指定されたGraphicsコンテキスト- 戻り値:
- 最大の境界を持つ文字のバウンディング・ボックスである
Rectangle2D。 - 関連項目:
-
toString
-
getMaxDescent()に置き換えられています。