com.nttdocomo.ui
クラス Font

Object
  拡張com.nttdocomo.ui.Font

public class Font
extends 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.x のみ]
デフォルトフォントは、FACE_SYSTEM|SIZE_MEDIUM|STYLE_PLAIN です。 getFontで指定されたタイプがサポートされていない場合はデフォルトフォントを取得します。 getFontで指定されたフェース、サイズ、スタイルがサポートされていない場合は、サポートされていない 要素を FACE_SYSTEM、SIZE_MEDIUM、STYLE_PLAIN に置き換えたフォントを取得します。

[DoJa-3.0 (505i、505iS)、DoJa-3.5 (900i)]
初期状態のデフォルトフォントは、FACE_SYSTEM|SIZE_TINY|STYLE_PLAINです。 getFontで指定されたタイプがサポートされていない場合は初期状態のデフォルトフォントを取得します。 getFontで指定されたフェース、サイズ、スタイルがサポートされていない場合は、 サポートされていない要素を FACE_SYSTEM、SIZE_TINY、STYLE_PLAIN に置き換えたフォントを取得します。 getDefaultFont()メソッドが返す値は、 setDefaultFont(Font)メソッドにより設定した値です。 設定していない場合、初期状態のデフォルトフォントを返します。
[ DoJa-3.0 (506i) 以降 ただし、DoJa-3.5 (900i) を除く]
初期状態のデフォルトフォントは、 FACE_SYSTEM|SIZE_TINY|STYLE_PLAIN です。 getFont(int) で指定されたタイプ、フェース、サイズ、 スタイルがサポートされていない場合には、以下のように振る舞います。
指定されたタイプが未サポートの場合:
初期状態のデフォルトフォントを取得します。
指定されたフェース、スタイルが未サポートの場合:
未サポートの要素を FACE_SYSTEMSTYLE_PLAIN に置き換えたフォントを取得します。
指定されたサイズが未サポートの場合:
未サポートの SIZE_ から始まる要素を、 指定されたサイズより小さく、かつ、 一番近いサイズを表す要素に置き換えたフォントを取得します。
getDefaultFont() メソッドが返す値は、 setDefaultFont(Font)メソッドにより設定した値です。 設定していない場合、初期状態のデフォルトフォントを返します。

[DoJa-5.0 (903i) 以降]
getFont(int type, int fontSize) にてフォントサイズを dot 単位で指定することができます。詳細はメソッドの説明を参照してください。


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

フィールドの詳細

TYPE_DEFAULT

public static final int TYPE_DEFAULT
デフォルトフォントを表すフォントタイプです(=0x00000000)。
[DoJa-3.0 (505i) 以降]
初期状態のデフォルトフォント(FACE_SYSTEM|SIZE_TINY|STYLE_PLAIN)を意味します。

関連項目:
定数フィールド値

TYPE_HEADING

public static final int TYPE_HEADING [iアプリオプションAPI]
見出し用フォントを表すフォントタイプです(=0x00000001)。
端末によってはサポートされない場合があります。

関連項目:
定数フィールド値

FACE_SYSTEM

public static final int FACE_SYSTEM
フォントのフェースで、システムフォントを表します(=0x71000000)。

関連項目:
定数フィールド値

FACE_MONOSPACE

public static final int FACE_MONOSPACE [iアプリオプションAPI]
フォントのフェースで、モノスペースフォントを表します(=0x72000000)。
端末によってはサポートされない場合があります。

関連項目:
定数フィールド値

FACE_PROPORTIONAL

public static final int FACE_PROPORTIONAL [iアプリオプションAPI]
フォントのフェースで、プロポーショナルフォントを表します(=0x73000000)。
端末によってはサポートされない場合があります。

関連項目:
定数フィールド値

STYLE_PLAIN

public static final int STYLE_PLAIN
フォントのスタイルで、プレーンスタイルを表します(=0x70100000)。

関連項目:
定数フィールド値

STYLE_BOLD

public static final int STYLE_BOLD [iアプリオプションAPI]
フォントのスタイルで、ボールドスタイルを表します(=0x70110000)。
端末によってはサポートされない場合があります。

関連項目:
定数フィールド値

STYLE_ITALIC

public static final int STYLE_ITALIC [iアプリオプションAPI]
フォントのスタイルで、イタリックスタイルを表します(=0x70120000)。
端末によってはサポートされない場合があります。

関連項目:
定数フィールド値

STYLE_BOLDITALIC

public static final int STYLE_BOLDITALIC [iアプリオプションAPI]
フォントのスタイルで、ボールドイタリックスタイルを表します(=0x70130000)。
端末によってはサポートされない場合があります。

関連項目:
定数フィールド値

SIZE_SMALL

public static final int SIZE_SMALL [iアプリオプションAPI]
フォントのサイズで、スモールサイズを表します(=0x70000100)。

[DoJa-3.5 (900iC) まで] 端末によってはサポートされない場合があります。
[DoJa-4.0 (901i) 以降] 必須のフォントサイズです。

関連項目:
定数フィールド値

SIZE_MEDIUM

