Spec-Zone.ru › OpenJDK 21

Класс NumericShaper

java.lang.Object
java.awt.font.NumericShaper
Все реализованные интерфейсы:
Serializable
public final class NumericShaper extends Object implements Serializable
Класс NumericShaper используется для преобразования цифр Латинской-1 (европейские) в другие десятичные цифры Юникода. Пользователи этого класса, в основном, люди, которые хотят представить данные с использованием национальных форм цифр, но считают более удобным представлять данные во внутреннем виде с использованием цифр Латинской-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
Идентифицирует диапазон Латинской-1 (европейский) и расширенный диапазон, и десятичную базу Латинской-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, описывающее этот форматировщик.

Методы, объявленные в классе 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 - указанный диапазон Юникода
Возвращает:
неконтекстный числовой шейпер
Исключения:
IllegalArgumentException - если диапазон не является одиночным диапазоном

getShaper

public static NumericShaper getShaper(NumericShaper.Range singleRange)
Возвращает шейпер для указанного диапазона Юникода. Все цифры Latin-1 (EUROPEAN) преобразуются в соответствующие десятичные цифры указанного диапазона Юникода.
Параметры:
singleRange - диапазон Юникода, заданный константой 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 - указанные диапазоны Юникода
Возвращает:
шейпер для указанных диапазонов

getContextualShaper

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

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

Параметры:
ranges - указанные диапазоны Юникода
Возвращает:
контекстный шейпер для указанных диапазонов
Исключения:
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 - если текст равен 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 - если текст равен null
IllegalArgumentException - если это контекстный форматировщик, и указанный context не является одиночным допустимым диапазоном.

shape

public void shape(char[] text, int start, int count, NumericShaper.Range context)
Преобразует цифры в тексте, находящиеся между start и start + count, используя предоставленный context. Context игнорируется, если форматировщик не является контекстным.
Parameters:
text - массив char
start - индекс в text для начала преобразования
count - количество char в 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, 2023, 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/21/docs/api/java.desktop/java/awt/font/NumericShaper.html

Spec-Zone.ru

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