- java.lang.Object
-
- java.awt.font.NumericShaper
-
- All Implemented Interfaces:
-
Serializable
public final class NumericShaper extends Object implements Serializable
NumericShaper类用于将Latin-1(欧洲)数字转换为其他Unicode十进制数字。 这个类的用户主要是希望使用国家数字形状呈现数据的人,但是使用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);基于位掩码和基于枚举的Unicode范围
该类支持两种不同的编程接口来表示特定于脚本的数字的Unicode范围:基于位掩码的数据,例如
NumericShaper.ARABIC和基于枚举的数据,例如NumericShaper.Range.ARABIC。 可以通过ORing位掩码的常量来指定多个范围,例如:
或创建NumericShaper.ARABIC | NumericShaper.TAMIL
Set与NumericShaper.Range常量,如:
基于枚举的范围是基于位掩码的超级集。EnumSet.of(NumericShaper.Range.ARABIC, NumericShaper.Range.TAMIL)
如果两个接口混合(包括序列化),则Unicode范围值映射到可以进行映射的对应方,如
NumericShaper.Range.ARABIC从/到NumericShaper.ARABIC。 如果指定了任何不可映射的范围值,例如NumericShaper.Range.BALINESE,那么这些范围将被忽略。十进制数优先
Unicode范围可能有多个十进制数字。 如果为同一个Unicode范围指定了多个十进制数字集,则其中一个集合的优先级如下。
NumericShaper constants precedence Unicode RangeNumericShaperConstants Precedence ArabicNumericShaper.ARABIC
NumericShaper.EASTERN_ARABICNumericShaper.EASTERN_ARABICNumericShaper.Range.ARABIC
NumericShaper.Range.EASTERN_ARABICNumericShaper.Range.EASTERN_ARABICTai ThamNumericShaper.Range.TAI_THAM_HORA
NumericShaper.Range.TAI_THAM_THAMNumericShaper.Range.TAI_THAM_THAM- 从以下版本开始:
- 1.4
- 另请参见:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class 描述 static classNumericShaper.RangeANumericShaper.Range表示具有其自己的十进制数字的脚本的Unicode范围。
-
Field Summary
Fields Modifier and Type Field 描述 static intALL_RANGES识别所有范围,用于完整的上下文整形。static intARABIC标识ARABIC范围和十进制基数。static intBENGALI标识BENGALI范围和十进制基数。static intDEVANAGARI标识DEVANAGARI范围和十进制基数。static intEASTERN_ARABIC标识ARABIC范围和ARABIC_EXTENDED十进制基数。static intETHIOPIC标识ETHIOPIC范围和十进制基数。static intEUROPEAN确定拉丁语1(欧洲)和扩展范围以及拉丁语1(欧洲)十进制基数。static intGUJARATI标识GUJARATI范围和十进制基数。static intGURMUKHI标识GURMUKHI范围和十进制基数。static intKANNADA标识KANNADA范围和十进制基数。static intKHMER标识KHMER范围和十进制基数。static intLAO标识LAO范围和十进制基数。static intMALAYALAM标识MALAYALAM范围和十进制基数。static intMONGOLIAN标识MONGOLIAN范围和十进制基数。static intMYANMAR标识MYANMAR范围和十进制基数。static intORIYA标识ORIYA范围和十进制基数。static intTAMIL标识TAMIL范围和十进制基数。static intTELUGU标识TELUGU范围和十进制基数。static intTHAI标识THAI范围和十进制基数。static intTIBETAN标识TIBETAN范围和十进制基数。
-
方法摘要
所有方法 静态方法 接口方法 具体的方法 Modifier and Type 方法 描述 booleanequals(Object o)返回true如果指定的对象是NumericShaper的实例,并且其形状与此一样,与范围表示,位掩码或枚举无关。static NumericShapergetContextualShaper(int ranges)返回提供的unicode范围的上下文整形器。static NumericShapergetContextualShaper(int ranges, int defaultContext)返回提供的unicode范围的上下文整形器。static NumericShapergetContextualShaper(Set<NumericShaper.Range> ranges)返回提供的Unicode范围的上下文整形器。static NumericShapergetContextualShaper(Set<NumericShaper.Range> ranges, NumericShaper.Range defaultContext)返回提供的Unicode范围的上下文整形器。intgetRanges()返回一个int,将所有范围的值组合在一起。Set<NumericShaper.Range>getRangeSet()返回Set代表所有的Unicode范围在此NumericShaper将要成型。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
确定拉丁语1(欧洲)和扩展范围以及拉丁语1(欧洲)十进制基数。- 另请参见:
- Constant Field Values
-
ARABIC
public static final int ARABIC
标识ARABIC范围和十进制基数。- 另请参见:
- Constant Field Values
-
EASTERN_ARABIC
public static final int EASTERN_ARABIC
标识ARABIC范围和ARABIC_EXTENDED十进制基数。- 另请参见:
- Constant Field Values
-
DEVANAGARI
public static final int DEVANAGARI
标识DEVANAGARI范围和十进制基数。- 另请参见:
- Constant Field Values
-
BENGALI
public static final int BENGALI
标识BENGALI范围和十进制基数。- 另请参见:
- Constant Field Values
-
GURMUKHI
public static final int GURMUKHI
标识GURMUKHI范围和十进制基数。- 另请参见:
- Constant Field Values
-
GUJARATI
public static final int GUJARATI
标识GUJARATI范围和十进制基数。- 另请参见:
- Constant Field Values
-
ORIYA
public static final int ORIYA
标识ORIYA范围和十进制基数。- 另请参见:
- Constant Field Values
-
TAMIL
public static final int TAMIL
标识TAMIL范围和十进制基数。- 另请参见:
- Constant Field Values
-
TELUGU
public static final int TELUGU
标识TELUGU范围和十进制基数。- 另请参见:
- Constant Field Values
-
KANNADA
public static final int KANNADA
标识KANNADA范围和十进制基数。- 另请参见:
- Constant Field Values
-
MALAYALAM
public static final int MALAYALAM
标识MALAYALAM范围和十进制基数。- 另请参见:
- Constant Field Values
-
THAI
public static final int THAI
标识THAI范围和十进制基数。- 另请参见:
- Constant Field Values
-
LAO
public static final int LAO
标识LAO范围和十进制基数。- 另请参见:
- Constant Field Values
-
TIBETAN
public static final int TIBETAN
标识TIBETAN范围和十进制基数。- 另请参见:
- Constant Field Values
-
MYANMAR
public static final int MYANMAR
标识MYANMAR范围和十进制基数。- 另请参见:
- Constant Field Values
-
ETHIOPIC
public static final int ETHIOPIC
标识ETHIOPIC范围和十进制基数。- 另请参见:
- Constant Field Values
-
KHMER
public static final int KHMER
标识KHMER范围和十进制基数。- 另请参见:
- Constant Field Values
-
MONGOLIAN
public static final int MONGOLIAN
标识MONGOLIAN范围和十进制基数。- 另请参见:
- Constant Field Values
-
ALL_RANGES
public static final int ALL_RANGES
识别所有范围,用于完整的上下文整形。该常数指定所有基于位掩码的范围。 使用
EnumSet.allOf(NumericShaper.Range.class)指定所有基于枚举的范围。- 另请参见:
- Constant Field Values
-
-
方法详细信息
-
getShaper
public static NumericShaper getShaper(int singleRange)
返回提供的unicode范围的整形器。 所有Latin-1(EUROPEAN)数字转换为相应的十进制unicode数字。- 参数
-
singleRange- 指定的Unicode范围 - 结果
- 非上下文数字整形器
- 异常
-
IllegalArgumentException- 如果范围不是单个范围
-
getShaper
public static NumericShaper getShaper(NumericShaper.Range singleRange)
返回提供的Unicode范围的整形器。 所有Latin-1(EUROPEAN)数字都将转换为指定Unicode范围的相应十进制数字。- 参数
-
singleRange- 由NumericShaper.Range常量给出的Unicode范围。 - 结果
-
一个非上下文的
NumericShaper。 - 异常
-
NullPointerException- 如果singleRange是null - 从以下版本开始:
- 1.7
-
getContextualShaper
public static NumericShaper getContextualShaper(int ranges)
返回提供的unicode范围的上下文整形器。 如果范围是所提供的范围之一,则将Latin-1(EUROPEAN)数字转换为与前一文本范围相对应的十进制数字。 多个范围由值或值组合表示,例如NumericShaper.ARABIC | NumericShaper.THAI。 整形器以欧洲方式为起始语境,也就是说,如果字符串中任何强有力的方向文本之前遇到欧洲数字,则上下文被推定为欧洲,因此数字将不会变形。- 参数
-
ranges- 指定的Unicode范围 - 结果
- 指定范围的整形器
-
getContextualShaper
public static NumericShaper getContextualShaper(Set<NumericShaper.Range> ranges)
返回提供的Unicode范围的上下文整形器。 如果范围是提供的范围之一,则将Latin-1(EUROPEAN)数字转换为与前一文本范围相对应的十进制数字。整形器以欧洲方式为起始语境,也就是说,如果字符串中任何强有力的方向文本之前遇到欧洲数字,则上下文被推定为欧洲,因此数字将不会变形。
- 参数
-
ranges- 指定的Unicode范围 - 结果
- 指定范围的上下文整形器
- 异常
-
NullPointerException- 如果ranges是null。 - 从以下版本开始:
- 1.7
-
getContextualShaper
public static NumericShaper getContextualShaper(int ranges, int defaultContext)
返回提供的unicode范围的上下文整形器。 如果范围是提供的范围之一,则拉丁-1(欧洲)数字将被转换为对应于前一文本范围的十进制数字。 多个范围由值或值组合表示,例如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范围的上下文整形器。 如果范围是提供的范围之一,则Latin-1(EUROPEAN)数字将被转换为对应于前一文本范围的十进制数字。 整形器使用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- 如果启动或启动+计数超出范围 -
NullPointerException- 如果文本为空
-
shape
public void shape(char[] text, int start, int count, int context)使用提供的上下文转换在start和start + count之间发生的文本中的数字。 如果整形器不是上下文整形器,则忽略上下文。- 参数
-
text- 一个字符数组 -
start- 索引到text开始转换 -
count- 要转换的字符数text -
context- 转换为字符的上下文,如NumericShaper.EUROPEAN - 异常
-
IndexOutOfBoundsException- 如果启动或启动+计数超出范围 -
NullPointerException- 如果文本为空 -
IllegalArgumentException- 如果这是一个上下文整形器,并且指定的context不是单个有效范围。
-
shape
public void shape(char[] text, int start, int count, NumericShaper.Range context)使用提供的context转换出现在start和start + count之间的文本中的数字。 如果整形器不是上下文整形器,则忽略Context。- 参数
-
text- achar数组 -
start- 索引到text开始转换 -
count-数量charS INtext转换 -
context- 转换为字符的上下文,如NumericShaper.Range.EUROPEAN - 异常
-
IndexOutOfBoundsException- 如果start或start + count超出范围 -
NullPointerException- 如果text或context为空 - 从以下版本开始:
- 1.7
-
isContextual
public boolean isContextual()
返回一个boolean指示此成形器是否内容形状。- 结果
-
true如果这个整形器是上下文的; 否则为false。
-
getRanges
public int getRanges()
返回一个int,将所有范围的值组合在一起。例如,要检查整形器是否形状为阿拉伯语,您将使用以下内容:
if ((shaper.getRanges() & shaper.ARABIC) != 0) { ...请注意,此方法仅支持基于位掩码的范围。 请致电
getRangeSet()查询基于枚举的范围。- 结果
- 要形成的所有范围的值。
-
getRangeSet
public Set<NumericShaper.Range> getRangeSet()
返回Set代表所有的Unicode范围在此NumericShaper将要成型。- 结果
- 所有的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 - 结果
-
true如果o是实例NumericShaper种形状以同样的方式;false否则。 - 另请参见:
-
Object.equals(java.lang.Object)
-
-