- すべての実装されたインタフェース:
- Serializable
NumericShaperクラスは、Latin-1 (ヨーロッパ言語)の数字をほかのUnicode 10進数に変換するために使用します。 このクラスは主に、データの提示に各国の数字の形状を使いながら内部的にはLatin-1 (ヨーロッパ言語)の数字を使ったほうが便利な場合に使用します。 非推奨の数字形状セレクタ文字(U+206E)は解釈しません。 
 
 NumericShaperのインスタンスは通常、TextAttributeクラスのNUMERIC_SHAPING属性を持つテキストの属性として適用されます。 たとえば次のコード部分では、アラビア語のコンテキスト内ではTextLayoutのヨーロッパ言語の数字をアラビア語の数字に変換します。
 
 
 Map map = new HashMap();
 map.put(TextAttribute.NUMERIC_SHAPING,
     NumericShaper.getContextualShaper(NumericShaper.ARABIC));
 FontRenderContext frc = ...;
 TextLayout layout = new TextLayout(text, map, frc);
 layout.draw(g2d, x, y);
 また、次のコード部分で示すように、
NumericShaperのインスタンスを使用して数字の形状決定を明示的に行うこともできます。
 char[] text = ...;
 // shape all EUROPEAN digits (except zero) to ARABIC digits
 NumericShaper shaper = NumericShaper.getShaper(NumericShaper.ARABIC);
 shaper.shape(text, start, count);
 // shape European digits to ARABIC digits if preceding text is Arabic, or
 // shape European digits to TAMIL digits if preceding text is Tamil, or
 // leave European digits alone if there is no preceding text, or
 // preceding text is neither Arabic nor Tamil
 NumericShaper shaper =
     NumericShaper.getContextualShaper(NumericShaper.ARABIC |
                                         NumericShaper.TAMIL,
                                       NumericShaper.EUROPEAN);
 shaper.shape(text, start, count);
 ビット・マスクベースおよびenumベースのUnicode範囲
このクラスは、スクリプト固有の数字のUnicode範囲を表すために異なる2つのプログラミング・インタフェースをサポートしています。つまり、NumericShaper.ARABICのようなビット・マスクベースのものと、NumericShaper.Range.ARABICのようなenumベースのものです。 複数の範囲を指定するには、次のようにビット・マスクベースの定数の論理和を使用します。 
 
あるいは、次のようにNumericShaper.ARABIC | NumericShaper.TAMIL
NumericShaper.Range定数を使用してSetを作成します。
 enumベースの範囲は、ビット・マスクベースの範囲のスーパー・セットです。EnumSet.of(NumericShaper.Range.ARABIC, NumericShaper.Range.TAMIL)
2つのインタフェースが混在する場合(直列化も含む)、マッピングが可能であれば、Unicode範囲の値は互いに対応する値にマップされます。たとえば、NumericShaper.Range.ARABICとNumericShaper.ARABICがマップされます。 NumericShaper.Range.BALINESEなどのマップできない範囲値が指定された場合、そのような範囲は無視されます。 
 
