Spec-Zone.ru › OpenJDK 8

Класс NumericShaper

  • java.lang.Object
    • java.awt.font.NumericShaper
Все реализованные интерфейсы:
Serializable

public final class NumericShaper
extends Object
implements Serializable

Класс NumericShaper используется для преобразования латинских (европейских) цифр в другие десятичные цифры Юникода. Пользователи этого класса в основном будут людьми, которые хотят представлять данные, используя национальные формы цифр, но считают удобнее представлять данные в формате латинских (европейских) цифр. Это не интерпретирует устаревший символ селектора числовой формы (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.Scirpt.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 class  NumericShaper.Range

Диапазон Юникода представляет собой диапазон символов определенного сценария, имеющего собственные десятичные цифры.

Поля

Модификатор и тип Поле и описание
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

Идентифицирует диапазон латинских (европейских) символов и расширенного диапазона, а также десятичную базу латинских (европейских) символов.

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)

Возвращает контекстный преобразователь для указанного(ых) диапазона(ов) Юникода.

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)

Преобразует цифры в тексте, которые встречаются между началом и началом + количеством.

void shape(char[] text, int start, int count, int context)

Преобразует цифры в тексте, которые встречаются между началом и началом + количеством, используя предоставленный контекст.

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

Идентифицирует латинский-1 (европейский) диапазон и расширенный диапазон, а также латинский-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

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

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

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

Методы

getShaper

public static NumericShaper getShaper(int singleRange)

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

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

getShaper

public static NumericShaper getShaper(NumericShaper.Range singleRange)

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

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

getContextualShaper

public static NumericShaper getContextualShaper(int ranges)

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

Параметры:
ranges - указанный(ые) диапазон(ы) Юникода
Возвращает:
обработчик для указанных диапазонов

getContextualShaper

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

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

Обработчик предполагает контекст EUROPEAN в качестве начального. То есть, если европейские цифры встречаются до любого текста со строгим направлением в строке, контекст предполагается европейским, и цифры не будут обработаны.

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

getContextualShaper

public static NumericShaper getContextualShaper(int ranges,
                                                int defaultContext)

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

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

getContextualShaper

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

Возвращает контекстуальный обработчик для указанного(ых) диапазона(ов) Юникода. Латинские-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 - если текст равен 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, представляющее все диапазоны Юникода в данном 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()

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

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

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

Spec-Zone.ru

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