Spec-Zone.ru › OpenJDK 27

Класс NumericShaper

java.lang.Object
java.awt.font.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 Приоритет
Арабский 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(Object o)
Возвращает true, если указанный объект является экземпляром NumericShaper и выполняет такое же преобразование, как этот объект, независимо от представления диапазонов — битовой маски или перечисления.
static NumericShaper getContextualShaper(int ranges)
Возвращает контекстный преобразователь для указанных диапазонов Юникода.
static NumericShaper getContextualShaper(int ranges, int defaultContext)
Возвращает контекстный преобразователь для указанных диапазонов Юникода.
static NumericShaper getContextualShaper(Set<NumericShaper.Range> ranges)
Возвращает контекстный преобразователь для указанных диапазонов Юникода.
static NumericShaper getContextualShaper(Set<NumericShaper.Range> ranges, NumericShaper.Range defaultContext)
Возвращает контекстный преобразователь для указанных диапазонов Юникода.
int getRanges()
Возвращает int, объединяющий значения всех диапазонов, которые будут преобразованы.
Set<NumericShaper.Range> getRangeSet()
Возвращает Set, представляющий все диапазоны Юникода в этом NumericShaper, которые будут преобразованы.
static NumericShaper getShaper(int singleRange)
Возвращает преобразователь для указанного диапазона Юникода.
static NumericShaper getShaper(NumericShaper.Range singleRange)
Возвращает преобразователь для указанного диапазона Юникода.
int hashCode()
Возвращает хеш-код этого преобразователя.
boolean isContextual()
Возвращает boolean, указывающее, выполняет ли этот преобразователь контекстное преобразование.
void shape(char[] text, int start, int count)
Преобразует цифры в тексте, расположенные между start и start + count.
void shape(char[] text, int start, int count, int context)
Преобразует цифры в тексте, расположенные между start и start + count, с использованием указанного контекста.
void shape(char[] text, int start, int count, NumericShaper.Range context)
Преобразует цифры в тексте, расположенные между 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(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени.

Подробное описание полей

EUROPEAN

public static final int EUROPEAN
Обозначает диапазон Latin-1 (европейский) и расширенный диапазон, а также десятичную основу Latin-1 (европейский).
См. также:
  • Значения констант полей

ARABIC

public static final int ARABIC
Обозначает диапазон ARABIC и десятичную основу.
См. также:
  • Значения констант полей

EASTERN_ARABIC

public static final int EASTERN_ARABIC
Обозначает диапазон ARABIC и десятичную основу ARABIC_EXTENDED.
См. также:
  • Значения констант полей

DEVANAGARI

public static final int DEVANAGARI
Обозначает диапазон DEVANAGARI и десятичную основу.
См. также:
  • Значения констант полей

BENGALI

public static final int BENGALI
Обозначает диапазон BENGALI и десятичную основу.
См. также:
  • Значения констант полей

GURMUKHI

public static final int GURMUKHI
Обозначает диапазон GURMUKHI и десятичную основу.
См. также:
  • Значения констант полей

GUJARATI

public static final int GUJARATI
Обозначает диапазон GUJARATI и десятичную основу.
См. также:
  • Значения констант полей

ORIYA

public static final int ORIYA
Обозначает диапазон ORIYA и десятичную основу.
См. также:
  • Значения констант полей

TAMIL

public static final int TAMIL
Обозначает диапазон TAMIL и десятичную основу.
См. также:
  • Значения констант полей

TELUGU

public static final int TELUGU
Обозначает диапазон TELUGU и десятичную основу.
См. также:
  • Значения констант полей

KANNADA

public static final int KANNADA
Обозначает диапазон KANNADA и десятичную основу.
См. также:
  • Значения констант полей

MALAYALAM

public static final int MALAYALAM
Обозначает диапазон MALAYALAM и десятичную основу.
См. также:
  • Значения констант полей

THAI

public static final int THAI
Обозначает диапазон THAI и десятичную основу.
См. также:
  • Значения констант полей

LAO

public static final int LAO
Обозначает диапазон LAO и десятичную основу.
См. также:
  • Значения констант полей

TIBETAN

public static final int TIBETAN
Обозначает диапазон TIBETAN и десятичную основу.
См. также:
  • Значения констант полей

MYANMAR

public static final int MYANMAR
Обозначает диапазон MYANMAR и десятичную основу.
См. также:
  • Значения констант полей

ETHIOPIC

public static final int ETHIOPIC
Обозначает диапазон ETHIOPIC и десятичную основу.
См. также:
  • Значения констант полей

KHMER

public static final int KHMER
Обозначает диапазон KHMER и десятичную основу.
См. также:
  • Значения констант полей

MONGOLIAN

public static final int MONGOLIAN
Обозначает диапазон MONGOLIAN и десятичную основу.
См. также:
  • Значения констант полей

ALL_RANGES

public static final int ALL_RANGES
Обозначает все диапазоны для полной контекстной замены цифр.

Эта константа задает все диапазоны на основе битовых масок. Используйте EnumSet.allOf(NumericShaper.Range.class), чтобы задать все диапазоны на основе перечисления.

См. также:
  • Значения констант полей

Подробное описание методов

getShaper

public static NumericShaper getShaper(int singleRange)
Возвращает средство преобразования для заданного диапазона Unicode. Все цифры Latin-1 (EUROPEAN) преобразуются в соответствующие десятичные цифры Unicode.
Параметры:
singleRange — заданный диапазон Unicode
Возвращает:
неконтекстное средство преобразования чисел
Вызывает исключение:
IllegalArgumentException — если диапазон не является одним диапазоном

getShaper

public static NumericShaper getShaper(NumericShaper.Range singleRange)
Возвращает средство преобразования для заданного диапазона Unicode. Все цифры Latin-1 (EUROPEAN) преобразуются в соответствующие десятичные цифры заданного диапазона Unicode.
Параметры:
singleRange — диапазон Unicode, заданный константой NumericShaper.Range.
Возвращает:
неконтекстное средство преобразования NumericShaper.
Вызывает исключение:
NullPointerException — если singleRange равно null
Начиная с версии:
1.7

getContextualShaper

public static NumericShaper getContextualShaper(int ranges)
Возвращает контекстное средство преобразования для заданного диапазона или диапазонов Unicode. Цифры Latin-1 (EUROPEAN) преобразуются в десятичные цифры, соответствующие диапазону предшествующего текста, если этот диапазон входит в число заданных. Несколько диапазонов представляются объединением значений с помощью операции ИЛИ, например NumericShaper.ARABIC | NumericShaper.THAI. Средство преобразования предполагает, что начальный контекст — EUROPEAN: если цифры EUROPEAN встречаются в строке до любого текста с сильным направлением письма, считается, что контекст — EUROPEAN, и цифры не преобразуются. Любой бит в битовой маске ranges, не соответствующий распознанному значению, отбрасывается. Аналогично, если заданы два бита и один из них имеет приоритет, бит с меньшим приоритетом отбрасывается.
Параметры:
ranges — заданные диапазоны Unicode
Возвращает:
средство преобразования для заданных диапазонов

getContextualShaper

public static NumericShaper getContextualShaper(Set<NumericShaper.Range> ranges)
Возвращает контекстное средство преобразования для заданного диапазона или диапазонов Unicode. Цифры Latin-1 (EUROPEAN) преобразуются в десятичные цифры, соответствующие диапазону предшествующего текста, если этот диапазон входит в число заданных.

Средство преобразования предполагает, что начальный контекст — EUROPEAN: если цифры EUROPEAN встречаются в строке до любого текста с сильным направлением письма, считается, что контекст — EUROPEAN, и цифры не преобразуются. Если заданы два диапазона и один имеет приоритет перед другим, диапазон с меньшим приоритетом отбрасывается.

Параметры:
ranges — заданные диапазоны Unicode
Возвращает:
контекстное средство преобразования для заданных диапазонов
Вызывает исключение:
NullPointerException — если ranges равно null.
Начиная с версии:
1.7

getContextualShaper

public static NumericShaper getContextualShaper(int ranges, int defaultContext)
Возвращает контекстное средство преобразования для заданного диапазона или диапазонов Unicode. Цифры Latin-1 (EUROPEAN) преобразуются в десятичные цифры, соответствующие диапазону предшествующего текста, если этот диапазон входит в число заданных. Несколько диапазонов представляются объединением значений с помощью операции ИЛИ, например 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)
Возвращает контекстное средство преобразования для заданного диапазона или диапазонов Unicode. Цифры Latin-1 (EUROPEAN) преобразуются в десятичные цифры, соответствующие диапазону предшествующего текста, если этот диапазон входит в число заданных. Средство преобразования использует defaultContext в качестве начального контекста. Если заданы два диапазона и один имеет приоритет перед другим, диапазон с меньшим приоритетом отбрасывается.
Параметры:
ranges — заданные диапазоны Unicode
defaultContext — начальный контекст, например NumericShaper.Range.EUROPEAN
Возвращает:
контекстное средство преобразования для заданных диапазонов Unicode.
Вызывает исключение:
NullPointerException — если ranges или defaultContext равно null
Начиная с версии:
1.7

