com.nttdocomo.ui
クラス Font

java.lang.Object
  |
  +--com.nttdocomo.ui.Font

public class Font
extends java.lang.Object

文字の種別を定義します。 フォントクラスは、 フォントならびにフォントのメトリクスを扱います。 getFontの引数は、以下のようなフォーマットになっています。

タイプを指定する場合は、下位8ビットがタイプを意味します。また、 それ以外のビットはすべて0になっています。

 |<- 4 ->|<- 4 ->|<----- 8 ----->|<----- 8 ----->|<----- 8 ----->|
 +-------+-------+-------+-------+-------+-------+-------+-------+
 |   0   |  0    |          0    |           0   |         type  |
 +-------+-------+---------------+---------------+-------+-------+
 

フェース、サイズ、スタイルを指定する場合は、上位4ビットは、0111 に なっています。その次の4ビットがface, そのつぎの8ビットがstyle、 そのつぎの8ビットがsizeを表します。下位8ビットは、無視されます。

 |<- 4 ->|<- 4 ->|<----- 8 ----->|<----- 8 ----->|<----- 8 ----->|
 +-------+-------+-------+-------+-------+-------+-------+-------+
 | 0111  | face  |         style |         size  |      -        |
 +-------+-------+---------------+---------------+-------+-------+
 

[DoJa-2.0]
デフォルトフォントは、FACE_SYSTEM|SIZE_MEDIUM|STYLE_PLAIN です。 getFontで指定されたタイプがサポートされていない場合はデフォルトフォントを取得します。 getFontで指定されたフェース、サイズ、スタイルがサポートされていない場合は、サポートされていない 要素を FACE_SYSTEM、SIZE_MEDIUM、STYLE_PLAIN に置き換えたフォントを取得します。


フィールドの概要
static int FACE_MONOSPACE
          モノスペースフォント (=0x72000000)。
static int FACE_PROPORTIONAL
          プロポーショナルフォント(=0x73000000)。
static int FACE_SYSTEM
          システムフォント (=0x71000000)。
static int SIZE_LARGE
          ラージサイズ (=0x70000300)。
static int SIZE_MEDIUM
          ミディアムサイズ (=0x70000200)。
static int SIZE_SMALL
          スモールサイズ (=0x70000100)。
static int STYLE_BOLD
          ボールドスタイル (=0x70110000)。
static int STYLE_BOLDITALIC
          ボールドイタリックスタイル (=0x70130000)。
static int STYLE_ITALIC
          イタリックスタイル (=0x70120000)。
static int STYLE_PLAIN
          プレーンスタイル (=0x70100000)。
static int TYPE_DEFAULT
          デフォルトフォント (=0x00000000)。
static int TYPE_HEADING
          見出し用フォント (=0x00000001)。
 
コンストラクタの概要
protected Font()
          アプリケーションが直接このクラスのインスタンスを生成することはできません。
 
メソッドの概要
 int getAscent()
          フォントのアセント(ベースラインから上端までの長さ)を取得します。
 int getBBoxHeight(java.lang.String str)
          指定した文字列のバウンディングボックスの高さを取得します。
 int getBBoxWidth(java.lang.String str)
          指定した文字列のバウンディングボックスの幅を取得します。
static Font getDefaultFont()
           デフォルトのフォントを取得します。
 int getDescent()
          フォントのディセント(ベースラインから下端までの長さ)を取得します。
static Font getFont(int type)
          引数で指定されたフォントオブジェクトを取得します。
 int getHeight()
          フォントの高さを取得します。
 int getLineBreak(java.lang.String str, int off, int len, int width)
          指定した文字列の改行位置を取得します。
 int stringWidth(java.lang.String str)
          指定した文字列の幅を取得します。
 
クラス java.lang.Object から継承したメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

TYPE_DEFAULT

public static final int TYPE_DEFAULT
デフォルトフォント (=0x00000000)。

TYPE_HEADING

public static final int TYPE_HEADING
見出し用フォント (=0x00000001)。
端末によってはサポートされない場合があります。

FACE_SYSTEM

public static final int FACE_SYSTEM
システムフォント (=0x71000000)。

FACE_MONOSPACE

public static final int FACE_MONOSPACE
モノスペースフォント (=0x72000000)。
端末によってはサポートされない場合があります。

FACE_PROPORTIONAL

public static final int FACE_PROPORTIONAL
プロポーショナルフォント(=0x73000000)。
端末によってはサポートされない場合があります。

STYLE_PLAIN

public static final int STYLE_PLAIN
プレーンスタイル (=0x70100000)。

STYLE_BOLD

public static final int STYLE_BOLD
ボールドスタイル (=0x70110000)。
端末によってはサポートされない場合があります。

STYLE_ITALIC

public static final int STYLE_ITALIC
イタリックスタイル (=0x70120000)。
端末によってはサポートされない場合があります。

STYLE_BOLDITALIC

public static final int STYLE_BOLDITALIC
ボールドイタリックスタイル (=0x70130000)。
端末によってはサポートされない場合があります。

SIZE_SMALL

public static final int SIZE_SMALL
スモールサイズ (=0x70000100)。
端末によってはサポートされない場合があります。

SIZE_MEDIUM

public static final int SIZE_MEDIUM
ミディアムサイズ (=0x70000200)。

SIZE_LARGE