10進数の優先順位
1つのUnicode範囲に10進数のセットが複数含まれることがあります。 同じUnicode範囲に10進数のセットが複数指定されている場合は、次のようにセットの1つが優先されます。
| Unicode範囲 | NumericShaper定数 | 優先順位 | 
|---|---|---|
| アラビア語 | NumericShaper.ARABICNumericShaper.EASTERN_ARABIC | NumericShaper.EASTERN_ARABIC | 
| NumericShaper.Range.ARABICNumericShaper.Range.EASTERN_ARABIC | NumericShaper.Range.EASTERN_ARABIC | |
| タイ・タム | NumericShaper.Range.TAI_THAM_HORANumericShaper.Range.TAI_THAM_THAM | NumericShaper.Range.TAI_THAM_THAM | 
- 導入されたバージョン:
- 1.4
- 関連項目:
- 
ネストされたクラスのサマリーネストされたクラス
- 
フィールドのサマリーフィールド修飾子と型フィールド説明static final intすべての範囲を識別します。完全なコンテキスト依存の形状決定に使用します。static final intARABICの範囲と10進数を識別します。static final intBENGALIの範囲と10進数を識別します。static final intDEVANAGARIの範囲と10進数を識別します。static final intARABICの範囲とARABIC_EXTENDEDの10進数を識別します。static final intETHIOPICの範囲と10進数を識別します。static final intLatin-1 (ヨーロッパ言語)と拡張範囲、およびLatin-1 (ヨーロッパ言語)の10進数を識別します。static final intGUJARATIの範囲と10進数を識別します。static final intGURMUKHIの範囲と10進数を識別します。static final intKANNADAの範囲と10進数を識別します。static final intKHMERの範囲と10進数を識別します。static final intLAOの範囲と10進数を識別します。static final intMALAYALAMの範囲と10進数を識別します。static final intMONGOLIANの範囲と10進数を識別します。static final intMYANMARの範囲と10進数を識別します。static final intORIYAの範囲と10進数を識別します。static final intTAMILの範囲と10進数を識別します。static final intTELUGUの範囲と10進数を識別します。static final intTHAIの範囲と10進数を識別します。static final intTIBETANの範囲と10進数を識別します。
- 
メソッドのサマリー修飾子と型メソッド説明boolean指定されたオブジェクトがNumericShaperのインスタンスで、範囲表現、ビット・マスク、または列挙と関係なく、これと同じ方法で形状決定を行う場合はtrueを返します。static NumericShapergetContextualShaper(int ranges) 指定されたUnicodeの1つまたは複数の範囲に対する、コンテキスト依存の形状決定要因を返します。static NumericShapergetContextualShaper(int ranges, int defaultContext) 指定されたUnicodeの1つまたは複数の範囲に対する、コンテキスト依存の形状決定要因を返します。static NumericShapergetContextualShaper(Set<NumericShaper.Range> ranges) 指定されたUnicodeの1つまたは複数の範囲に対する、コンテキスト依存の形状決定要因を返します。static NumericShapergetContextualShaper(Set<NumericShaper.Range> ranges, NumericShaper.Range defaultContext) 指定されたUnicodeの1つまたは複数の範囲に対する、コンテキスト依存の形状決定要因を返します。int形状決定を行うすべての範囲に対する値の論理和を求めるintを返します。形状決定を行うこのNumericShaperのすべてのUnicode範囲を表すSetを返します。static NumericShapergetShaper(int singleRange) 指定されたUnicodeの範囲に対する形状決定要因を返します。static NumericShapergetShaper(NumericShaper.Range singleRange) 指定されたUnicodeの範囲に対する形状決定要因を返します。inthashCode()この形状決定要因のハッシュ・コードを返します。booleanこの形状決定要因がコンテキスト依存かどうかを示すbooleanを返します。voidshape(char[] text, int start, int count) startとstart+countの間に出現する、テキスト内の数字を変換します。voidshape(char[] text, int start, int count, int context) 指定されたコンテキストを使用して、startとstart+countの間に出現するテキスト内の数字を変換します。voidshape(char[] text, int start, int count, NumericShaper.Range context) 提供されたcontextを使用して、startとstart + countの間に現れるテキストの数字を変換します。toString()この形状決定要因を記述するStringを返します。
- 
フィールド詳細- 
EUROPEANpublic static final int EUROPEANLatin-1 (ヨーロッパ言語)と拡張範囲、およびLatin-1 (ヨーロッパ言語)の10進数を識別します。- 関連項目:
 
- 
ARABICpublic static final int ARABICARABICの範囲と10進数を識別します。- 関連項目:
 
- 
EASTERN_ARABICpublic static final int EASTERN_ARABICARABICの範囲とARABIC_EXTENDEDの10進数を識別します。- 関連項目:
 
- 
DEVANAGARIpublic static final int DEVANAGARIDEVANAGARIの範囲と10進数を識別します。- 関連項目:
 
- 
BENGALIpublic static final int BENGALIBENGALIの範囲と10進数を識別します。- 関連項目:
 
- 
GURMUKHIpublic static final int GURMUKHIGURMUKHIの範囲と10進数を識別します。- 関連項目:
 
- 
GUJARATIpublic static final int GUJARATIGUJARATIの範囲と10進数を識別します。- 関連項目:
 
- 
ORIYApublic static final int ORIYAORIYAの範囲と10進数を識別します。- 関連項目:
 
- 
TAMILpublic static final int TAMILTAMILの範囲と10進数を識別します。- 関連項目:
 
- 
TELUGUpublic static final int TELUGUTELUGUの範囲と10進数を識別します。- 関連項目:
 
- 
KANNADApublic static final int KANNADAKANNADAの範囲と10進数を識別します。- 関連項目:
 
- 
MALAYALAMpublic static final int MALAYALAMMALAYALAMの範囲と10進数を識別します。- 関連項目:
 
- 
THAIpublic static final int THAITHAIの範囲と10進数を識別します。- 関連項目:
 
- 
LAOpublic static final int LAOLAOの範囲と10進数を識別します。- 関連項目:
 
