Класс 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. Несколько диапазонов можно указать, объединив битовые маски, такие как:

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 class  NumericShaper.Range

NumericShaper.Range представляет собой диапазон Unicode для письменности, имеющей собственные десятичные цифры.

Поля

Модификатор и тип Поле Описание
static int ALL_RANGES

Идентифицирует все диапазоны для полной контекстной обработки.

static int ARABIC

Идентифицирует диапазон ARABIC и десятичную основу.

static int BENGALI

Идентифицирует диапазон BENGALI и десятичную основу.

static int DEVANAGARI

Идентифицирует диапазон DEVANAGARI и десятичную основу.

static int EASTERN_ARABIC

Идентифицирует диапазон ARABIC и десятичную основу ARABIC_EXTENDED.

static int ETHIOPIC

Идентифицирует диапазон ETHIOPIC и десятичную основу.

static int EUROPEAN

Идентифицирует диапазон Latin-1 (европейские) и расширенный, а также десятичную основу Latin-1 (европейские).

static int GUJARATI

Идентифицирует диапазон GUJARATI и десятичную основу.

static int GURMUKHI

Идентифицирует диапазон GURMUKHI и десятичную основу.

static int KANNADA

Идентифицирует диапазон KANNADA и десятичную основу.

static int KHMER

Идентифицирует диапазон KHMER и десятичную основу.

static int LAO

Идентифицирует диапазон LAO и десятичную основу.

static int MALAYALAM

Идентифицирует диапазон MALAYALAM и десятичную основу.

static int MONGOLIAN

Идентифицирует диапазон MONGOLIAN и десятичную основу.

static int MYANMAR

Идентифицирует диапазон MYANMAR и десятичную основу.

static int ORIYA

Идентифицирует диапазон ORIYA и десятичную основу.

static int TAMIL

Идентифицирует диапазон TAMIL и десятичную основу.

static int TELUGU

Идентифицирует диапазон TELUGU и десятичную основу.

static int THAI

Идентифицирует диапазон THAI и десятичную основу.

static 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, который объединяет побитовым ИЛИ значения для всех диапазонов, которые будут форматироваться.

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, который описывает этот форматировщик.

Методы, объявленные в классе java.lang.Object

clone, finalize, getClass, notify, notifyAll, wait, wait, wait

Поля

EUROPEAN

public static final int EUROPEAN

Идентифицирует диапазон Latin-1 (European) и расширенный диапазон, а также десятичную базу Latin-1 (European).

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

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)

Возвращает формирователь для заданного диапазона Юникода. Все цифры Latin-1 (ЕВРОПЕЙСКИЙ) преобразуются в соответствующие десятичные цифры Юникода.

Параметры:
singleRange - заданный диапазон Юникода
Возвращает:
неконтекстуальный числовой формирователь
Исключения:
IllegalArgumentException - если диапазон не является единичным диапазоном

getShaper

public static NumericShaper getShaper(NumericShaper.Range singleRange)

Возвращает формирователь для заданного диапазона Юникода. Все цифры Latin-1 (ЕВРОПЕЙСКИЙ) преобразуются в соответствующие десятичные цифры указанного диапазона Юникода.

Параметры:
singleRange - диапазон Юникода, заданный константой NumericShaper.Range.
Возвращает:
неконтекстуальный NumericShaper.
Исключения:
NullPointerException - если singleRange является null
С:
1.7

getContextualShaper

public static NumericShaper getContextualShaper(int ranges)

Возвращает контекстуальный формирователь для заданного диапазона(ов) Юникода. Цифры Latin-1 (ЕВРОПЕЙСКИЙ) преобразуются в десятичные цифры, соответствующие диапазону предшествующего текста, если диапазон является одним из указанных диапазонов. Несколько диапазонов представлены с помощью побитового ИЛИ, например, NumericShaper.ARABIC | NumericShaper.THAI. Формирователь предполагает начальный контекст ЕВРОПЕЙСКИЙ, то есть, если цифры ЕВРОПЕЙСКИЙ встречаются до любого сильного текстового направления в строке, контекст предполагается ЕВРОПЕЙСКИЙ, и поэтому цифры не будут форматироваться.

