- java.lang.Object
-
- java.awt.font.NumericShaper
-
- すべての実装されたインタフェース:
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つが優先されます。
NumericShaper定数の優先順位 Unicode範囲 NumericShaper定数優先順位 アラビア語 NumericShaper.ARABIC
NumericShaper.EASTERN_ARABICNumericShaper.EASTERN_ARABICNumericShaper.Range.ARABIC
NumericShaper.Range.EASTERN_ARABICNumericShaper.Range.EASTERN_ARABICタイ・タム NumericShaper.Range.TAI_THAM_HORA
NumericShaper.Range.TAI_THAM_THAMNumericShaper.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進数を識別します。
-
メソッドのサマリー
すべてのメソッド staticメソッド インスタンス・メソッド 具象メソッド 修飾子と型 メソッド 説明 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を返します。
-
-
-
フィールドの詳細
-
EUROPEAN
public static final int EUROPEAN
Latin-1 (ヨーロッパ言語)と拡張範囲、およびLatin-1 (ヨーロッパ言語)の10進数を識別します。- 関連項目:
- 定数フィールド値
-
ARABIC
public static final int ARABIC
ARABICの範囲と10進数を識別します。- 関連項目:
- 定数フィールド値
-
EASTERN_ARABIC
public static final int EASTERN_ARABIC
ARABICの範囲とARABIC_EXTENDEDの10進数を識別します。- 関連項目:
- 定数フィールド値
-
DEVANAGARI
public static final int DEVANAGARI
DEVANAGARIの範囲と10進数を識別します。- 関連項目:
- 定数フィールド値
-
BENGALI
public static final int BENGALI
BENGALIの範囲と10進数を識別します。- 関連項目:
- 定数フィールド値
-
GURMUKHI
public static final int GURMUKHI
GURMUKHIの範囲と10進数を識別します。- 関連項目:
- 定数フィールド値
-
GUJARATI
public static final int GUJARATI
GUJARATIの範囲と10進数を識別します。- 関連項目:
- 定数フィールド値
-
ORIYA
public static final int ORIYA
ORIYAの範囲と10進数を識別します。- 関連項目:
- 定数フィールド値
-
TAMIL
public static final int TAMIL
TAMILの範囲と10進数を識別します。- 関連項目:
- 定数フィールド値
-
TELUGU
public static final int TELUGU
TELUGUの範囲と10進数を識別します。- 関連項目:
- 定数フィールド値
-
KANNADA
public static final int KANNADA
KANNADAの範囲と10進数を識別します。- 関連項目:
- 定数フィールド値
-
MALAYALAM
public static final int MALAYALAM
MALAYALAMの範囲と10進数を識別します。- 関連項目:
- 定数フィールド値
-
THAI
public static final int THAI
THAIの範囲と10進数を識別します。- 関連項目:
- 定数フィールド値
-
LAO
public static final int LAO
LAOの範囲と10進数を識別します。- 関連項目:
- 定数フィールド値
-
TIBETAN
public static final int TIBETAN
TIBETANの範囲と10進数を識別します。- 関連項目:
- 定数フィールド値
-
MYANMAR
public static final int MYANMAR
MYANMARの範囲と10進数を識別します。- 関連項目:
- 定数フィールド値
-
ETHIOPIC
public static final int ETHIOPIC
ETHIOPICの範囲と10進数を識別します。- 関連項目:
- 定数フィールド値
-
KHMER
public static final int KHMER
KHMERの範囲と10進数を識別します。- 関連項目:
- 定数フィールド値
-
MONGOLIAN
public static final int MONGOLIAN
MONGOLIANの範囲と10進数を識別します。- 関連項目:
- 定数フィールド値
-
ALL_RANGES
public static final int ALL_RANGES
すべての範囲を識別します。完全なコンテキスト依存の形状決定に使用します。この定数は、ビット・マスクベースのすべての範囲を指定します。 enumベースのすべての範囲を指定するには、
EnumSet.allOf(NumericShaper.Range.class)を使用します。- 関連項目:
- 定数フィールド値
-
-
メソッドの詳細
-
getShaper
public static NumericShaper getShaper(int singleRange)
指定されたUnicodeの範囲に対する形状決定要因を返します。 Latin-1 (EUROPEAN)の数字はすべて、対応するUnicodeの10進数に変換されます。- パラメータ:
singleRange- 指定されたUnicodeの範囲- 戻り値:
- コンテキスト依存でない数字の形状決定要因
- 例外:
IllegalArgumentException- 範囲が1つでない場合
-
getShaper
public static NumericShaper getShaper(NumericShaper.Range singleRange)
指定されたUnicodeの範囲に対する形状決定要因を返します。 Latin-1 (EUROPEAN)の数字はすべて、指定されたUnicode範囲の、対応する10進数に変換されます。- パラメータ:
singleRange-NumericShaper.Range定数で指定されたUnicode範囲。- 戻り値:
- コンテキスト依存でない
NumericShaper。 - 例外:
NullPointerException-singleRangeがnullである場合- 導入されたバージョン:
- 1.7
-
getContextualShaper
public static NumericShaper getContextualShaper(int ranges)
指定されたUnicodeの1つまたは複数の範囲に対する、コンテキスト依存の形状決定要因を返します。 範囲が指定された範囲の1つであれば、Latin-1 (EUROPEAN)の数字は前にあるテキストの範囲に対応する10進数に変換されます。 複数の範囲は、NumericShaper.ARABIC|NumericShaper.THAIのように、値の論理和によって表されます。 形状決定要因は、EUROPEANを開始コンテキストとして想定します。つまり、文字列内で方向性の強いテキストの前にEUROPEANの数字が検出された場合、コンテキストはEUROPEANであると見なされ、数字は形状決定されません。- パラメータ:
ranges- 指定されたUnicodeの範囲- 戻り値:
- 指定された範囲に対する形状決定要因
-
getContextualShaper
public static NumericShaper getContextualShaper(Set<NumericShaper.Range> ranges)
指定されたUnicodeの1つまたは複数の範囲に対する、コンテキスト依存の形状決定要因を返します。 範囲が指定された範囲の1つであれば、Latin-1 (EUROPEAN)の数字は前にあるテキストの範囲に対応する10進数に変換されます。形状決定要因は、EUROPEANを開始コンテキストとして想定します。つまり、文字列内で方向性の強いテキストの前にEUROPEANの数字が検出された場合、コンテキストはEUROPEANであると見なされ、数字は形状決定されません。
- パラメータ:
ranges- 指定されたUnicodeの範囲- 戻り値:
- 指定された範囲に対するコンテキスト依存の形状決定要因
- 例外:
NullPointerException-rangesがnullである場合。- 導入されたバージョン:
- 1.7
-
getContextualShaper
public 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が単一の有効な範囲でない場合。
-
getContextualShaper
public 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
-
shape
public void shape(char[] text, int start, int count)startとstart+countの間に出現する、テキスト内の数字を変換します。- パラメータ:
text- 変換する文字の配列start- 変換を開始するtext内のインデックスcount-text内の変換する文字数- 例外:
IndexOutOfBoundsException- startまたはstart+countが範囲外の場合NullPointerException- textがnullの場合
-
shape
public 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が単一の有効な範囲でない場合。
-
shape
public 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
-
isContextual
public boolean isContextual()
この形状決定要因がコンテキスト依存かどうかを示すbooleanを返します。- 戻り値:
- この形状決定要因がコンテキスト依存の場合は
true、そうでない場合はfalse。
-
getRanges
public int getRanges()
形状決定を行うすべての範囲に対する値の論理和を求めるintを返します。たとえば、アラビア語への形状決定が行われるかどうかを調べるには、次のようにします。
if ((shaper.getRanges() & shaper.ARABIC) != 0) { ...このメソッドはビット・マスクベースの範囲だけをサポートしています。 enumベースの範囲の場合は
getRangeSet()を呼び出してください。- 戻り値:
- 形状決定を行うすべての範囲に対する値。
-
getRangeSet
public Set<NumericShaper.Range> getRangeSet()
形状決定を行うこのNumericShaperのすべてのUnicode範囲を表すSetを返します。- 戻り値:
- 形状決定を行うすべてのUnicode範囲。
- 導入されたバージョン:
- 1.7
-
hashCode
public int hashCode()
この形状決定要因のハッシュ・コードを返します。- オーバーライド:
hashCode、クラス:Object- 戻り値:
- この形状決定要因のハッシュ・コード。
- 関連項目:
Object.hashCode()
-
equals
public 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)
-
-