Spec-Zone.ru › OpenJDK 17

Класс NumericShaper

java.lang.Object
java.awt.font.NumericShaper
Все реализованные интерфейсы:
Serializable
public final class NumericShaper extends Object implements Serializable
Класс NumericShaper используется для преобразования арабских (европейских) цифр в другие десятичные цифры Юникода. Пользователи этого класса, в первую очередь, будут теми, кто хочет отобразить данные с использованием национальных форм цифр, но находят более удобным представлять данные внутри с использованием арабских (европейских) цифр. Этот класс не интерпретирует устаревший символ выбора числовой формы (U+206E).

Экземпляры NumericShaper обычно применяются как атрибуты к тексту с атрибутом NUMERIC_SHAPING класса TextAttribute. Например, этот фрагмент кода вызывает преобразование европейских цифр в арабские в арабском контексте:

 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()
Возвращает значение, указывающее, выполняет ли этот форматировщик контекстное форматирование.
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()
Возвращает описание этого форматировщика.

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

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

Краткое описание полей

EUROPEAN

public static final int EUROPEAN
Идентифицирует латинский-1 (европейский) и расширенный диапазон, а также десятичную основу латинского-1 (европейского).
См. также:
  • Constant Field Values

ARABIC

public static final int ARABIC
Идентифицирует диапазон ARABIC и десятичную основу.
См. также:
  • Constant Field Values

EASTERN_ARABIC

public static final int EASTERN_ARABIC
Идентифицирует диапазон ARABIC и десятичную основу ARABIC_EXTENDED.
См. также:
  • Constant Field Values

DEVANAGARI

public static final int DEVANAGARI
Идентифицирует диапазон DEVANAGARI и десятичную основу.
См. также:
  • Constant Field Values

BENGALI

public static final int BENGALI
Идентифицирует диапазон BENGALI и десятичную основу.
См. также:
  • Constant Field Values

GURMUKHI

public static final int GURMUKHI
Идентифицирует диапазон GURMUKHI и десятичную основу.
См. также:
  • Constant Field Values

GUJARATI

public static final int GUJARATI
Идентифицирует диапазон GUJARATI и десятичную основу.
См. также:
  • Constant Field Values

ORIYA

public static final int ORIYA
Идентифицирует диапазон ORIYA и десятичную основу.
См. также:
  • Constant Field Values

TAMIL

public static final int TAMIL
Идентифицирует диапазон TAMIL и десятичную основу.
См. также:
  • Constant Field Values

TELUGU

public static final int TELUGU
Идентифицирует диапазон TELUGU и десятичную основу.
См. также:
  • Constant Field Values

KANNADA

public static final int KANNADA
Идентифицирует диапазон KANNADA и десятичную основу.
См. также:
  • Constant Field Values

MALAYALAM

public static final int MALAYALAM
Идентифицирует диапазон MALAYALAM и десятичную основу.
См. также:
  • Constant Field Values

THAI

public static final int THAI
Идентифицирует диапазон THAI и десятичную основу.
См. также:
  • Constant Field Values

LAO

public static final int LAO
Идентифицирует диапазон LAO и десятичную основу.
См. также:
  • Constant Field Values

TIBETAN

public static final int TIBETAN
Идентифицирует диапазон TIBETAN и десятичную основу.
См. также:
  • Constant Field Values

MYANMAR

public static final int MYANMAR
Идентифицирует диапазон MYANMAR и десятичную основу.
См. также:
  • Constant Field Values

ETHIOPIC

public static final int ETHIOPIC
Идентифицирует диапазон ETHIOPIC и десятичную основу.
См. также:
  • Constant Field Values

KHMER

public static final int KHMER
Идентифицирует диапазон KHMER и десятичную основу.
См. также:
  • Constant Field Values

MONGOLIAN

public static final int MONGOLIAN
Идентифицирует диапазон MONGOLIAN и десятичную основу.
См. также:
  • Constant Field Values

ALL_RANGES

public static final int ALL_RANGES
Идентифицирует все диапазоны для полного контекстного форматирования.

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

См. также:
  • Constant Field Values

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

getShaper

public static NumericShaper getShaper(int singleRange)
Возвращает шейпер для указанного диапазона юникода. Все цифры Latin-1 (EUROPEAN) преобразуются в соответствующие десятичные цифры юникода.
Параметры:
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)
Возвращает контекстный шейпер для указанного диапазона (диапазонов) юникода. Цифры 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)
Возвращает контекстный формирователь для указанного(ых) диапазона(ов) юникода. Цифры Latin-1 (EUROPEAN) будут преобразованы в десятичные цифры, соответствующие диапазону предшествующего текста, если диапазон является одним из указанных диапазонов. Несколько диапазонов представляются путём побитового ИЛИ значений, например, NumericShaper.ARABIC | NumericShaper.THAI. Формирователь использует defaultContext в качестве начального контекста.
Parameters:
ranges - указанные диапазоны Юникода
defaultContext - начальный контекст, например NumericShaper.EUROPEAN
Returns:
формирователь для указанных диапазонов Юникода.
Throws:
IllegalArgumentException - если указанный defaultContext не является единственным допустимым диапазоном.

getContextualShaper

public static NumericShaper getContextualShaper(Set<NumericShaper.Range> ranges, NumericShaper.Range defaultContext)
Возвращает контекстный формирователь для указанного(ых) диапазона(ов) Юникода. Цифры Latin-1 (EUROPEAN) будут преобразованы в десятичные цифры, соответствующие диапазону предшествующего текста, если диапазон является одним из указанных диапазонов. Формирователь использует defaultContext в качестве начального контекста.
Parameters:
ranges - указанные диапазоны Юникода
defaultContext - начальный контекст, например NumericShaper.Range.EUROPEAN
Returns:
контекстный формирователь для указанных диапазонов Юникода.
Throws:
NullPointerException - если ranges или defaultContext является null
Since:
1.7

shape

public void shape(char[] text, int start, int count)
Преобразует цифры в тексте, которые встречаются между start и start + count.
Parameters:
text - массив символов для преобразования
start - индекс в text для начала преобразования
count - количество символов в text для преобразования
Throws:
IndexOutOfBoundsException - если start или start + count выходят за пределы границ
NullPointerException - если text имеет значение null

shape

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

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

Returns:
значения всех диапазонов для обработки.

getRangeSet

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

hashCode

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

toString

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

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

Spec-Zone.ru

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