- java.lang.Object
-
- java.awt.font.NumericShaper
-
- 实现的所有接口
-
Serializable
public final class NumericShaper extends Object implements Serializable
NumericShaper类用于将Latin-1(欧洲)数字转换为其他Unicode十进制数字。 此类用户主要是希望使用国家数字形状显示数据的人,但发现使用Latin-1(欧洲)数字在内部表示数据更方便。 这不解释已弃用的数字形状选择器字符(U + 206E)。实例
NumericShaper通常作为属性应用于TextAttribute类的NUMERIC_SHAPING属性的文本。 例如,此代码段会导致TextLayout在阿拉伯语上下文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
NumericShaper.Range常量创建Set,例如:
基于枚举的范围是基于位掩码的超集。EnumSet.of(NumericShaper.Range.ARABIC, NumericShaper.Range.TAMIL)
如果两个接口是混合的(包括序列化),则Unicode范围值将映射到可能进行此类映射的对应项,例如
NumericShaper.Range.ARABICfrom / toNumericShaper.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
-
-
嵌套类汇总
嵌套类 变量和类型 类 描述 static classNumericShaper.RangeNumericShaper.Range表示具有其自己的十进制数字的Unicode范围。
-
字段汇总
字段 变量和类型 字段 描述 static intALL_RANGES标识所有范围,以进行完整的上下文整形。static intARABIC标识ARABIC范围和十进制基数。static intBENGALI标识BENGALI范围和十进制基数。static intDEVANAGARI标识DEVANAGARI范围和十进制基数。static intEASTERN_ARABIC标识ARABIC范围和ARABIC_EXTENDED十进制基数。static intETHIOPIC标识ETHIOPIC范围和十进制基数。static intEUROPEAN标识Latin-1(欧洲)和扩展范围,以及Latin-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范围和十进制基数。
-
方法摘要
所有方法 静态方法 实例方法 具体的方法 变量和类型 方法 描述 booleanequals(Object o)如果指定的对象是NumericShaper的实例并且形状与此实例完全相同,则返回true,无论范围表示,位掩码还是枚举。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,它将要形成的所有范围的值进行ORint。Set<NumericShaper.Range>getRangeSet()返回一个Set表示将要形成的此NumericShaper中的所有Unicode范围。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(欧洲)十进制基数。- 另请参见:
- 常数字段值
-
ARABIC
public static final int ARABIC
标识ARABIC范围和十进制基数。- 另请参见:
- 常数字段值
-
EASTERN_ARABIC
public static final int EASTERN_ARABIC
标识ARABIC范围和ARABIC_EXTENDED十进制基数。- 另请参见:
- 常数字段值
-
DEVANAGARI
public static final int DEVANAGARI
标识DEVANAGARI范围和十进制基数。- 另请参见:
- 常数字段值
-
BENGALI
public static final int BENGALI
标识BENGALI范围和十进制基数。- 另请参见:
- 常数字段值
-
GURMUKHI
public static final int GURMUKHI
标识GURMUKHI范围和十进制基数。- 另请参见:
- 常数字段值
-
GUJARATI
public static final int GUJARATI
标识GUJARATI范围和十进制基数。- 另请参见:
- 常数字段值
-
ORIYA
public static final int ORIYA
标识ORIYA范围和十进制基数。- 另请参见:
- 常数字段值
-
TAMIL
public static final int TAMIL
标识TAMIL范围和十进制基数。- 另请参见:
- 常数字段值
-
TELUGU
public static final int TELUGU
标识TELUGU范围和十进制基数。- 另请参见:
- 常数字段值
-
KANNADA
public static final int KANNADA
标识KANNADA范围和十进制基数。- 另请参见:
- 常数字段值
-
MALAYALAM
public static final int MALAYALAM
标识MALAYALAM范围和十进制基数。- 另请参见:
- 常数字段值
-
THAI
public static final int THAI
标识THAI范围和十进制基数。- 另请参见:
- 常数字段值
-
LAO
public static final int LAO
标识LAO范围和十进制基数。- 另请参见:
- 常数字段值
-
TIBETAN
public static final int TIBETAN
标识TIBETAN范围和十进制基数。- 另请参见:
- 常数字段值
-
MYANMAR
public static final int MYANMAR
标识MYANMAR范围和十进制基数。- 另请参见:
- 常数字段值
-
ETHIOPIC
public static final int ETHIOPIC
标识ETHIOPIC范围和十进制基数。- 另请参见:
- 常数字段值
-
KHMER
public static final int KHMER
标识KHMER范围和十进制基数。- 另请参见:
- 常数字段值
-
MONGOLIAN
public static final int MONGOLIAN
标识MONGOLIAN范围和十进制基数。- 另请参见:
- 常数字段值
-
ALL_RANGES
public static final int ALL_RANGES
标识所有范围,以进行完整的上下文整形。此常量指定所有基于位掩码的范围。 使用
EnumSet.allOf(NumericShaper.Range.class)指定所有基于枚举的范围。- 另请参见:
- 常数字段值
-
-
方法详细信息
-
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。 整形器假定EUROPEAN为起始上下文,也就是说,如果在字符串中的任何强方向文本之前遇到EUROPEAN数字,则上下文被假定为EUROPEAN,因此数字将不会形成。- 参数
-
ranges- 指定的Unicode范围 - 结果
- 指定范围的整形器
-
getContextualShaper
public static NumericShaper getContextualShaper(Set<NumericShaper.Range> ranges)
返回所提供的Unicode范围的上下文整形器。 如果范围是提供的范围之一,则Latin-1(EUROPEAN)数字将转换为与前一文本范围对应的十进制数字。整形器假定EUROPEAN为起始上下文,也就是说,如果在字符串中的任何强方向文本之前遇到EUROPEAN数字,则上下文被假定为EUROPEAN,因此数字将不会形成。
- 参数
-
ranges- 指定的Unicode范围 - 结果
- 指定范围的上下文整形器
- 异常
-
NullPointerException- 如果ranges是null。 - 从以下版本开始:
- 1.7
-
getContextualShaper
public static NumericShaper getContextualShaper(int ranges, int defaultContext)
返回所提供的unicode范围的上下文整形器。 如果范围是提供的范围之一,则Latin-1(EUROPEAN)数字将转换为与前一文本范围对应的十进制数字。 多个范围通过将这些值组合在一起来表示,例如,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- 如果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- 如果开始或开始+计数超出范围 -
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-char中的text的转换数量 -
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,它将所有要成形的范围的值进行ORint。例如,要检查整形器是否形状为阿拉伯语,您将使用以下内容:
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 - 结果
- 这个shaper的哈希码。
- 另请参见:
-
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)
-
-