Класс NumericShaper
- Все реализованные интерфейсы:
Serializable
public final class NumericShaper extends Object implements Serializable
NumericShaper используется для преобразования арабских (европейских) цифр в другие десятичные цифры Юникода. Пользователи этого класса, в первую очередь, будут теми, кто хочет отобразить данные с использованием национальных форм цифр, но находят более удобным представлять данные внутри с использованием арабских (европейских) цифр. Этот класс не интерпретирует устаревший символ выбора числовой формы (U+206E). Экземпляры NumericShaper обычно применяются как атрибуты к тексту с атрибутом NUMERIC_SHAPING класса TextAttribute. Например, этот фрагмент кода вызывает преобразование европейских цифр в арабские в арабском контексте:
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<NumericShaper.Range> |
getRangeSet() |
Возвращает Set, представляющий все диапазоны Юникода в этом NumericShaper, которые будут отформатированы. |
static NumericShaper |
getShaper |
Возвращает форматировщик для указанного диапазона Юникода. |
static NumericShaper |
getShaper |
Возвращает форматировщик для указанного диапазона Юникода. |
int |
hashCode() |
Возвращает хеш-код для этого форматировщика. |
boolean |
isContextual() |
Возвращает значение, указывающее, выполняет ли этот форматировщик контекстное форматирование. |
void |
shape |
Преобразует цифры в тексте, которые находятся между start и start + count. |
void |
shape |
Преобразует цифры в тексте, которые находятся между start и start + count, используя предоставленный контекст. |
void |
shape |
Преобразует цифры в тексте, которые находятся между
start и start + count, используя предоставленный
context. |
String |
toString() |
Возвращает описание этого форматировщика. |
Краткое описание полей
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 в качестве начального контекста.- Parameters:
-
ranges- указанные диапазоны Юникода -
defaultContext- начальный контекст, напримерNumericShaper.EUROPEAN - Returns:
- формирователь для указанных диапазонов Юникода.
- Throws:
-
IllegalArgumentException- если указанныйdefaultContextне является единственным допустимым диапазоном.
getContextualShaper
public static NumericShaper getContextualShaper(Set<NumericShaper.Range> ranges, NumericShaper.Range defaultContext)
defaultContext в качестве начального контекста.- Parameters:
-
ranges- указанные диапазоны Юникода -
defaultContext- начальный контекст, напримерNumericShaper.Range.EUROPEAN - Returns:
- контекстный формирователь для указанных диапазонов Юникода.
- Throws:
-
NullPointerException- еслиrangesилиdefaultContextявляетсяnull - Since:
- 1.7
shape
public void shape(char[] text, int start, int count)
- Parameters:
-
text- массив символов для преобразования -
start- индекс вtextдля начала преобразования -
count- количество символов вtextдля преобразования - Throws:
-
IndexOutOfBoundsException- если start или start + count выходят за пределы границ -
NullPointerException- если text имеет значение null
shape
public void shape(char[] text, int start, int count, int context)
- Parameters:
-
text- массив символов -
start- индекс вtextдля начала преобразования -
count- количество символов вtextдля преобразования -
context- контекст для преобразования символов, напримерNumericShaper.EUROPEAN - Throws:
-
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 игнорируется, если формирователь не является контекстным формирователем.- Parameters:
-
text- массив символов -
char- индекс вtextдля начала преобразования -
count- количество символов вtextдля преобразования -
context- контекст для преобразования символов, напримерNumericShaper.Range.EUROPEAN - Throws:
-
IndexOutOfBoundsException- еслиstartилиstart + countвыходят за пределы границ -
NullPointerException- еслиtextилиcontextимеет значение null - Since:
- 1.7
isContextual
public boolean isContextual()
- Returns:
-
trueесли этот формирователь контекстный;falseв противном случае.
getRanges
public int getRanges()
Например, чтобы проверить, обрабатывает ли формирователь арабские цифры, можно использовать следующее:
if ((shaper.getRanges() & shaper.ARABIC) != 0) { ... Обратите внимание, что этот метод поддерживает только диапазоны на основе битовых масок. Для диапазонов на основе перечислений используйте метод getRangeSet().
- Returns:
- значения всех диапазонов для обработки.
getRangeSet
public Set<NumericShaper.Range> getRangeSet()
- Returns:
- все диапазоны Юникода для обработки.
- Since:
- 1.7
hashCode
public int hashCode()
- Overrides:
-
hashCodeв классеObject - Returns:
- хэш-код данного формирователя.
- See Also:
equals
public boolean equals(Object o)
NumericShaper ns1 = NumericShaper.getShaper(NumericShaper.ARABIC); NumericShaper ns2 = NumericShaper.getShaper(NumericShaper.Range.ARABIC); System.out.println(ns1.equals(ns2));
- Overrides:
-
equalsв классеObject - Parameters:
-
o- указанный объект для сравнения с этим формирователем - Returns:
-
true, если
oявляется экземпляром NumericShaper и формирует таким же образом; false в противном случае. - See Also:
toString
public String toString()
- Overrides:
-
toStringв классеObject - Returns:
- строку, описывающую данный формирователь.
© 1993, 2021, 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/17/docs/api/java.desktop/java/awt/font/NumericShaper.html