Spec-Zone.ru › OpenJDK 21

Класс 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()
Отображает внутреннее состояние двунаправленности, используемое в отладке.

Методы, объявленные в классе java.lang.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
Постоянная, указывающая, что основное направление зависит от первого сильного символа направления в тексте в соответствии с алгоритмом двунаправленного отображения Юникода. Если сильный символ направления отсутствует, основное направление — слева направо.
См. также:
  • Значения константного поля

DIRECTION_DEFAULT_RIGHT_TO_LEFT

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

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

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 в тексте, если он присутствует, определяет основное направление (слева направо или справа налево). Если он отсутствует, основное направление вычисляется с помощью алгоритма двунаправленного отображения Юникода, по умолчанию слева направо, если в тексте нет сильных символов направления. Этот атрибут, если он присутствует, должен применяться ко всему тексту в абзаце.

Атрибут 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. Текст в области представлений арабских форм Юникода предполагается уже оформленным и отсортированным для отображения, поэтому эта функция не вернёт true.
Параметры:
text - текст, содержащий символы для проверки
start - начало диапазона символов для проверки
limit - граница диапазона символов для проверки
Возвращает:
true, если диапазон символов требует анализа двунаправленного отображения

reorderVisually

public static void reorderVisually(byte[] levels, int levelStart, Object[] objects, int objectStart, int count)
Переупорядочить объекты в массиве в визуальном порядке на основе их уровней. Эта вспомогательная функция используется, когда у вас есть коллекция объектов, представляющих последовательности текста в логическом порядке, каждая последовательность содержит текст на одном уровне. Элементы с index с objectStart по objectStart + count в массиве объектов будут переупорядочены в визуальном порядке, предполагая, что каждая последовательность текста имеет уровень, указанный соответствующим элементом в массиве уровней (в index - objectStart + levelStart).
Parameters:
levels - массив, представляющий уровень bidi каждого объекта
levelStart - начальная позиция в массиве уровней
objects - массив объектов, которые нужно переупорядочить в визуальном порядке
objectStart - начальная позиция в массиве объектов
count - количество объектов для переупорядочивания

toString

public String toString()
Отображение внутреннего состояния bidi, используется для отладки.
Overrides:
toString в классе Object
Returns:
строковое представление объекта.

© 1993, 2023, 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/21/docs/api/java.base/java/text/Bidi.html

Spec-Zone.ru

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