Unicode BIDI (UBA): R RLI R; Почему RLI должен оставаться на уровне 0

реализация логики изолятора для BIDI снова заставила меня застрять. Учитывая следующий тестовый пример.

@Levels: 1 0 1
@Reorder: 0 1 2
R  RLI  R ; 2  # LTR flag
\____/ \_/ (my run sequences)

Вот мое текущее понимание:

После обработки правил X1–X8 вы получите уровни 0 0 1, которые будут преобразованы в две изолированные последовательности выполнения.

Насколько я могу судить, правила W1-W7 не должны применяться ни к каким персонажам.

Правило N1, однако, повысит уровень RLI до 1, так как это NI между двумя сильными типами, R и eos из первой последовательности.

Затем Правило I1/2 переместит первый R на уровень 1.

Правило L1 может понизить уровень RLI, но здесь оно не применяется.

Как так, что RLI должен оказаться на уровне 0.


Та же проблема с аналогичными тестами, только в обратном направлении.

@Levels: 2 1 2
@Reorder: 2 1 0
L LRI L; 4

К сожалению, http://unicode.org/cldr/utility/bidi.jsp не реализовать новейший алгоритм, включая RLI/LRI.

Любые советы приветствуются :) спасибо.


person butterbrot    schedule 01.03.2017    source источник
comment
Дальнейшая проверка, я думаю, что неправильно вычисляю eos. Учитывая примечание X10 ... и если его нет или последний символ последовательности является инициатором изоляции (без соответствующего PDI) с уровнем внедрения абзаца.   -  person butterbrot    schedule 02.03.2017


Ответы (1)


Итак, проблема заключалась в том, что Правило N1 не должно было применяться, поскольку eos имеет тип L, а не R.

Я пропустил примечание на X10, в котором говорится, что: ... и если его нет или последний символ последовательности является инициатором изоляции (без соответствующего PDI) с уровнем внедрения абзаца».

person butterbrot    schedule 02.03.2017