- 
TIBETANpublic static final int TIBETANTIBETANの範囲と10進数を識別します。- 関連項目:
 
- 
MYANMARpublic static final int MYANMARMYANMARの範囲と10進数を識別します。- 関連項目:
 
- 
ETHIOPICpublic static final int ETHIOPICETHIOPICの範囲と10進数を識別します。- 関連項目:
 
- 
KHMERpublic static final int KHMERKHMERの範囲と10進数を識別します。- 関連項目:
 
- 
MONGOLIANpublic static final int MONGOLIANMONGOLIANの範囲と10進数を識別します。- 関連項目:
 
- 
ALL_RANGESpublic static final int ALL_RANGESすべての範囲を識別します。完全なコンテキスト依存の形状決定に使用します。この定数は、ビット・マスクベースのすべての範囲を指定します。 EnumSet.allOf(NumericShaper.Range.class)を使用して、列挙ベースの範囲をすべて指定します。- 関連項目:
 
 
- 
- 
メソッドの詳細- 
getShaperpublic static NumericShaper getShaper(int singleRange) 指定されたUnicodeの範囲に対する形状決定要因を返します。 Latin-1 (EUROPEAN)の数字はすべて、対応するUnicodeの10進数に変換されます。- パラメータ:
- singleRange- 指定されたUnicodeの範囲
- 戻り値:
- コンテキスト依存でない数字の形状決定要因
- スロー:
- IllegalArgumentException- 範囲が1つでない場合
 
- 
getShaperpublic static NumericShaper getShaper(NumericShaper.Range singleRange) 指定されたUnicodeの範囲に対する形状決定要因を返します。 Latin-1 (EUROPEAN)の数字はすべて、指定されたUnicode範囲の、対応する10進数に変換されます。- パラメータ:
- singleRange-- NumericShaper.Range定数で指定されたUnicode範囲。
- 戻り値:
- コンテキスト依存でないNumericShaper。
- スロー:
- NullPointerException-- singleRangeが- nullである場合
- 導入されたバージョン:
- 1.7
 
- 
getContextualShaperpublic static NumericShaper getContextualShaper(int ranges) 指定されたUnicodeの1つまたは複数の範囲に対する、コンテキスト依存の形状決定要因を返します。 範囲が指定された範囲の1つであれば、Latin-1 (EUROPEAN)の数字は前にあるテキストの範囲に対応する10進数に変換されます。 複数の範囲は、NumericShaper.ARABIC|NumericShaper.THAIのように、値の論理和によって表されます。 形状決定要因は、EUROPEANを開始コンテキストとして想定します。つまり、文字列内で方向性の強いテキストの前にEUROPEANの数字が検出された場合、コンテキストはEUROPEANであると見なされ、数字は形状決定されません。- パラメータ:
- ranges- 指定されたUnicodeの範囲
- 戻り値:
- 指定された範囲に対する形状決定要因
 
- 
getContextualShaperpublic static NumericShaper getContextualShaper(Set<NumericShaper.Range> ranges) 指定されたUnicodeの1つまたは複数の範囲に対する、コンテキスト依存の形状決定要因を返します。 範囲が指定された範囲の1つであれば、Latin-1 (EUROPEAN)の数字は前にあるテキストの範囲に対応する10進数に変換されます。形状決定要因は、EUROPEANを開始コンテキストとして想定します。つまり、文字列内で方向性の強いテキストの前にEUROPEANの数字が検出された場合、コンテキストはEUROPEANであると見なされ、数字は形状決定されません。 - パラメータ:
- ranges- 指定されたUnicodeの範囲
- 戻り値:
- 指定された範囲に対するコンテキスト依存の形状決定要因
- スロー:
- NullPointerException-- rangesが- nullである場合。
- 導入されたバージョン:
- 1.7
 
- 
getContextualShaperpublic static NumericShaper getContextualShaper(int ranges, int defaultContext) 指定されたUnicodeの1つまたは複数の範囲に対する、コンテキスト依存の形状決定要因を返します。 範囲が指定された範囲の1つであれば、Latin-1 (EUROPEAN)の数字は前にあるテキストの範囲に対応する10進数に変換されます。 複数の範囲は、NumericShaper.ARABIC|NumericShaper.THAIのように、値の論理和によって表されます。 形状決定要因は、defaultContextを開始コンテキストとして使います。- パラメータ:
- ranges- 指定されたUnicodeの範囲
- defaultContext-- NumericShaper.EUROPEANのような開始コンテキスト
- 戻り値:
- 指定されたUnicodeの範囲に対する形状決定要因。
- スロー:
- IllegalArgumentException- 指定された- defaultContextが単一の有効な範囲でない場合。
 
