- 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_ARABIC
NumericShaper.EASTERN_ARABIC
NumericShaper.Range.ARABIC
NumericShaper.Range.EASTERN_ARABIC
NumericShaper.Range.EASTERN_ARABIC
タイ・タム NumericShaper.Range.TAI_THAM_HORA
NumericShaper.Range.TAI_THAM_THAM
NumericShaper.Range.TAI_THAM_THAM
- 導入されたバージョン:
- 1.4
- 関連項目:
- 直列化された形式
-
-
ネストされたクラスのサマリー
ネストされたクラス 修飾子と型 クラス 説明 static class
NumericShaper.Range
NumericShaper.Range
は固有の10進数を持つスクリプトのUnicode範囲を表します。
-
フィールドのサマリー
フィールド 修飾子と型 フィールド 説明 static int
ALL_RANGES
すべての範囲を識別します。完全なコンテキスト依存の形状決定に使用します。static int
ARABIC
ARABICの範囲と10進数を識別します。static int
BENGALI
BENGALIの範囲と10進数を識別します。static int
DEVANAGARI
DEVANAGARIの範囲と10進数を識別します。static int
EASTERN_ARABIC
ARABICの範囲とARABIC_EXTENDEDの10進数を識別します。static int
ETHIOPIC
ETHIOPICの範囲と10進数を識別します。static int
EUROPEAN
Latin-1 (ヨーロッパ言語)と拡張範囲、およびLatin-1 (ヨーロッパ言語)の10進数を識別します。static int
GUJARATI
GUJARATIの範囲と10進数を識別します。static int
GURMUKHI
GURMUKHIの範囲と10進数を識別します。static int
KANNADA
KANNADAの範囲と10進数を識別します。static int
KHMER
KHMERの範囲と10進数を識別します。static int
LAO
LAOの範囲と10進数を識別します。static int
MALAYALAM
MALAYALAMの範囲と10進数を識別します。static int
MONGOLIAN
MONGOLIANの範囲と10進数を識別します。static int
MYANMAR
MYANMARの範囲と10進数を識別します。static int
ORIYA
ORIYAの範囲と10進数を識別します。static int
TAMIL
TAMILの範囲と10進数を識別します。static int
TELUGU
TELUGUの範囲と10進数を識別します。static int
THAI
THAIの範囲と10進数を識別します。static int
TIBETAN
TIBETANの範囲と10進数を識別します。
-
メソッドのサマリー
すべてのメソッド staticメソッド インスタンス・メソッド 具象メソッド 修飾子と型 メソッド 説明 boolean
equals(Object o)
指定されたオブジェクトがNumericShaper
のインスタンスで、範囲表現、ビット・マスク、または列挙と関係なく、これと同じ方法で形状決定を行う場合はtrue
を返します。static NumericShaper
getContextualShaper(int ranges)
指定されたUnicodeの1つまたは複数の範囲に対する、コンテキスト依存の形状決定要因を返します。static NumericShaper
getContextualShaper(int ranges, int defaultContext)
指定されたUnicodeの1つまたは複数の範囲に対する、コンテキスト依存の形状決定要因を返します。static NumericShaper
getContextualShaper(Set<NumericShaper.Range> ranges)
指定されたUnicodeの1つまたは複数の範囲に対する、コンテキスト依存の形状決定要因を返します。static NumericShaper
getContextualShaper(Set<NumericShaper.Range> ranges, NumericShaper.Range defaultContext)
指定されたUnicodeの1つまたは複数の範囲に対する、コンテキスト依存の形状決定要因を返します。int
getRanges()
形状決定を行うすべての範囲に対する値の論理和を求めるint
を返します。Set<NumericShaper.Range>
getRangeSet()
形状決定を行うこのNumericShaper
のすべてのUnicode範囲を表すSet
を返します。static NumericShaper
getShaper(int singleRange)
指定されたUnicodeの範囲に対する形状決定要因を返します。static NumericShaper
getShaper(NumericShaper.Range singleRange)
指定されたUnicodeの範囲に対する形状決定要因を返します。int
hashCode()
この形状決定要因のハッシュ・コードを返します。boolean
isContextual()
この形状決定要因がコンテキスト依存かどうかを示すboolean
を返します。void
shape(char[] text, int start, int count)
startとstart+countの間に出現する、テキスト内の数字を変換します。void
shape(char[] text, int start, int count, int context)
指定されたコンテキストを使用して、startとstart+countの間に出現するテキスト内の数字を変換します。void
shape(char[] text, int start, int count, NumericShaper.Range context)
提供されたcontext
を使用して、start
とstart + count
の間に現れるテキストの数字を変換します。String
toString()
この形状決定要因を記述する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)
-
-