Класс 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() |
Отображает внутреннее состояние двунаправленного текста для отладки. |
Подробное описание полей
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 и до objectStart + count будут упорядочены визуально, при этом предполагается, что уровень каждого текстового фрагмента указан соответствующим элементом массива levels (в 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/text/Bidi.html