Класс NumericShaper
- Все реализованные интерфейсы:
Serializable
public final class NumericShaper extends Object implements Serializable
NumericShaper используется для преобразования цифр Латинской-1 (европейские) в другие десятичные цифры Юникода. Пользователи этого класса, в основном, люди, которые хотят представить данные с использованием национальных форм цифр, но считают более удобным представлять данные во внутреннем виде с использованием цифр Латинской-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 |
Идентифицирует диапазон Латинской-1 (европейский) и расширенный диапазон, и десятичную базу Латинской-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, описывающее этот форматировщик. |
Подробное описание полей
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- указанный диапазон Юникода - Возвращает:
- неконтекстный числовой шейпер
- Исключения:
-
IllegalArgumentException- если диапазон не является одиночным диапазоном
getShaper
public static NumericShaper getShaper(NumericShaper.Range singleRange)
- Параметры:
-
singleRange- диапазон Юникода, заданный константойNumericShaper.Range. - Возвращает:
- неконтекстный
NumericShaper. - Исключения:
-
NullPointerException- еслиsingleRangeявляетсяnull - С версии:
- 1.7
getContextualShaper
public static NumericShaper getContextualShaper(int ranges)
NumericShaper.ARABIC | NumericShaper.THAI. Шейпер предполагает EUROPEAN в качестве начального контекста, то есть, если цифры EUROPEAN встречаются до любого сильного направленного текста в строке, контекст считается EUROPEAN, и поэтому цифры не будут форматироваться.- Параметры:
-
ranges- указанные диапазоны Юникода - Возвращает:
- шейпер для указанных диапазонов
getContextualShaper
public static NumericShaper getContextualShaper(Set<NumericShaper.Range> ranges)
Шейпер предполагает EUROPEAN в качестве начального контекста, то есть, если цифры EUROPEAN встречаются до любого сильного направленного текста в строке, контекст считается EUROPEAN, и поэтому цифры не будут форматироваться.
- Параметры:
-
ranges- указанные диапазоны Юникода - Возвращает:
- контекстный шейпер для указанных диапазонов
- Исключения:
-
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- если текст равен 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- если текст равен null -
IllegalArgumentException- если это контекстный форматировщик, и указанныйcontextне является одиночным допустимым диапазоном.
shape
public void shape(char[] text, int start, int count, NumericShaper.Range context)
start и start + count, используя предоставленный
context. Context игнорируется, если форматировщик не является контекстным.- Parameters:
-
text- массивchar -
start- индекс вtextдля начала преобразования -
count- количествоcharв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)
true если указанный объект является экземпляром NumericShaper и форматирует идентично этому, независимо от представления диапазонов, битовой маски или перечисления. Например, следующий код генерирует "true". 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, 2023, 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/21/docs/api/java.desktop/java/awt/font/NumericShaper.html