Класс NumericShaper
- Все реализуемые интерфейсы:
Serializable
public final class NumericShaper extends Object implements Serializable
NumericShaper используется для преобразования цифр Latin-1 (европейских) в другие десятичные цифры Unicode. Этот класс предназначен главным образом для тех, кто хочет представлять данные с использованием национальных начертаний цифр, но считает более удобным внутренне представлять данные цифрами 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);
Диапазоны Unicode на основе битовых масок и перечислений
Этот класс поддерживает два разных программных интерфейса для представления диапазонов Unicode для цифр конкретных письменностей: на основе битовых масок, например NumericShaper.ARABIC, и на основе перечислений, например NumericShaper.Range.ARABIC. Можно указать несколько диапазонов, объединив константы на основе битовых масок операцией OR, например:
или создав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 указано несколько наборов десятичных цифр, один из них будет иметь приоритет согласно следующим правилам.
| Диапазон 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 enum |
NumericShaper.Range |
NumericShaper.Range представляет диапазон Unicode письменности, имеющей собственные десятичные цифры. |
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
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 |
Возвращает контекстный преобразователь для указанных диапазонов Unicode. |
static NumericShaper |
getContextualShaper |
Возвращает контекстный преобразователь для указанных диапазонов Unicode. |
static NumericShaper |
getContextualShaper |
Возвращает контекстный преобразователь для указанных диапазонов Unicode. |
static NumericShaper |
getContextualShaper |
Возвращает контекстный преобразователь для указанных диапазонов Unicode. |
int |
getRanges() |
Возвращает int, объединяющий операцией OR значения всех диапазонов, для которых будет выполняться преобразование. |
Set |
getRangeSet() |
Возвращает Set, представляющий все диапазоны Unicode в этом NumericShaper, для которых будет выполняться преобразование. |
static NumericShaper |
getShaper |
Возвращает преобразователь для указанного диапазона Unicode. |
static NumericShaper |
getShaper |
Возвращает преобразователь для указанного диапазона Unicode. |
int |
hashCode() |
Возвращает хеш-код этого преобразователя. |
boolean |
isContextual() |
Возвращает boolean, указывающее, выполняет ли этот преобразователь контекстное преобразование. |
void |
shape |
Преобразует цифры в тексте, расположенные между start и start + count. |
void |
shape |
Преобразует цифры в тексте, расположенные между start и start + count, используя указанный контекст. |
void |
shape |
Преобразует цифры в тексте, расположенные между
start и start + count, используя указанный
context. |
String |
toString() |
Возвращает String с описанием этого преобразователя. |
Подробное описание полей
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— указанные диапазоны 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/java/awt/font/NumericShaper.html