Класс NumericShaper
- java.lang.Object
-
- java.awt.font.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 |
|
Поля
| Модификатор и тип | Поле | Описание |
|---|---|---|
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) | Возвращает |
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() | Возвращает |
Set<NumericShaper.Range> | getRangeSet() | Возвращает |
static NumericShaper | getShaper(int singleRange) | Возвращает форматировщик для указанного диапазона Unicode. |
static NumericShaper | getShaper(NumericShaper.Range singleRange) | Возвращает форматировщик для указанного диапазона Unicode. |
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) | Преобразует цифры в тексте, которые встречаются между |
String | toString() | Возвращает |
Методы, объявленные в классе 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) { ...
Обратите внимание, что этот метод поддерживает только диапазоны, основанные на битовых масках. Для диапазонов, основанных на перечислении, вызовите 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()
Возвращает строку, описывающую данный формирователь. Этот метод используется только для отладки.
© 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