Класс NumericShaper
- java.lang.Object
-
- java.awt.font.NumericShaper
- Все реализованные интерфейсы:
- Serializable
public final class NumericShaper extends Object implements Serializable
Класс NumericShaper используется для преобразования латинских (европейских) цифр в другие десятичные цифры Юникода. Пользователи этого класса в основном будут людьми, которые хотят представлять данные, используя национальные формы цифр, но считают удобнее представлять данные в формате латинских (европейских) цифр. Это не интерпретирует устаревший символ селектора числовой формы (U+206E).
Экземпляры класса NumericShaper обычно применяются как атрибуты к тексту с атрибутом NUMERIC_SHAPING класса TextAttribute. Например, этот фрагмент кода приводит к тому, что 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); Диапазоны Юникода на основе битовых масок и перечислений
Этот класс поддерживает два различных программистских интерфейса для представления диапазонов Юникода для цифр, специфичных для сценария: на основе битовых масок, таких как NumericShaper.ARABIC, и на основе перечислений, таких как NumericShaper.Range.ARABIC. Несколько диапазонов можно указать, используя побитовое ИЛИ над битовыми масками, такими как:
NumericShaper.ARABIC | NumericShaper.TAMILили создав
Set с помощью констант NumericShaper.Range, таких как: EnumSet.of(NumericShaper.Scirpt.ARABIC, NumericShaper.Range.TAMIL)Перечисления диапазонов — это супермножество битовых масок.
Если оба интерфейса смешаны (включая сериализацию), значения диапазонов Юникода отображаются на свои аналоги, где такое отображение возможно, например, NumericShaper.Range.ARABIC из/в NumericShaper.ARABIC. Если указаны какие-либо неотображаемые значения диапазонов, такие как NumericShaper.Range.BALINESE, эти диапазоны игнорируются.
Преимущество десятичных цифр
Диапазон Юникода может содержать более одного набора десятичных цифр. Если для одного диапазона Юникода указано несколько наборов десятичных цифр, один из наборов будет иметь приоритет в соответствии со следующим порядком.
| Диапазон Юникода |
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 class |
NumericShaper.Range Диапазон Юникода представляет собой диапазон символов определенного сценария, имеющего собственные десятичные цифры. |
Поля
| Модификатор и тип | Поле и описание |
|---|---|
static int |
ALL_RANGES Идентифицирует все диапазоны для полного контекстного преобразования. |
static int |
ARABIC Идентифицирует диапазон ARABIC и десятичную базу. |
static int |
BENGALI Идентифицирует диапазон BENGALI и десятичную базу. |
static int |
DEVANAGARI Идентифицирует диапазон DEVANAGARI и десятичную базу. |
static int |
EASTERN_ARABIC Идентифицирует диапазон ARABIC и десятичную базу ARABIC_EXTENDED. |
static int |
ETHIOPIC Идентифицирует диапазон ETHIOPIC и десятичную базу. |
static int |
EUROPEAN Идентифицирует диапазон латинских (европейских) символов и расширенного диапазона, а также десятичную базу латинских (европейских) символов. |
static int |
GUJARATI Идентифицирует диапазон GUJARATI и десятичную базу. |
static int |
GURMUKHI Идентифицирует диапазон GURMUKHI и десятичную базу. |
static int |
KANNADA Идентифицирует диапазон KANNADA и десятичную базу. |
static int |
KHMER Идентифицирует диапазон KHMER и десятичную базу. |
static int |
LAO Идентифицирует диапазон LAO и десятичную базу. |
static int |
MALAYALAM Идентифицирует диапазон MALAYALAM и десятичную базу. |
static int |
MONGOLIAN Идентифицирует диапазон MONGOLIAN и десятичную базу. |
static int |
MYANMAR Идентифицирует диапазон MYANMAR и десятичную базу. |
static int |
ORIYA Идентифицирует диапазон ORIYA и десятичную базу. |
static int |
TAMIL Идентифицирует диапазон TAMIL и десятичную базу. |
static int |
TELUGU Идентифицирует диапазон TELUGU и десятичную базу. |
static int |
THAI Идентифицирует диапазон THAI и десятичную базу. |
static int |
TIBETAN Идентифицирует диапазон TIBETAN и десятичную базу. |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
boolean |
equals(Object o) Возвращает |
static NumericShaper |
getContextualShaper(int ranges) Возвращает контекстный преобразователь для указанного(ых) диапазона(ов) Юникода. |
static NumericShaper |
getContextualShaper(int ranges,
int defaultContext) Возвращает контекстный преобразователь для указанного(ых) диапазона(ов) Юникода. |
static NumericShaper |
getContextualShaper(Set<NumericShaper.Range> ranges) Возвращает контекстный преобразователь для указанного(ых) диапазона(ов) Юникода. |
static NumericShaper |
getContextualShaper(Set<NumericShaper.Range> ranges,
NumericShaper.Range defaultContext) Возвращает контекстный преобразователь для указанного(ых) диапазона(ов) Юникода. |
int |
getRanges() Возвращает |
Set<NumericShaper.Range> |
getRangeSet() Возвращает |
static NumericShaper |
getShaper(int singleRange) Возвращает преобразователь для указанного диапазона Юникода. |
static NumericShaper |
getShaper(NumericShaper.Range singleRange) Возвращает преобразователь для указанного диапазона Юникода. |
int |
hashCode() Возвращает код хэша для этого преобразователя. |
boolean |
isContextual() Возвращает |
void |
shape(char[] text,
int start,
int count) Преобразует цифры в тексте, которые встречаются между началом и началом + количеством. |
void |
shape(char[] text,
int start,
int count,
int context) Преобразует цифры в тексте, которые встречаются между началом и началом + количеством, используя предоставленный контекст. |
void |
shape(char[] text,
int start,
int count,
NumericShaper.Range context) Преобразует цифры в тексте, которые встречаются между |
String |
toString() Возвращает |
Методы, унаследованные от класса java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait Поля
EUROPEAN
public static final int EUROPEAN
Идентифицирует латинский-1 (европейский) диапазон и расширенный диапазон, а также латинский-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
Идентифицирует все диапазоны для полной контекстной обработки.
Эта константа указывает все диапазоны на основе битовых масок. Используйте EmunSet.allOf(NumericShaper.Range.class) для указания всех диапазонов на основе перечислений.
- См. также:
- Значения постоянных полей
Методы
getShaper
public static NumericShaper getShaper(int singleRange)
Возвращает обработчик для указанного диапазона Юникода. Все латинские-1 (ЕВРОПЕЙСКИЕ) цифры преобразуются в соответствующие десятичные цифры Юникода.
- Параметры:
-
singleRange- указанный диапазон Юникода - Возвращает:
- неконтекстуальный числовой обработчик
- Исключения:
-
IllegalArgumentException- если диапазон не является одиночным
getShaper
public static NumericShaper getShaper(NumericShaper.Range singleRange)
Возвращает обработчик для указанного диапазона Юникода. Все латинские-1 (ЕВРОПЕЙСКИЕ) цифры преобразуются в соответствующие десятичные цифры указанного диапазона Юникода.
- Параметры:
-
singleRange- диапазон Юникода, заданный константойNumericShaper.Range. - Возвращает:
- неконтекстуальный
NumericShaper. - Исключения:
-
NullPointerException- еслиsingleRangeявляетсяnull - С:
- 1.7
getContextualShaper
public static NumericShaper getContextualShaper(int ranges)
Возвращает контекстуальный обработчик для указанного(ых) диапазона(ов) Юникода. Латинские-1 (ЕВРОПЕЙСКИЕ) цифры преобразуются в десятичные цифры, соответствующие диапазону предыдущего текста, если диапазон входит в указанный список. Несколько диапазонов представлены объединением значений, например, NumericShaper.ARABIC | NumericShaper.THAI. Обработчик предполагает контекст EUROPEAN в качестве начального. То есть, если европейские цифры встречаются до любого текста со строгим направлением в строке, контекст предполагается европейским, и цифры не будут обработаны.
- Параметры:
-
ranges- указанный(ые) диапазон(ы) Юникода - Возвращает:
- обработчик для указанных диапазонов
getContextualShaper
public static NumericShaper getContextualShaper(Set<NumericShaper.Range> ranges)
Возвращает контекстуальный обработчик для указанного(ых) диапазона(ов) Юникода. Латинские-1 (ЕВРОПЕЙСКИЕ) цифры преобразуются в десятичные цифры, соответствующие диапазону предыдущего текста, если диапазон входит в указанный список.
Обработчик предполагает контекст EUROPEAN в качестве начального. То есть, если европейские цифры встречаются до любого текста со строгим направлением в строке, контекст предполагается европейским, и цифры не будут обработаны.
- Параметры:
-
ranges- указанный(ые) диапазон(ы) Юникода - Возвращает:
- контекстуальный обработчик для указанных диапазонов
- Исключения:
-
NullPointerException- еслиrangesявляетсяnull. - С:
- 1.7
getContextualShaper
public static NumericShaper getContextualShaper(int ranges,
int defaultContext) Возвращает контекстуальный обработчик для указанного(ых) диапазона(ов) Юникода. Латинские-1 (ЕВРОПЕЙСКИЕ) цифры будут преобразованы в десятичные цифры, соответствующие диапазону предыдущего текста, если диапазон входит в указанный список. Несколько диапазонов представлены объединением значений, например, NumericShaper.ARABIC | NumericShaper.THAI. Обработчик использует defaultContext в качестве начального контекста.
- Параметры:
-
ranges- указанный(ые) диапазон(ы) Юникода -
defaultContext- начальный контекст, например,NumericShaper.EUROPEAN - Возвращает:
- обработчик для указанных диапазонов Юникода.
- Исключения:
-
IllegalArgumentException- если указанныйdefaultContextне является одиночным допустимым диапазоном.
getContextualShaper
public static NumericShaper getContextualShaper(Set<NumericShaper.Range> ranges,
NumericShaper.Range defaultContext) Возвращает контекстуальный обработчик для указанного(ых) диапазона(ов) Юникода. Латинские-1 (ЕВРОПЕЙСКИЕ) цифры будут преобразованы в десятичные цифры, соответствующие диапазону предыдущего текста, если диапазон входит в указанный список. Обработчик использует defaultContext в качестве начального контекста.
- Параметры:
-
ranges- указанный(ые) диапазон(ы) Юникода -
defaultContext- начальный контекст, например,NumericShaper.Range.EUROPEAN - Возвращает:
- контекстуальный обработчик для указанных диапазонов Юникода.
- Исключения:
-
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- если текст равен 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) Преобразует цифры в тексте, которые встречаются между start и start + count, используя предоставленный context. Context игнорируется, если формирователь не является контекстным.
- Параметры:
-
text- массив типаchar -
start- индекс вtextдля начала преобразования -
count- количество элементовcharвtextдля преобразования -
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) { ...
Обратите внимание, что этот метод поддерживает только диапазоны на основе битовых масок. Для диапазонов на основе перечислений используйте getRangeSet().
- Возвращает:
- значения для всех диапазонов для формирования.
getRangeSet
public Set<NumericShaper.Range> getRangeSet()
Возвращает Set, представляющее все диапазоны Юникода в данном NumericShaper, которые будут сформированы.
- Возвращает:
- все диапазоны Юникода для формирования.
- С:
- 1.7
hashCode
public int hashCode()
Возвращает хэш-код для данного формирователя.
- Переопределяет:
-
hashCodeв классеObject - Возвращает:
- хэш-код данного формирователя.
- См. также:
Object.hashCode()
equals
public boolean equals(Object o)
Возвращает true, если указанный объект является экземпляром NumericShaper и формирует идентично этому, независимо от представления диапазонов, битовой маски или перечисления. Например, следующий код возвращает "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)
toString
public String toString()
Возвращает String, описывающее этот формирователь. Этот метод используется только для отладки.
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.