Класс Bidi
- java.lang.Object
-
- java.text.Bidi
public final class Bidi extends Object
Этот класс реализует алгоритм двунаправленной обработки Unicode.
Объект Bidi предоставляет информацию о двунаправленной перестановке текста, используемого для его создания. Это необходимо, например, для правильного отображения арабского или ивритского текста. Эти языки по своей природе смешанно-направленные, так как они упорядочивают числа слева направо, а большинство других текстов — справа налево.
После создания объект Bidi можно запросить, чтобы узнать, является ли текст, который он представляет, полностью слева направо или полностью справа налево. Такие объекты очень легкие, и этот текст относительно легко обрабатывается.
Если есть несколько блоков текста, информация о блоках может быть получена путем индексирования, чтобы получить начало, предел и уровень блока. Уровень представляет собой направление и «уровень вложенности» направленного блока. Нечетные уровни — справа налево, а четные уровни — слева направо. Например, уровень 0 представляет текст слева направо, уровень 1 — текст справа налево, а уровень 2 — текст слева направо, вложенный в блок справа налево.
- Since:
- 1.4
Поля
| Модификатор и тип | Поле | Описание |
|---|---|---|
static int | DIRECTION_DEFAULT_LEFT_TO_RIGHT | Константа, указывающая, что основное направление зависит от первого сильного символа направления в тексте в соответствии с алгоритмом двунаправленной обработки Unicode. |
static int | DIRECTION_DEFAULT_RIGHT_TO_LEFT | Константа, указывающая, что основное направление зависит от первого сильного символа направления в тексте в соответствии с алгоритмом двунаправленной обработки Unicode. |
static int | DIRECTION_LEFT_TO_RIGHT | Константа, указывающая, что основное направление — слева направо. |
static 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
Константа, указывающая, что основное направление зависит от первого сильного символа направления в тексте в соответствии с алгоритмом двунаправленной обработки 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 в массиве объектов будут переупорядочены в визуальном порядке, предполагая, что каждый участок текста имеет уровень, указанный соответствующим элементом в массиве уровней (по index - objectStart + levelStart).
- Параметры:
-
levels- массив, представляющий уровень двунаправленной обработки каждого объекта -
levelStart- начальная позиция в массиве уровней -
objects- массив объектов, которые нужно переупорядочить в визуальном порядке -
objectStart- начальная позиция в массиве объектов -
count- количество объектов для переупорядочивания
toString
public String toString()
Отобразить внутреннее состояние двунаправленной обработки, используемое при отладке.
© 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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/text/Bidi.html