Spec-Zone.ru › OpenJDK 25

Класс NumericShaper

java.lang.Object
java.awt.font.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 указано несколько наборов десятичных цифр, один из них будет иметь приоритет согласно следующим правилам.

Приоритет констант NumericShaper
Диапазон 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(Object o)
Возвращает true, если указанный объект является экземпляром NumericShaper и выполняет преобразование так же, как этот объект, независимо от представления диапазонов — битовой маской или перечислением.
static NumericShaper getContextualShaper(int ranges)
Возвращает контекстный преобразователь для указанных диапазонов Unicode.
static NumericShaper getContextualShaper(int ranges, int defaultContext)
Возвращает контекстный преобразователь для указанных диапазонов Unicode.
static NumericShaper getContextualShaper(Set<NumericShaper.Range> ranges)
Возвращает контекстный преобразователь для указанных диапазонов Unicode.
static NumericShaper getContextualShaper(Set<NumericShaper.Range> ranges, NumericShaper.Range defaultContext)
Возвращает контекстный преобразователь для указанных диапазонов Unicode.
int getRanges()
Возвращает int, объединяющий операцией OR значения всех диапазонов, для которых будет выполняться преобразование.
Set<NumericShaper.Range> getRangeSet()
Возвращает Set, представляющий все диапазоны Unicode в этом NumericShaper, для которых будет выполняться преобразование.
static NumericShaper getShaper(int singleRange)
Возвращает преобразователь для указанного диапазона Unicode.
static NumericShaper getShaper(NumericShaper.Range singleRange)
Возвращает преобразователь для указанного диапазона Unicode.
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

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

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 — указанные диапазоны 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, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/java/awt/font/NumericShaper.html

Spec-Zone.ru

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