Spec-Zone.ru › OpenJDK 25

Класс 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

Подробное описание полей

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 и до objectStart + count будут упорядочены визуально, при этом предполагается, что уровень каждого текстового фрагмента указан соответствующим элементом массива levels (в index - objectStart + levelStart).
Параметры:
levels — массив, представляющий уровень двунаправленного текста каждого объекта
levelStart — начальная позиция в массиве уровней
objects — массив объектов, которые необходимо упорядочить визуально
objectStart — начальная позиция в массиве объектов
count — количество объектов для упорядочивания

toString

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

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, включая концептуальные обзоры, определения терминов, способы обхода проблем и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/text/Bidi.html

Spec-Zone.ru

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