Spec-Zone.ru › OpenJDK 24

Класс NumericShaper

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

Приоритет констант 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
Идентифицирует диапазон латинской-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)
Возвращает контекстный форматировщик для указанного(ых) диапазона(ов) 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
Определяет латинский-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, и поэтому цифры не будут форматироваться.

Parameters:
ranges - указанные диапазоны Unicode
Returns:
контекстный форматировщик для указанных диапазонов
Throws:
NullPointerException - если ranges является null.
Since:
1.7

getContextualShaper

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

getContextualShaper

public static NumericShaper getContextualShaper(Set<NumericShaper.Range> ranges, NumericShaper.Range defaultContext)
Возвращает контекстный форматировщик для указанного(ых) диапазона(ов) Unicode. Цифры Latin-1 (EUROPEAN) будут преобразованы в десятичные цифры, соответствующие диапазону предшествующего текста, если диапазон является одним из указанных диапазонов. Форматировщик использует defaultContext в качестве начального контекста.
Parameters:
ranges - указанные диапазоны Unicode
defaultContext - начальный контекст, например, NumericShaper.Range.EUROPEAN
Returns:
контекстный форматировщик для указанных диапазонов Unicode.
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 - количество символов в 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()
Возвращает множество, представляющее все диапазоны Unicode в этом форматировщике, которые будут форматироваться.
Returns:
все диапазоны Unicode для форматирования.
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, 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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/java/awt/font/NumericShaper.html

Spec-Zone.ru

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