Spec-Zone.ru › OpenJDK 27

Класс Bidi

java.lang.Object
java.text.Bidi
public final class Bidi extends Object
Этот класс реализует двунаправленный алгоритм Unicode.

Объект 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(char[] text, int textStart, byte[] embeddings, int embStart, int paragraphLength, int flags)
Создаёт объект Bidi на основе заданного текста, сведений о встраивании и направлении.
Bidi(String paragraph, int flags)
Создаёт объект Bidi на основе заданного абзаца текста и базового направления.
Bidi(AttributedCharacterIterator paragraph)
Создаёт объект Bidi на основе заданного абзаца текста.

Краткое описание методов

Модификатор и тип Метод Описание
boolean baseIsLeftToRight()
Возвращает true, если базовое направление — слева направо.
Bidi createLineBidi(int lineStart, int lineLimit)
Создаёт объект Bidi, представляющий сведения о двунаправленном тексте в строке абзаца, представленного текущим объектом Bidi.
int getBaseLevel()
Возвращает базовый уровень (0 для направления слева направо, 1 — справа налево).
int getLength()
Возвращает длину текста в строке.
int getLevelAt(int offset)
Возвращает разрешённый уровень символа по указанному смещению.
int getRunCount()
Возвращает количество фрагментов уровня.
int getRunLevel(int run)
Возвращает уровень n-го логического фрагмента в этой строке.
int getRunLimit(int run)
Возвращает индекс символа, следующего за концом n-го логического фрагмента в этой строке, в виде смещения от начала строки.
int getRunStart(int run)
Возвращает индекс символа в начале n-го логического фрагмента в этой строке, в виде смещения от начала строки.
boolean isLeftToRight()
Возвращает true, если строка целиком состоит из текста слева направо и базовое направление — слева направо.
boolean isMixed()
Возвращает true, если направление строки не является ни направлением слева направо, ни направлением справа налево.
boolean isRightToLeft()
Возвращает true, если строка целиком состоит из текста справа налево и базовое направление — справа налево.
static void reorderVisually(byte[] levels, int levelStart, Object[] objects, int objectStart, int count)
Переставляет объекты в массиве в визуальном порядке на основе их уровней.
static boolean requiresBidi(char[] text, int start, int limit)
Возвращает true, если указанный текст требует двунаправленного анализа.
String toString()
Отображает внутреннее состояние двунаправленного текста для отладки.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект какому-либо другому объекту.
protected void finalize()
Устарело, подлежит удалению: этот элемент API может быть удалён в будущей версии.
Финализация устарела и может быть удалена в одном из следующих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова 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
Константа, указывающая, что базовое направление определяется первым сильным символом направления в тексте согласно двунаправленному алгоритму Unicode. Если сильных символов направления нет, базовым направлением считается направление слева направо.
См. также:
  • Значения константных полей

DIRECTION_DEFAULT_RIGHT_TO_LEFT

public static final int DIRECTION_DEFAULT_RIGHT_TO_LEFT
Константа, указывающая, что базовое направление определяется первым сильным символом направления в тексте согласно двунаправленному алгоритму Unicode. Если сильных символов направления нет, базовым направлением считается направление справа налево.
См. также:
  • Значения константных полей

Подробное описание конструкторов

Bidi

public Bidi(String paragraph, int flags)
Создаёт объект Bidi на основе заданного абзаца текста и базового направления.
Параметры:
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)
Создаёт объект Bidi на основе заданного абзаца текста.

Атрибут RUN_DIRECTION в тексте, если он задан, определяет базовое направление (слева направо или справа налево). Если он не задан, базовое направление вычисляется с помощью двунаправленного алгоритма Unicode; если в тексте нет сильных символов направления, по умолчанию используется направление слева направо. Этот атрибут, если он задан, должен применяться ко всему тексту абзаца.

Атрибут BIDI_EMBEDDING в тексте, если он задан, представляет сведения об уровне встраивания. Отрицательные значения от -1 до -62 указывают на переопределение направления на уровне, равном абсолютному значению. Положительные значения от 1 до 62 указывают на встраивание. Если значение равно нулю или не задано, предполагается базовый уровень встраивания, определённый базовым направлением.

Атрибут NUMERIC_SHAPING в тексте, если он задан, преобразует европейские цифры в другие десятичные цифры перед запуском двунаправленного алгоритма. Этот атрибут, если он задан, должен применяться ко всему тексту абзаца.

