Spec-Zone.ru › OpenJDK 8

Класс Bidi

  • java.lang.Object
    • java.text.Bidi

public final class Bidi
extends Object

Этот класс реализует алгоритм Unicode Bidirectional.

Объект Bidi предоставляет информацию о двунаправленной перестановке текста, используемого для его создания. Это необходимо, например, для правильного отображения арабского или иврита. Эти языки изначально смешанные в направлении, так как они упорядочивают цифры слева направо, а большую часть другого текста — справа налево.

После создания объект Bidi можно запросить, чтобы узнать, является ли представляемый им текст полностью слева направо или полностью справа налево. Такие объекты очень лёгкие, и этот текст относительно легко обрабатывать.

Если есть несколько блоков текста, информацию о блоках можно получить, обращаясь по индексу, чтобы получить начало, конец и уровень блока. Уровень представляет собой как направление, так и «уровень вложенности» двунаправленного блока. Нечётные уровни — справа налево, а чётные — слева направо. Например, уровень 0 представляет текст слева направо, уровень 1 — справа налево, а уровень 2 — текст слева направо, вложенный в блок справа налево.

Since:
1.4

Поля

Модификатор и тип Поле и описание
static int DIRECTION_DEFAULT_LEFT_TO_RIGHT

Константа, указывающая, что основное направление зависит от первого сильного символа направления в тексте в соответствии с алгоритмом Unicode Bidirectional.

static int DIRECTION_DEFAULT_RIGHT_TO_LEFT

Константа, указывающая, что основное направление зависит от первого сильного символа направления в тексте в соответствии с алгоритмом Unicode Bidirectional.

static int DIRECTION_LEFT_TO_RIGHT

Константа, указывающая, что основное направление — слева направо.

static int DIRECTION_RIGHT_TO_LEFT

Константа, указывающая, что основное направление — справа налево.

Конструкторы

Конструктор и описание
Bidi(AttributedCharacterIterator paragraph)

Создать Bidi из заданного абзаца текста.

Bidi(char[] text, int textStart, byte[] embeddings, int embStart, int paragraphLength, int flags)

Создать Bidi из заданного текста, вложения и информации о направлении.

Bidi(String paragraph, int flags)

Создать 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, если для указанного текста требуется анализ bidi.

String toString()

Отображает внутреннее состояние bidi, используемое при отладке.

Методы, унаследованные от класса 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

Константа, указывающая, что основное направление зависит от первого сильного символа направления в тексте в соответствии с алгоритмом Unicode Bidirectional. Если сильного символа направления нет, основное направление — слева направо.

См. также:
Значения константных полей

DIRECTION_DEFAULT_RIGHT_TO_LEFT

public static final int DIRECTION_DEFAULT_RIGHT_TO_LEFT

Константа, указывающая, что основное направление зависит от первого сильного символа направления в тексте в соответствии с алгоритмом Unicode Bidirectional. Если сильного символа направления нет, основное направление — справа налево.

См. также:
Значения константных полей

Конструкторы

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

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

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

Параметры:
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 из заданного текста, информации об вложении и направлении. Массив embeddings может быть 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 на строке текста внутри абзаца, представленного текущим объектом 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, если для указанного текста требуется анализ bidi. Если это возвращает false, текст будет отображаться слева направо. Клиенты могут тогда избежать создания объекта Bidi. Текст в области Arabic Presentation Forms в Unicode предполагается уже сформированным и упорядоченным для отображения, и поэтому не заставит эту функцию возвращать true.

Параметры:
text - текст, содержащий символы для проверки
start - начало диапазона символов для проверки
limit - предел диапазона символов для проверки
Возвращает:
true, если диапазон символов требует анализа bidi

reorderVisually

public static void reorderVisually(byte[] levels,
                                   int levelStart,
                                   Object[] objects,
                                   int objectStart,
                                   int count)

Переупорядочивает объекты в массиве в визуальном порядке, основываясь на их уровнях. Это вспомогательная функция для использования, когда у вас есть коллекция объектов, представляющих последовательности текста в логическом порядке, каждая последовательность содержит текст на одном уровне. Элементы с index от objectStart до objectStart + count в массиве объектов будут переупорядочены в визуальный порядок, предполагая, что каждая последовательность текста имеет уровень, указанный соответствующим элементом в массиве уровней (в index - objectStart + levelStart).

Параметры:
levels - массив, представляющий уровень bidi каждого объекта
levelStart - начальная позиция в массиве уровней
objects - массив объектов, которые нужно переупорядочить в визуальный порядок
objectStart - начальная позиция в массиве объектов
count - количество объектов для переупорядочивания

toString

public String toString()

Отображает внутреннее состояние bidi, используется в отладке.

Переопределяет:
toString в классе Object
Возвращает:
строковое представление объекта.

© 1993, 2020, 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