Fontクラスの定義とコンストラクタ

広告

Fontクラスの定義を確認します。クラス図は次のようになっています。

public class Font
extends Object implements Serializable
java.lang.Object
 L java.awt.Font

次にFontクラスのコンストラクタを見ていきます。

コンストラクタの概要
protected Font(Font font)
指定された font から新しい Font を生成します。
Font(Map<? extends AttributedCharacterIterator.Attribute,?> attributes)
指定された属性で新しい Font を生成します。
Font(String name, int style, int size)
指定された名前、スタイル、およびポイントサイズから新しい Font を生成します。

3つのコンストラクタが用意されています。この中で3番目だけ分かっていれば十分です。

では3番目のコンストラクタについて確認してみます。

指定された名前、スタイル、およびポイントサイズから新しい Font を生成します。

フォント名にはフォントフェース名またはフォントファミリ名を指定できます。フォント名をスタイ
ルとともに使用して、適切なフォントフェースを見つけます。フォントファミリ名を指定した場合、
style 引数を使用して、ファミリからもっとも適切なフェースを選択します。フォントフェース名を
指定した場合、フェースのスタイルと style 引数をマージして、同じファミリからもっとも適合す
るフォントを見つけます。たとえば、Font.ITALIC でフェース名 "Arial Bold" を指定すると、フォ
ントシステムは Arial ファミリで、太字で斜体のフェースを探し、物理フォントフェース Arial 
Bold Italic にフォントインスタンスを関連付けることもできます。style 引数は指定されたフェー
ススタイルにマージされ、加算または減算されません。つまり、太字フェースおよび太字スタイルを
指定しても、フォントは 2 倍の太さにならず、また太字フェースとプレーンスタイルを指定しても、
フォントは細くなりません。

要求されたスタイルのフェースが見つからない場合、フォントシステムは目的のスタイルを実現する
ためにアルゴリズムスタイルを適用することがあります。たとえば、ITALIC が要求されていても、
斜体フェースを使用できない場合、プレーンフェースのグリフがアルゴリズムによって傾斜されます。

フォント名の検索は US ロケールの大文字と小文字を区別しない規則が使用され、大文字と小文字が
区別されません。

name が論理フォント以外のものを表す場合、つまり、物理フォントフェースまたはファミリと解釈
される場合で、実装によってこれを物理フォントまたは互換の代替フォントにマップできないとき
は、フォントシステムは Font インスタンスを「Dialog」にマップします。たとえば、getFamily に
よって報告されるファミリは「Dialog」になります。 

パラメータ:
  name - フォント名。これはフォントフェース名またはフォントファミリ名を指定でき、この 
    GraphicsEnvironment に見つかった論理フォントまたは物理フォントを表す。論理フォントの
    ファミリ名は、Dialog、DialogInput、Monospaced、 Serif、または SansSerif。これらの名前
    にはすべて、定義済みの文字列定数が存在する。たとえば、@see #DIALOG。name が null の場
    合、getName() によって返される新しい Font の「論理フォント名」は名前「Default」に設定
    される
  style - Font のスタイル定数。スタイル引数は、PLAIN、あるいは BOLD と ITALIC をビット単位
    に結合した整数型ビットマスク (ITALIC または BOLD|ITALIC など)。style 引数が有効な整数
    型ビットマスクでない場合、スタイルは PLAIN に設定される
  size - Font のポイントサイズ

コンストラクタの説明が長々と書かれていますが、要点としては引数としてフォント名、フォントスタイル、フォントサイズの3つを指定することが分かれば大丈夫です。フォント名の指定の仕方が3通りあるので順番に次のページから確認していきます。

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)