Класс Bidi
public final class Bidi extends Object
Объект Bidi предоставляет информацию о двунаправленной перестановке текста, на основе которого он был создан. Это необходимо, например, для правильного отображения текста на арабском или иврите. Для этих языков характерно смешанное направление письма: числа в них располагаются слева направо, а большинство другого текста — справа налево.
После создания объекта Bidi можно проверить, представлен ли в нём текст, целиком написанный слева направо или справа налево. Такие объекты очень лёгкие, а этот текст относительно легко обрабатывать.
Если текст состоит из нескольких фрагментов, сведения о них можно получить по индексу, запросив начало, конец и уровень фрагмента. Уровень задаёт как направление, так и «уровень вложенности» фрагмента с определённым направлением. Нечётные уровни соответствуют направлению справа налево, а чётные — слева направо. Например, уровень 0 соответствует тексту слева направо, уровень 1 — тексту справа налево, а уровень 2 — тексту слева направо, встроенному во фрагмент с направлением справа налево.
- Начиная с:
- 1.4
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final int |
DIRECTION_DEFAULT_LEFT_TO_RIGHT |
Константа, указывающая, что базовое направление определяется первым сильным символом направления в тексте согласно двунаправленному алгоритму Unicode. |
static final int |
DIRECTION_DEFAULT_RIGHT_TO_LEFT |
Константа, указывающая, что базовое направление определяется первым сильным символом направления в тексте согласно двунаправленному алгоритму Unicode. |
static final int |
DIRECTION_LEFT_TO_RIGHT |
Константа, указывающая, что базовое направление — слева направо. |
static final int |
DIRECTION_RIGHT_TO_LEFT |
Константа, указывающая, что базовое направление — справа налево. |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
Bidi |
Создаёт объект Bidi на основе заданного текста, сведений о встраивании и направлении. |
Bidi |
Создаёт объект Bidi на основе заданного абзаца текста и базового направления. |
Bidi |
Создаёт объект Bidi на основе заданного абзаца текста. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
baseIsLeftToRight() |
Возвращает true, если базовое направление — слева направо. |
Bidi |
createLineBidi |
Создаёт объект Bidi, представляющий сведения о двунаправленном тексте в строке абзаца, представленного текущим объектом Bidi. |
int |
getBaseLevel() |
Возвращает базовый уровень (0 для направления слева направо, 1 — справа налево). |
int |
getLength() |
Возвращает длину текста в строке. |
int |
getLevelAt |
Возвращает разрешённый уровень символа по указанному смещению. |
int |
getRunCount() |
Возвращает количество фрагментов уровня. |
int |
getRunLevel |
Возвращает уровень n-го логического фрагмента в этой строке. |
int |
getRunLimit |
Возвращает индекс символа, следующего за концом n-го логического фрагмента в этой строке, в виде смещения от начала строки. |
int |
getRunStart |
Возвращает индекс символа в начале n-го логического фрагмента в этой строке, в виде смещения от начала строки. |
boolean |
isLeftToRight() |
Возвращает true, если строка целиком состоит из текста слева направо и базовое направление — слева направо. |
boolean |
isMixed() |
Возвращает true, если направление строки не является ни направлением слева направо, ни направлением справа налево. |
boolean |
isRightToLeft() |
Возвращает true, если строка целиком состоит из текста справа налево и базовое направление — справа налево. |
static void |
reorderVisually |
Переставляет объекты в массиве в визуальном порядке на основе их уровней. |
static boolean |
requiresBidi |
Возвращает true, если указанный текст требует двунаправленного анализа. |
String |
toString() |
Отображает внутреннее состояние двунаправленного текста для отладки. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли этот объект какому-либо другому объекту. |
protected void |
finalize() |
Устарело, подлежит удалению: этот элемент API может быть удалён в будущей версии. Финализация устарела и может быть удалена в одном из следующих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного времени. |
Подробное описание полей
DIRECTION_LEFT_TO_RIGHT
public static final int DIRECTION_LEFT_TO_RIGHT
- См. также:
DIRECTION_RIGHT_TO_LEFT
public static final int DIRECTION_RIGHT_TO_LEFT
- См. также:
DIRECTION_DEFAULT_LEFT_TO_RIGHT
public static final int DIRECTION_DEFAULT_LEFT_TO_RIGHT
- См. также:
DIRECTION_DEFAULT_RIGHT_TO_LEFT
public static final int DIRECTION_DEFAULT_RIGHT_TO_LEFT
- См. также:
Подробное описание конструкторов
Bidi
public Bidi(String paragraph, int flags)
- Параметры:
-
paragraph— абзац текста -
flags— набор флагов, управляющих алгоритмом. Алгоритм распознаёт флаги DIRECTION_LEFT_TO_RIGHT, DIRECTION_RIGHT_TO_LEFT, DIRECTION_DEFAULT_LEFT_TO_RIGHT и DIRECTION_DEFAULT_RIGHT_TO_LEFT. Другие значения зарезервированы.
Bidi
public Bidi(AttributedCharacterIterator paragraph)
Атрибут RUN_DIRECTION в тексте, если он задан, определяет базовое направление (слева направо или справа налево). Если он не задан, базовое направление вычисляется с помощью двунаправленного алгоритма Unicode; если в тексте нет сильных символов направления, по умолчанию используется направление слева направо. Этот атрибут, если он задан, должен применяться ко всему тексту абзаца.
Атрибут BIDI_EMBEDDING в тексте, если он задан, представляет сведения об уровне встраивания. Отрицательные значения от -1 до -62 указывают на переопределение направления на уровне, равном абсолютному значению. Положительные значения от 1 до 62 указывают на встраивание. Если значение равно нулю или не задано, предполагается базовый уровень встраивания, определённый базовым направлением.
Атрибут NUMERIC_SHAPING в тексте, если он задан, преобразует европейские цифры в другие десятичные цифры перед запуском двунаправленного алгоритма. Этот атрибут, если он задан, должен применяться ко всему тексту абзаца.
- Параметры:
-
paragraph— абзац текста с необязательными сведениями об атрибутах символов и абзаца - См. также:
Bidi
public Bidi(char[] text, int textStart, byte[] embeddings, int embStart, int paragraphLength, int flags)
- Параметры:
-
text— массив, содержащий абзац текста для обработки. -
textStart— индекс начала абзаца в массиве текста. -
embeddings— массив, содержащий значения встраивания для каждого символа абзаца. Может иметь значение null; в этом случае предполагается, что внешние сведения о встраивании отсутствуют. -
embStart— индекс начала абзаца в массиве встраиваний. -
paragraphLength— длина абзаца в массивах текста и встраиваний. -
flags— набор флагов, управляющих алгоритмом. Алгоритм распознаёт флаги DIRECTION_LEFT_TO_RIGHT, DIRECTION_RIGHT_TO_LEFT, DIRECTION_DEFAULT_LEFT_TO_RIGHT и DIRECTION_DEFAULT_RIGHT_TO_LEFT. Другие значения зарезервированы.
Подробное описание методов
createLineBidi
public Bidi createLineBidi(int lineStart, int lineLimit)
- Параметры:
-
lineStart— смещение от начала абзаца до начала строки. -
lineLimit— смещение от начала абзаца до конца строки. - Возвращает:
- объект
Bidi
isMixed
public boolean isMixed()
- Возвращает:
- true, если направление строки не является ни направлением слева направо, ни направлением справа налево.
isLeftToRight
public boolean isLeftToRight()
- Возвращает:
- true, если строка целиком состоит из текста слева направо и базовое направление — слева направо
isRightToLeft
public boolean isRightToLeft()
- Возвращает:
- true, если строка целиком состоит из текста справа налево и базовое направление — справа налево
getLength
public int getLength()
- Возвращает:
- длину текста в строке
baseIsLeftToRight
public boolean baseIsLeftToRight()
- Возвращает:
- true, если базовое направление — слева направо
getBaseLevel
public int getBaseLevel()
- Возвращает:
- базовый уровень
getLevelAt
public int getLevelAt(int offset)
- Параметры:
-
offset— индекс символа, уровень которого требуется вернуть - Возвращает:
- разрешённый уровень символа по указанному смещению
getRunCount
public int getRunCount()
- Возвращает:
- количество фрагментов уровня
getRunLevel
public int getRunLevel(int run)
- Параметры:
-
run— индекс фрагмента от 0 доgetRunCount() - Возвращает:
- уровень фрагмента
getRunStart
public int getRunStart(int run)
- Параметры:
-
run— индекс фрагмента от 0 доgetRunCount() - Возвращает:
- начало фрагмента
getRunLimit
public int getRunLimit(int run)
- Параметры:
-
run— индекс фрагмента от 0 доgetRunCount() - Возвращает:
- конечную позицию фрагмента
requiresBidi
public static boolean requiresBidi(char[] text, int start, int limit)
- Параметры:
-
text— текст, содержащий проверяемые символы -
start— начало диапазона проверяемых символов -
limit— конец диапазона проверяемых символов - Возвращает:
- true, если диапазон символов требует двунаправленного анализа
reorderVisually
public static void reorderVisually(byte[] levels, int levelStart, Object[] objects, int objectStart, int count)
index до objectStart + count, начиная с objectStart, будут переставлены в визуальном порядке, исходя из того, что каждый фрагмент текста имеет уровень, заданный соответствующим элементом массива уровней (в позиции index - objectStart + levelStart).- Параметры:
-
levels— массив, представляющий двунаправленный уровень каждого объекта -
levelStart— начальная позиция в массиве уровней -
objects— массив объектов для перестановки в визуальном порядке -
objectStart— начальная позиция в массиве объектов -
count— количество объектов для перестановки
toString
© 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.