- すべての実装されたインタフェース:
- Serializable
public final class NumericShaper extends Object implements 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 classNumericShaper.RangeNumericShaper.Rangeは固有の10進数を持つスクリプトのUnicode範囲を表します。
- 
フィールドのサマリーフィールド 修飾子と型 フィールド 説明 static intALL_RANGESすべての範囲を識別します。完全なコンテキスト依存の形状決定に使用します。static intARABICARABICの範囲と10進数を識別します。static intBENGALIBENGALIの範囲と10進数を識別します。static intDEVANAGARIDEVANAGARIの範囲と10進数を識別します。static intEASTERN_ARABICARABICの範囲とARABIC_EXTENDEDの10進数を識別します。static intETHIOPICETHIOPICの範囲と10進数を識別します。static intEUROPEANLatin-1 (ヨーロッパ言語)と拡張範囲、およびLatin-1 (ヨーロッパ言語)の10進数を識別します。static intGUJARATIGUJARATIの範囲と10進数を識別します。static intGURMUKHIGURMUKHIの範囲と10進数を識別します。static intKANNADAKANNADAの範囲と10進数を識別します。static intKHMERKHMERの範囲と10進数を識別します。static intLAOLAOの範囲と10進数を識別します。static intMALAYALAMMALAYALAMの範囲と10進数を識別します。static intMONGOLIANMONGOLIANの範囲と10進数を識別します。static intMYANMARMYANMARの範囲と10進数を識別します。static intORIYAORIYAの範囲と10進数を識別します。static intTAMILTAMILの範囲と10進数を識別します。static intTELUGUTELUGUの範囲と10進数を識別します。static intTHAITHAIの範囲と10進数を識別します。static intTIBETANTIBETANの範囲と10進数を識別します。
- 
メソッドのサマリー修飾子と型 メソッド 説明 booleanequals(Object o)指定されたオブジェクトが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つまたは複数の範囲に対する、コンテキスト依存の形状決定要因を返します。intgetRanges()形状決定を行うすべての範囲に対する値の論理和を求めるintを返します。Set<NumericShaper.Range>getRangeSet()形状決定を行うこのNumericShaperのすべてのUnicode範囲を表すSetを返します。static NumericShapergetShaper(int singleRange)指定されたUnicodeの範囲に対する形状決定要因を返します。static NumericShapergetShaper(NumericShaper.Range singleRange)指定されたUnicodeの範囲に対する形状決定要因を返します。inthashCode()この形状決定要因のハッシュ・コードを返します。booleanisContextual()この形状決定要因がコンテキスト依存かどうかを示す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の間に現れるテキストの数字を変換します。StringtoString()この形状決定要因を記述する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すべての範囲を識別します。完全なコンテキスト依存の形状決定に使用します。この定数は、ビット・マスクベースのすべての範囲を指定します。 enumベースのすべての範囲を指定するには、 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()この形状決定要因のハッシュ・コードを返します。- オーバーライド:
- hashCode、クラス:- Object
- 戻り値:
- この形状決定要因のハッシュ・コード。
- 関連項目:
- Object.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)); - オーバーライド:
- equals、クラス:- Object
- パラメータ:
- o- 次と比較する、指定されたオブジェクト:- NumericShaper
- 戻り値:
- oが- NumericShaperのインスタンスであり、同じ方法で形状決定を行う場合は- true、そうでない場合は- false。
- 関連項目:
- Object.equals(java.lang.Object)
 
- 
toStringpublic String toString()この形状決定要因を記述するStringを返します。 このメソッドはデバッグの場合にだけ使用します。
 
-