Класс NumericShaper
- Все реализованные интерфейсы:
Serializable
public final class NumericShaper extends Object implements Serializable
NumericShaper используется для преобразования цифр латинской-1 (европейских) в другие десятичные цифры Unicode. Пользователями этого класса в первую очередь будут люди, которые хотят отобразить данные с использованием национальных начертаний цифр, но считают более удобным представлять данные внутри с использованием цифр латинской-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. Несколько диапазонов можно указать, объединив битовые маски, такие как:
или создав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 |
Идентифицирует диапазон латинской-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 |
Возвращает контекстный форматировщик для указанного(ых) диапазона(ов) Unicode. |
static NumericShaper |
getContextualShaper |
Возвращает контекстный форматировщик для указанного(ых) диапазона(ов) Unicode. |
static NumericShaper |
getContextualShaper |
Возвращает контекстный форматировщик для указанного(ых) диапазона(ов) Unicode. |
static NumericShaper |
getContextualShaper |
Возвращает контекстный форматировщик для указанного(ых) диапазона(ов) Unicode. |
int |
getRanges() |
Возвращает int, который объединяет значения для всех диапазонов, которые будут форматироваться. |
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, и поэтому цифры не будут форматироваться.
- Parameters:
-
ranges- указанные диапазоны Unicode - Returns:
- контекстный форматировщик для указанных диапазонов
- Throws:
-
NullPointerException- еслиrangesявляетсяnull. - Since:
- 1.7
getContextualShaper
public static NumericShaper getContextualShaper(int ranges, int defaultContext)
NumericShaper.ARABIC | NumericShaper.THAI. Форматировщик использует defaultContext как начальный контекст.- Parameters:
-
ranges- указанные диапазоны Unicode -
defaultContext- начальный контекст, например,NumericShaper.EUROPEAN - Returns:
- форматировщик для указанных диапазонов Unicode.
- Throws:
-
IllegalArgumentException- если указанныйdefaultContextне является одиночным допустимым диапазоном.
getContextualShaper
public static NumericShaper getContextualShaper(Set<NumericShaper.Range> ranges, NumericShaper.Range defaultContext)
defaultContext в качестве начального контекста.- Parameters:
-
ranges- указанные диапазоны Unicode -
defaultContext- начальный контекст, например,NumericShaper.Range.EUROPEAN - Returns:
- контекстный форматировщик для указанных диапазонов Unicode.
- 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- количество символов в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:
- все диапазоны Unicode для форматирования.
- Since:
- 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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/java/awt/font/NumericShaper.html