Параметры:
ranges - заданные диапазоны Юникода
Возвращает:
формирователь для указанных диапазонов

getContextualShaper

public static NumericShaper getContextualShaper(Set<NumericShaper.Range> ranges)

Возвращает контекстуальный формирователь для заданного диапазона(ов) Юникода. Цифры Latin-1 (ЕВРОПЕЙСКИЙ) преобразуются в десятичные цифры, соответствующие диапазону предшествующего текста, если диапазон является одним из указанных диапазонов.

Формирователь предполагает начальный контекст ЕВРОПЕЙСКИЙ, то есть, если цифры ЕВРОПЕЙСКИЙ встречаются до любого сильного текстового направления в строке, контекст предполагается ЕВРОПЕЙСКИЙ, и поэтому цифры не будут форматироваться.

Параметры:
ranges - заданные диапазоны Юникода
Возвращает:
контекстуальный формирователь для указанных диапазонов
Исключения:
NullPointerException - если ranges является null.
С:
1.7

getContextualShaper

public static NumericShaper getContextualShaper(int ranges,
                                                int defaultContext)

Возвращает контекстуальный формирователь для заданного диапазона(ов) Юникода. Цифры Latin-1 (ЕВРОПЕЙСКИЙ) будут преобразовываться в десятичные цифры, соответствующие диапазону предшествующего текста, если диапазон является одним из указанных диапазонов. Несколько диапазонов представлены с помощью побитового ИЛИ, например, NumericShaper.ARABIC | NumericShaper.THAI. Формирователь использует defaultContext как начальный контекст.

Параметры:
ranges - заданные диапазоны Юникода
defaultContext - начальный контекст, например, NumericShaper.EUROPEAN
Возвращает:
формирователь для указанных диапазонов Юникода.
Исключения:
IllegalArgumentException - если указанный defaultContext не является единичным допустимым диапазоном.

getContextualShaper

public static NumericShaper getContextualShaper(Set<NumericShaper.Range> ranges,
                                                NumericShaper.Range defaultContext)

Возвращает контекстуальный формирователь для заданного диапазона(ов) Юникода. Цифры Latin-1 (ЕВРОПЕЙСКИЙ) будут преобразовываться в десятичные цифры, соответствующие диапазону предшествующего текста, если диапазон является одним из указанных диапазонов. Формирователь использует defaultContext в качестве начального контекста.

Параметры:
ranges - заданные диапазоны Юникода
defaultContext - начальный контекст, например, NumericShaper.Range.EUROPEAN
Возвращает:
контекстуальный формирователь для указанных диапазонов Юникода.
Исключения:
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()

Возвращает значение, указывающее, форматирует ли данный формирователь контекстуально.

Возвращает:
true если этот формирователь контекстуальный; false в противном случае.

getRanges

public int getRanges()

Возвращает значение, которое объединяет побитовым ИЛИ значения всех диапазонов, которые будут форматироваться.

Например, чтобы проверить, форматирует ли формирователь арабский, используйте следующее:

if ((shaper.getRanges() & shaper.ARABIC) != 0) &#123; ...

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

Возвращает:
значения всех диапазонов для форматирования.

getRangeSet

public Set<NumericShaper.Range> getRangeSet()

Возвращает набор, представляющий все диапазоны Юникода в этом NumericShaper , которые будут форматироваться.

Возвращает:
все диапазоны Юникода для форматирования.
С:
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()

Возвращает строку, описывающую данный формирователь. Этот метод используется только для отладки.

Переопределяет:
toString в классе Object
Возвращает:
строку, описывающую данный формирователь.

© 1993, 2020, 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/11/docs/api/java.desktop/java/awt/font/NumericShaper.html

Spec-Zone .ru
спецификации, руководства, описания, API