public static final int SIZE_LARGE
ラージサイズ (=0x70000300)。
端末によってはサポートされない場合があります。
コンストラクタの詳細

Font

protected Font()
アプリケーションが直接このクラスのインスタンスを生成することはできません。
メソッドの詳細

getFont

public static Font getFont(int type)
引数で指定されたフォントオブジェクトを取得します。フォントを指定する方法には、 タイプを指定する方法と、フォントのフェイス、スタイル、サイズを指定する方法の2つの 方法があります。
タイプを指定する方法
引数 type に TYPE_DEFAULTを指定すると、機種依存のデフォルトフォントが 使用されます。TYPE_HEADINGを指定すると、機種依存の見出し用のフォントが使用されます。
フォントのフェイス、スタイル、サイズを指定する方法
引数 type に、フェイス、スタイル、サイズを表す定数をビット毎の論理和を取って指定します。 たとえば、システムフォントかつボールドスタイルかつミディアムサイズのフォントを取得する場合、
f = getFont(FACE_SYSTEM|STYLE_BOLD|SIZE_MEDIUM);
と指定します。必ず、ビット毎の論理和を使用してください。なお、 フォントのフェイス、スタイル、サイズを指定する場合は、TYPE_DEFAULT,TYPE_HEADINGを 同時に指定しても、その指定は無視されます。

いずれの指定方法の場合でも、 指定されたフォントが端末にない場合は、代替のフォントオブジェクトを返します。

システムによってはフォントオブジェクトは静的に生成されており、 同じフォントタイプを指定した場合は同一のオブジェクトが返されることもあります。

パラメータ:
type - フォントタイプを指定します。
戻り値:
フォントオブジェクトを返します。
例外:
IllegalArgumentException - 引数 type に不正な値が指定された場合に発生します。

getDefaultFont

public static Font getDefaultFont()
[DoJa-1.0]
機種依存のデフォルトのフォントを取得します。
[DoJa-2.0]
デフォルトのフォントを取得します
戻り値:
デフォルトフォントオブジェクトを返します。

getAscent

public int getAscent()
フォントのアセント(ベースラインから上端までの長さ)を取得します。
戻り値:
フォントのアセントを返します。

getDescent

public int getDescent()
フォントのディセント(ベースラインから下端までの長さ)を取得します。
戻り値:
フォントのディセントを返します。

getHeight

public int getHeight()
フォントの高さを取得します。 この値はアセントとディセントの合計と等しくなります。
戻り値:
フォントの高さを返します。

stringWidth

public int stringWidth(java.lang.String str)
指定した文字列の幅を取得します。
パラメータ:
str - 文字列を指定します。
戻り値:
文字列を表示するのに必要な幅を返します。
例外:
NullPointerException - 引数 str に null が指定された場合に発生します。

getBBoxWidth

public int getBBoxWidth(java.lang.String str)
指定した文字列のバウンディングボックスの幅を取得します。
パラメータ:
str - 文字列を指定します。
戻り値:
幅を返します。
例外:
NullPointerException - 引数 str に null が指定された場合に発生します。

getBBoxHeight

public int getBBoxHeight(java.lang.String str)
指定した文字列のバウンディングボックスの高さを取得します。
パラメータ:
str - 文字列を指定します。
戻り値:
高さを返します。
例外:
NullPointerException - 引数 str に null が指定された場合に発生します。

getLineBreak

public int getLineBreak(java.lang.String str,
                        int off,
                        int len,
                        int width)
指定した文字列の改行位置を取得します。offからlen文字の部分文字列の幅が widthより大きい場合は、つぎの行の先頭になる文字列の位置を返します。また、 幅が、width以下の場合は、off+len が戻り値として返ります。 たとえば、
 String s = "プログラミング";
 int idx = font.getLineBreak(s, 0, s.length, 50);
 
で、"プログラ" の幅が48ピクセルで、"プログラミ" の幅が60ピクセルの場合、 idxの値は、4になります。この位置は、次の行の先頭になる文字の位置です。

以下に使用例を示します。 このメソッドは、指定した座標(x,y)から、widthの幅で 折り返しながら文字列を表示するものです。 ただし、引数のy座標はベースラインのy座標です。

 public void drawText(Graphics g, Font f, String str, int x, int y, int width) {
     int len = str.length();
     char data[] = new char[len];
     str.getChars(0, len, data, 0);
     int startIdx = 0;
     int endIdx = 0;
     int h = f.getHeight();
     while (len > 0) {
        endIdx = f.getLineBreak(str, startIdx, len, width);
        g.drawChars(data, x, y, startIdx, endIdx - startIdx);
        len -= (endIdx - startIdx);
        startIdx = endIdx;
        y += h;
     }
 }
パラメータ:
str - 文字列を指定します。
off - 計算する文字列のオフセットを指定します。
len - 計算する文字列の長さを指定します。
width - 行の幅をピクセル単位で指定します。
戻り値:
次の改行位置のオフセットを返します。
例外:
NullPointerException - 引数 str に null が指定された場合に発生します。
StringIndexOutOfBoundsException - 引数 off に負の値が指定された場合、引数 len に負の値が指定された場合、引数 off または引数 off + len の値が str の長さを超える場合に発生します。
IllegalArgumentException - 引数 width に負の値が指定された場合に発生します。