public static final int SIZE_MEDIUM
フォントのサイズで、ミディアムサイズを表します(=0x70000200)。

関連項目:
定数フィールド値

SIZE_LARGE

public static final int SIZE_LARGE [iアプリオプションAPI]
フォントのサイズで、ラージサイズを表します(=0x70000300)。

[DoJa-3.5 (900iC) まで] 端末によってはサポートされない場合があります。
[DoJa-4.0 (901i) 以降] 必須のフォントサイズです。

関連項目:
定数フィールド値

SIZE_TINY

public static final int SIZE_TINY
フォントのサイズで、タイニーサイズを表します(=0x70000400)。

導入されたバージョン:
DoJa-3.0 (505i)
関連項目:
定数フィールド値
コンストラクタの詳細

Font

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

メソッドの詳細

getFont

public static Font getFont(int type)
引数で指定されたフォントオブジェクトを取得します。フォントを指定する方法には、 タイプを指定する方法と、フォントのフェイス、スタイル、サイズを指定する方法の2つの 方法があります。
タイプを指定する方法
引数 type に TYPE_DEFAULTを指定すると、機種依存のデフォルトフォントが 使用されます。TYPE_HEADINGを指定すると、機種依存の見出し用のフォントが使用されます。
[DoJa-3.0 (505i) 以降] TYPE_DEFAULTを指定すると、初期状態のデフォルトフォントが使用されます。

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

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

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

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

getFont

public static Font getFont(int type,
                           int fontSize) [iアプリオプションAPI]
引数で指定されたフォントタイプと、dot 単位で指定したフォントサイズからフォントオブジェクトを取得します。

引数 type の設定方法については getFont(int) を参照してください。 ただし、type のフォントサイズ部分は無視されます。 また、 getFont(int) とは異なり、引数 type にタイプ (TYPE_DEFAULT, TYPE_HEADING) を設定することはできません。引数 type にタイプを設定した場合、 不正とみなされ例外が発生します。

フォントサイズには、この端末にてサポートされているフォントサイズを設定します。 フォントサイズはフォントの高さを指定します(単位は dot)。 サポートされているフォントサイズは getSupportedFontSizes() にて取得可能です。

このメソッドは、サポートが必須となっているフォントサイズ (SIZE_SMALL, SIZE_MEDIUM, SIZE_LARGE, SIZE_TINY) のみサポートする端末では未サポートです。 このメソッドをサポートしていない端末から呼ばれた場合、例外が発生します。 また、このメソッドの引数にサポートされていないフォントサイズを設定した場合も、 例外が発生します。

引数 type の解釈については、このメソッドに規定されていることを除いて、 getFont(int) と同様となります。

パラメータ:
type - フォントタイプを指定します。
fontSize - フォントサイズを指定します。フォントサイズにはフォントの高さ(単位は dot)を指定します。
戻り値:
フォントオブジェクトを返します。
例外:
UnsupportedOperationException - 端末がこのメソッドをサポートしていない場合に発生します。
IllegalArgumentException - 引数 fontSize に、この端末がサポートしていないフォントサイズが指定された場合に発生します。
IllegalArgumentException - 引数 type に不正な値が指定された場合に発生します。
導入されたバージョン:
DoJa-5.0 (903i)

getSupportedFontSizes

public static int[] getSupportedFontSizes() [iアプリオプションAPI]
この端末でサポートしている dot 単位で指定可能なフォントサイズの配列を取得します。

サポートしているフォントサイズを昇順に並べた配列を取得することができます。 取得できるフォントサイズはフォントの高さ(単位は dot)です。

取得できるフォントサイズの配列は、端末でサポートする全てのフォントサイズ (サポートが必須となっているフォントサイズを含む) の配列です。

このメソッドは、サポートが必須となっているフォントサイズ (SIZE_SMALL, SIZE_MEDIUM, SIZE_LARGE, SIZE_TINY) のみサポートする端末では未サポートです。 このメソッドをサポートしていない端末から呼ばれた場合、例外が発生します。

戻り値:
この端末がサポートしているフォントサイズの配列を返します。 返される配列は、このオブジェクトが内部で保持している配列のコピーです。 フォントサイズはフォントの高さ(単位は dot)となります。 取得できるフォントサイズは昇順に並んでいます。
例外:
UnsupportedOperationException - 端末がこのメソッドをサポートしていない場合に発生します。
導入されたバージョン:
DoJa-5.0 (903i)

getDefaultFont

public static Font getDefaultFont()
デフォルトのフォントを取得します。

[DoJa-1.0 のみ]
機種依存のデフォルトのフォントを取得します。
[DoJa-2.x のみ]
FACE_SYSTEM|SIZE_MEDIUM|STYLE_PLAINのフォントを取得します。

[DoJa-3.0 (505i) 以降]
setDefaultFont(Font)で設定したフォントオブジェクトを返します。 初期状態ではFACE_SYSTEM|SIZE_TINY|STYLE_PLAINのフォントを取得します。

戻り値:
デフォルトフォントオブジェクトを返します。

setDefaultFont