Параметры:
paragraph — абзац текста с необязательными сведениями об атрибутах символов и абзаца
См. также:
  • TextAttribute.BIDI_EMBEDDING
  • TextAttribute.NUMERIC_SHAPING
  • TextAttribute.RUN_DIRECTION

Bidi

public Bidi(char[] text, int textStart, byte[] embeddings, int embStart, int paragraphLength, int flags)
Создаёт объект Bidi на основе заданного текста, сведений о встраивании и направлении. Массив встраиваний может иметь значение null. Если он задан, его значения представляют сведения об уровне встраивания. Отрицательные значения от -1 до -61 указывают на переопределение направления на уровне, равном абсолютному значению. Положительные значения от 1 до 61 указывают на встраивание. Если значение равно нулю, предполагается базовый уровень встраивания, определённый базовым направлением.
Параметры:
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)
Создаёт объект Bidi, представляющий сведения о двунаправленном тексте в строке абзаца, представленного текущим объектом Bidi. Этот вызов не требуется, если весь абзац помещается в одну строку.
Параметры:
lineStart — смещение от начала абзаца до начала строки.
lineLimit — смещение от начала абзаца до конца строки.
Возвращает:
объект Bidi

isMixed

public boolean isMixed()
Возвращает true, если направление строки не является ни направлением слева направо, ни направлением справа налево. Это означает, что строка либо содержит смешанные фрагменты текста с направлениями слева направо и справа налево, либо базовое направление отличается от направления единственного текстового фрагмента.
Возвращает:
true, если направление строки не является ни направлением слева направо, ни направлением справа налево.

isLeftToRight

public boolean isLeftToRight()
Возвращает true, если строка целиком состоит из текста слева направо и базовое направление — слева направо.
Возвращает:
true, если строка целиком состоит из текста слева направо и базовое направление — слева направо

isRightToLeft

public boolean isRightToLeft()
Возвращает true, если строка целиком состоит из текста справа налево и базовое направление — справа налево.
Возвращает:
true, если строка целиком состоит из текста справа налево и базовое направление — справа налево

getLength

public int getLength()
Возвращает длину текста в строке.
Возвращает:
длину текста в строке

baseIsLeftToRight

public boolean baseIsLeftToRight()
Возвращает true, если базовое направление — слева направо.
Возвращает:
true, если базовое направление — слева направо

getBaseLevel

public int getBaseLevel()
Возвращает базовый уровень (0 для направления слева направо, 1 — справа налево).
Возвращает:
базовый уровень

getLevelAt

public int getLevelAt(int offset)
Возвращает разрешённый уровень символа по указанному смещению. Если смещение меньше 0 или больше либо равно длине строки, возвращает уровень базового направления.
Параметры:
offset — индекс символа, уровень которого требуется вернуть
Возвращает:
разрешённый уровень символа по указанному смещению

getRunCount

public int getRunCount()
Возвращает количество фрагментов уровня.
Возвращает:
количество фрагментов уровня

getRunLevel

public int getRunLevel(int run)
Возвращает уровень n-го логического фрагмента в этой строке.
Параметры:
run — индекс фрагмента от 0 до getRunCount()
Возвращает:
уровень фрагмента

getRunStart

public int getRunStart(int run)
Возвращает индекс символа в начале n-го логического фрагмента в этой строке, в виде смещения от начала строки.
Параметры:
run — индекс фрагмента от 0 до getRunCount()
Возвращает:
начало фрагмента

getRunLimit

public int getRunLimit(int run)
Возвращает индекс символа, следующего за концом n-го логического фрагмента в этой строке, в виде смещения от начала строки. Например, для последнего фрагмента строки будет возвращена длина строки.
Параметры:
run — индекс фрагмента от 0 до getRunCount()
Возвращает:
конечную позицию фрагмента

requiresBidi

public static boolean requiresBidi(char[] text, int start, int limit)
Возвращает true, если указанный текст требует двунаправленного анализа. Если возвращено false, текст будет отображаться слева направо. В этом случае вызывающий код может не создавать объект Bidi. Предполагается, что текст в области арабских презентационных форм Unicode уже сформирован и упорядочен для отображения, поэтому он не приведёт к возвращению true этой функцией.
Параметры:
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

public String toString()
Отображает внутреннее состояние двунаправленного текста для отладки.
Переопределяет:
toString в классе Object
Возвращает:
строковое представление объекта

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

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