shape

public void shape(char[] text, int start, int count)
Преобразует цифры в тексте, расположенные между start и start + 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)
Преобразует цифры в тексте, расположенные между start и start + count, используя заданный контекст. Контекст игнорируется, если средство преобразования не является контекстным.
Параметры:
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) &#123; ...

Обратите внимание, что этот метод поддерживает только диапазоны на основе битовых масок. Для диапазонов на основе перечисления вызывайте getRangeSet().

Возвращает:
значения всех диапазонов, для которых будет выполняться преобразование.

getRangeSet

public Set<NumericShaper.Range> getRangeSet()
Возвращает Set, представляющий все диапазоны Unicode в этом NumericShaper, для которых будет выполняться преобразование.
Возвращает:
все диапазоны Unicode, для которых будет выполняться преобразование.
Начиная с версии:
1.7

hashCode

public int hashCode()
Возвращает хеш-код этого средства преобразования.
Переопределяет:
hashCode в классе Object
Возвращает:
хеш-код этого средства преобразования.
См. также:
  • Object.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));
Переопределяет:
equals в классе Object
Параметры:
o — объект, который требуется сравнить с этим NumericShaper
Возвращает:
true, если o является экземпляром NumericShaper и выполняет такое же преобразование; в противном случае — false.
См. также:
  • Object.equals(java.lang.Object)

toString

public String toString()
Возвращает String, описывающий это средство преобразования. Этот метод используется только для отладки.
Переопределяет:
toString в классе Object
Возвращает:
String, описывающий это средство преобразования.

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API