Класс NumericShaper
- Все реализуемые интерфейсы:
Serializable
public final class NumericShaper extends Object implements Serializable
NumericShaper используется для преобразования цифр Latin-1 (европейских) в другие десятичные цифры Юникода. Этим классом будут пользоваться главным образом те, кто хочет отображать данные с использованием национальных начертаний цифр, но считает более удобным представлять данные внутри программы с использованием цифр Latin-1 (европейских). Этот класс не интерпретирует устаревший символ выбора начертания цифр (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.Range.ARABIC, NumericShaper.Range.TAMIL)
Если смешиваются два интерфейса (в том числе при сериализации), значения диапазонов Юникода сопоставляются с соответствующими значениями, если такое сопоставление возможно, например NumericShaper.Range.ARABIC из/в NumericShaper.ARABIC. Если указаны значения диапазонов, для которых невозможно выполнить сопоставление, например NumericShaper.Range.BALINESE, эти диапазоны игнорируются.
Приоритет десятичных цифр
Для диапазона Юникода может существовать несколько наборов десятичных цифр. Если для одного диапазона Юникода указано несколько наборов десятичных цифр, один из наборов получает приоритет согласно следующим правилам.
| Диапазон Юникода |
Константы 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 enum |
NumericShaper.Range |
NumericShaper.Range представляет диапазон Юникода письменности, имеющей собственные десятичные цифры. |
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final int |
ALL_RANGES |
Определяет все диапазоны для полного контекстного преобразования. |
static final int |
ARABIC |
Определяет диапазон ARABIC и десятичную систему счисления. |
static final int |
BENGALI |
Определяет диапазон BENGALI и десятичную систему счисления. |
static final int |
DEVANAGARI |
Определяет диапазон DEVANAGARI и десятичную систему счисления. |
static final int |
EASTERN_ARABIC |
Определяет диапазон ARABIC и десятичную систему счисления ARABIC_EXTENDED. |
static final int |
ETHIOPIC |
Определяет диапазон ETHIOPIC и десятичную систему счисления. |
static final int |
EUROPEAN |
Определяет диапазон Latin-1 (европейский) и расширенный диапазон, а также десятичную систему счисления Latin-1 (европейскую). |
static final int |
GUJARATI |
Определяет диапазон GUJARATI и десятичную систему счисления. |
static final int |
GURMUKHI |
Определяет диапазон GURMUKHI и десятичную систему счисления. |
static final int |
KANNADA |
Определяет диапазон KANNADA и десятичную систему счисления. |
static final int |
KHMER |
Определяет диапазон KHMER и десятичную систему счисления. |
static final int |
LAO |
Определяет диапазон LAO и десятичную систему счисления. |
static final int |
MALAYALAM |
Определяет диапазон MALAYALAM и десятичную систему счисления. |
static final int |
MONGOLIAN |
Определяет диапазон MONGOLIAN и десятичную систему счисления. |
static final int |
MYANMAR |
Определяет диапазон MYANMAR и десятичную систему счисления. |
static final int |
ORIYA |
Определяет диапазон ORIYA и десятичную систему счисления. |
static final int |
TAMIL |
Определяет диапазон TAMIL и десятичную систему счисления. |
static final int |
TELUGU |
Определяет диапазон TELUGU и десятичную систему счисления. |
static final int |
THAI |
Определяет диапазон THAI и десятичную систему счисления. |
static final int |
TIBETAN |
Определяет диапазон TIBETAN и десятичную систему счисления. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
equals |
Возвращает true, если указанный объект является экземпляром NumericShaper и выполняет такое же преобразование, как этот объект, независимо от представления диапазонов — битовой маски или перечисления. |
static NumericShaper |
getContextualShaper |
Возвращает контекстный преобразователь для указанных диапазонов Юникода. |
static NumericShaper |
getContextualShaper |
Возвращает контекстный преобразователь для указанных диапазонов Юникода. |
static NumericShaper |
getContextualShaper |
Возвращает контекстный преобразователь для указанных диапазонов Юникода. |
static NumericShaper |
getContextualShaper |
Возвращает контекстный преобразователь для указанных диапазонов Юникода. |
int |
getRanges() |
Возвращает int, объединяющий значения всех диапазонов, которые будут преобразованы. |
Set |
getRangeSet() |
Возвращает Set, представляющий все диапазоны Юникода в этом NumericShaper, которые будут преобразованы. |
static NumericShaper |
getShaper |
Возвращает преобразователь для указанного диапазона Юникода. |
static NumericShaper |
getShaper |
Возвращает преобразователь для указанного диапазона Юникода. |
int |
hashCode() |
Возвращает хеш-код этого преобразователя. |
boolean |
isContextual() |
Возвращает boolean, указывающее, выполняет ли этот преобразователь контекстное преобразование. |
void |
shape |
Преобразует цифры в тексте, расположенные между start и start + count. |
void |
shape |
Преобразует цифры в тексте, расположенные между start и start + count, с использованием указанного контекста. |
void |
shape |
Преобразует цифры в тексте, расположенные между
start и start + count, с использованием указанного
context. |
String |
toString() |
Возвращает String с описанием этого преобразователя. |
Методы, объявленные в классе Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API может быть удален в будущей версии. Финализация устарела и будет удалена в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
Подробное описание полей
EUROPEAN
public static final int EUROPEAN
- См. также:
ARABIC
public static final int ARABIC
- См. также:
EASTERN_ARABIC
public static final int EASTERN_ARABIC
- См. также:
DEVANAGARI
public static final int DEVANAGARI
- См. также:
BENGALI
public static final int BENGALI
- См. также:
GURMUKHI
public static final int GURMUKHI
- См. также:
GUJARATI
public static final int GUJARATI
- См. также:
ORIYA
public static final int ORIYA
- См. также:
TAMIL
public static final int TAMIL
- См. также:
TELUGU
public static final int TELUGU
- См. также:
KANNADA
public static final int KANNADA
- См. также:
MALAYALAM
public static final int MALAYALAM
- См. также:
THAI
public static final int THAI
- См. также:
LAO
public static final int LAO
- См. также:
TIBETAN
public static final int TIBETAN
- См. также:
MYANMAR
public static final int MYANMAR
- См. также:
ETHIOPIC
public static final int ETHIOPIC
- См. также:
KHMER
public static final int KHMER
- См. также:
MONGOLIAN
public static final int MONGOLIAN
- См. также:
ALL_RANGES
public static final int ALL_RANGES
Эта константа задает все диапазоны на основе битовых масок. Используйте EnumSet.allOf(NumericShaper.Range.class), чтобы задать все диапазоны на основе перечисления.
- См. также:
Подробное описание методов
getShaper
public static NumericShaper getShaper(int singleRange)
- Параметры:
-
singleRange— заданный диапазон Unicode - Возвращает:
- неконтекстное средство преобразования чисел
- Вызывает исключение:
-
IllegalArgumentException— если диапазон не является одним диапазоном
getShaper
public static NumericShaper getShaper(NumericShaper.Range singleRange)
- Параметры:
-
singleRange— диапазон Unicode, заданный константойNumericShaper.Range. - Возвращает:
- неконтекстное средство преобразования
NumericShaper. - Вызывает исключение:
-
NullPointerException— еслиsingleRangeравноnull - Начиная с версии:
- 1.7
getContextualShaper
public static NumericShaper getContextualShaper(int ranges)
NumericShaper.ARABIC | NumericShaper.THAI. Средство преобразования предполагает, что начальный контекст — EUROPEAN: если цифры EUROPEAN встречаются в строке до любого текста с сильным направлением письма, считается, что контекст — EUROPEAN, и цифры не преобразуются. Любой бит в битовой маске ranges, не соответствующий распознанному значению, отбрасывается. Аналогично, если заданы два бита и один из них имеет приоритет, бит с меньшим приоритетом отбрасывается.- Параметры:
-
ranges— заданные диапазоны Unicode - Возвращает:
- средство преобразования для заданных диапазонов
getContextualShaper
public static NumericShaper getContextualShaper(Set<NumericShaper.Range> ranges)
Средство преобразования предполагает, что начальный контекст — EUROPEAN: если цифры EUROPEAN встречаются в строке до любого текста с сильным направлением письма, считается, что контекст — EUROPEAN, и цифры не преобразуются. Если заданы два диапазона и один имеет приоритет перед другим, диапазон с меньшим приоритетом отбрасывается.
- Параметры:
-
ranges— заданные диапазоны Unicode - Возвращает:
- контекстное средство преобразования для заданных диапазонов
- Вызывает исключение:
-
NullPointerException— еслиrangesравноnull. - Начиная с версии:
- 1.7
getContextualShaper
public static NumericShaper getContextualShaper(int ranges, int defaultContext)
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)
defaultContext в качестве начального контекста. Если заданы два диапазона и один имеет приоритет перед другим, диапазон с меньшим приоритетом отбрасывается.- Параметры:
-
ranges— заданные диапазоны Unicode -
defaultContext— начальный контекст, напримерNumericShaper.Range.EUROPEAN - Возвращает:
- контекстное средство преобразования для заданных диапазонов Unicode.
- Вызывает исключение:
-
NullPointerException— еслиrangesилиdefaultContextравноnull - Начиная с версии:
- 1.7
shape
public void shape(char[] text, int start, int 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)
- Параметры:
-
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, представляющий все диапазоны Unicode в этом NumericShaper, для которых будет выполняться преобразование.- Возвращает:
- все диапазоны Unicode, для которых будет выполняться преобразование.
- Начиная с версии:
- 1.7
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));
toString
© 1993, 2025, 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.