public static void setDefaultFont(Font f)
デフォルトフォントを設定します。 初期状態を除き、getDefaultFont()メソッドは、 このメソッドで設定したフォントオブジェクトを返します。

パラメータ:
f - デフォルトフォントに設定するフォントオブジェクトを指定します。
例外:
NullPointerException - 引数 f が null の場合に発生します。
導入されたバージョン:
DoJa-3.0 (505i)

getAscent

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

戻り値:
フォントのアセントを返します。

getDescent

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

戻り値:
フォントのディセントを返します。

getHeight

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

戻り値:
フォントの高さを返します。

stringWidth

public int stringWidth(String str)
指定した文字列の幅を取得します。

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

getBBoxWidth

public int getBBoxWidth(String str)
指定した文字列のバウンディングボックスの幅を取得します。

パラメータ:
str - 文字列を指定します。
戻り値:
幅を返します。
例外:
NullPointerException - 引数 str に null が指定された場合に発生します。

getBBoxHeight

public int getBBoxHeight(String str)
指定した文字列のバウンディングボックスの高さを取得します。
[DoJa-3.0 (505i) 以降]
引数 str に 空文字列("")が指定された場合、0 が返ります。

パラメータ:
str - 文字列を指定します。
戻り値:
高さを返します。
例外:
NullPointerException - 引数 str に null が指定された場合に発生します。

getLineBreak

public int getLineBreak(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 に負の値が指定された場合に発生します。

getBBoxHeight

public int getBBoxHeight(XString xStr)
指定したXStringの文字列のバウンディングボックスの高さを取得します。 引数に 空("")のXStringの文字列が指定された場合、0 が返ります。

パラメータ:
xStr - XStringの文字列を指定します。
戻り値:
高さを返します。
例外:
NullPointerException - 引数 xStr に null が指定された場合に発生します。
導入されたバージョン:
DoJa-3.0 (505i)

getBBoxWidth

public int getBBoxWidth(XString xStr)
指定したXStringの文字列のバウンディングボックスの幅を取得します。

パラメータ:
xStr - XStringの文字列を指定します。
戻り値:
幅を返します。
例外:
NullPointerException - 引数 xStr に null が指定された場合に発生します。
導入されたバージョン:
DoJa-3.0 (505i)

getBBoxWidth

public int getBBoxWidth(XString xStr,
                        int off,
                        int len)
指定したXStringの文字列の一部のバウンディングボックスの幅を取得します。

パラメータ:
xStr - XStringの文字列を指定します。
off - 計算する文字列のオフセットを指定します。
len - 計算する文字列の長さを指定します。
戻り値:
幅を返します。
例外:
NullPointerException - 引数 xStr に null が指定された場合に発生します。
StringIndexOutOfBoundsException - 引数 off に負の値が指定された場合、 引数 len に負の値が指定された場合、 引数 off または引数 off + len の値が 文字列の長さを超える場合に発生します。
導入されたバージョン:
DoJa-3.0 (505i)

stringWidth

public int stringWidth(XString xStr)
指定したXStringの文字列の幅を取得します。

パラメータ:
xStr - XStringの文字列を指定します。
戻り値:
文字列を表示するのに必要な幅を返します。
例外:
NullPointerException - 引数 xStr に null が指定された場合に発生します。
導入されたバージョン:
DoJa-3.0 (505i)

stringWidth

public int stringWidth(XString xStr,
                       int off,
                       int len)
指定したXStringの文字列の一部の幅を取得します。

パラメータ:
xStr - XStringの文字列を指定します。
off - 計算する文字列のオフセットを指定します。
len - 計算する文字列の長さを指定します。
戻り値:
部分文字列を表示するのに必要な幅を返します。
例外:
NullPointerException - 引数 xStr に null が指定された場合に発生します。
StringIndexOutOfBoundsException - 引数 off に負の値が指定された場合、 引数 len に負の値が指定された場合、 引数 off または引数 off + len の値が 文字列の長さを超える場合に発生します。
導入されたバージョン:
DoJa-3.0 (505i)

getLineBreak

public int getLineBreak(XString xStr,
                        int off,
                        int len,
                        int width)
指定したXStringの文字列の改行位置を取得します。 offからlen文字の部分文字列の幅がwidthより大きい場合は、 つぎの行の先頭になる文字列の位置を返します。 また、幅が、width以下の場合は、off+len が戻り値として返ります。

パラメータ:
xStr - XStringの文字列を指定します。
off - 計算する文字列のオフセットを指定します。
len - 計算する文字列の長さを指定します。
width - 行の幅をピクセル単位で指定します。
戻り値:
次の改行位置のオフセットを返します。
例外:
NullPointerException - 引数 xStr に null が指定された場合に発生します。
StringIndexOutOfBoundsException - 引数 off に負の値が指定された場合、 引数 len に負の値が指定された場合、 引数 off または引数 off + len の値が xStr の長さを超える場合に発生します。
IllegalArgumentException - 引数 width に負の値が指定された場合に発生します。
導入されたバージョン:
DoJa-3.0 (505i)