- 
getContextualShaperpublic static NumericShaper getContextualShaper(Set<NumericShaper.Range> ranges, NumericShaper.Range defaultContext) 指定されたUnicodeの1つまたは複数の範囲に対する、コンテキスト依存の形状決定要因を返します。 範囲が指定された範囲の1つであれば、Latin-1 (EUROPEAN)の数字は前にあるテキストの範囲に対応する10進数に変換されます。 形状決定要因は、defaultContextを開始コンテキストとして使います。- パラメータ:
- ranges- 指定されたUnicodeの範囲
- defaultContext-- NumericShaper.Range.EUROPEANのような開始コンテキスト
- 戻り値:
- 指定されたUnicode範囲に対するコンテキスト依存の形状決定要因。
- スロー:
- NullPointerException-- rangesまたは- defaultContextが- nullの場合
- 導入されたバージョン:
- 1.7
 
- 
shapepublic void shape(char[] text, int start, int count) startとstart+countの間に出現する、テキスト内の数字を変換します。- パラメータ:
- text- 変換する文字の配列
- start- 変換を開始する- text内のインデックス
- count-- text内の変換する文字数
- スロー:
- IndexOutOfBoundsException- startまたはstart+countが範囲外の場合
- NullPointerException- textがnullの場合
 
- 
shapepublic void shape(char[] text, int start, int count, int context) 指定されたコンテキストを使用して、startとstart+countの間に出現するテキスト内の数字を変換します。 形状決定要因がコンテキスト依存でない場合、コンテキストは無視されます。- パラメータ:
- text- 文字の配列
- start- 変換を開始する- text内のインデックス
- count-- text内の変換する文字数
- context-- NumericShaper.EUROPEANのような文字の変換先のコンテキスト
- スロー:
- IndexOutOfBoundsException- startまたはstart+countが範囲外の場合
- NullPointerException- textがnullの場合
- IllegalArgumentException- これがコンテキスト依存の形状決定要因であり、指定された- contextが単一の有効な範囲でない場合。
 
- 
shapepublic void shape(char[] text, int start, int count, NumericShaper.Range context) 提供されたcontextを使用して、startとstart + countの間に現れるテキストの数字を変換します。 形状決定要因がコンテキスト依存でない場合、Contextは無視されます。- パラメータ:
- text-- char配列
- start- 変換を開始する- text内のインデックス
- count-- text内の変換する- charの数
- context-- NumericShaper.Range.EUROPEANのような文字の変換先のコンテキスト
- スロー:
- IndexOutOfBoundsException-- startまたは- start+countが範囲外にある場合
- NullPointerException-- textまたは- contextがnullの場合
- 導入されたバージョン:
- 1.7
 
- 
isContextualpublic boolean isContextual()この形状決定要因がコンテキスト依存かどうかを示すbooleanを返します。- 戻り値:
- この形状決定要因がコンテキスト依存の場合はtrue、そうでない場合はfalse。
 
- 
getRangespublic int getRanges()形状決定を行うすべての範囲に対する値の論理和を求めるintを返します。たとえば、アラビア語への形状決定が行われるかどうかを調べるには、次のようにします。 if ((shaper.getRanges() & shaper.ARABIC) != 0) { ...このメソッドはビット・マスクベースの範囲だけをサポートしています。 enumベースの範囲の場合は getRangeSet()を呼び出してください。- 戻り値:
- 形状決定を行うすべての範囲に対する値。
 
- 
getRangeSetpublic Set<NumericShaper.Range> getRangeSet()形状決定を行うこのNumericShaperのすべてのUnicode範囲を表すSetを返します。- 戻り値:
- 形状決定を行うすべてのUnicode範囲。
- 導入されたバージョン:
- 1.7
 
- 
hashCodepublic int hashCode()この形状決定要因のハッシュ・コードを返します。
- 
equalspublic boolean equals(Object o) 指定されたオブジェクトがNumericShaperのインスタンスで、範囲表現、ビット・マスク、または列挙と関係なく、これと同じ方法で形状決定を行う場合はtrueを返します。 たとえば、次のコードでは"true"が生成されます。NumericShaper ns1 = NumericShaper.getShaper(NumericShaper.ARABIC); NumericShaper ns2 = NumericShaper.getShaper(NumericShaper.Range.ARABIC); System.out.println(ns1.equals(ns2)); 
- 
toStringpublic String toString()この形状決定要因を記述するStringを返します。 このメソッドはデバッグの場合にだけ使用します。
 
-