2016-02-03 25 views
1

Мне сложно свести строки BiDi внутри текстового поля HTML, как я ожидал.Текст двунаправленного текста (BiDi) внутри HTML textarea, не относящийся к управляющему символу LRM

Этот тест строка содержит как арабский и английский, а также последовательности псевдо-тегов (< 1 />, < 2 />), которые состоят из нейтрального направления символов (<,>, /, числа) и должны наследуют их направление сильным характером перед ними.

Учитывая, что эти псевдо-метки расположены после того, как RTL и LTR текст, мне нужно, чтобы заставить направление текста положить один LRM (U+200E, &lrm;) символ перед тем каждый псевдо-теги.

В результате это не то, что я ожидал: Textarea screenshot test

Обратите внимание, что текстовое поле имеет свойство направления установлен следующим образом: dir='rtl'

Испытано как с Chrome и FF, ни один из них не похоже на работу, как и ожидалось , Я что-то упускаю?

Результаты на Jsfiddle даже разные: https://jsfiddle.net/o7d2ymdc/1/

ответ

0

К сожалению, эти отображения внутри текстового поля будет крайне сложно, если вообще возможно.

Есть несколько вопросов, которые находятся в игре здесь, среди них является тот факт, что скобки и скобки отражаются в алгоритме Unicode двунаправленного: Этот <span dir="ltr"><</span> отображается как «<», в то время как это <span dir="rtl"><</span> отображается как «>». И все это добавляется поверх того факта, что мы имеем разные определения «конец строки» в любой из строк RTL и LTR.

Ваш лучший выбор может заключаться в использовании ContentEditable. Вы можете отображать редактируемый богатый текст - это на самом деле html-узлы - и, по сути, изолировать ваши фрагменты RTL от разметки HTML с помощью пробелов, как если бы вы статически отображали его. Однако, если это текстовое поле позволяет создать пользовательский текст, созданный пользователем, вам может потребоваться создать хороший алгоритм, который автоматически автоматически переносит двунаправленный текст по типу пользователя, что может быть довольно сложной задачей.

Если это поможет, вы не единственный, кто имеет дело с этим. При редактировании HTML блоков в арабской Википедии, к примеру, вы увидите точно такую ​​же проблему (что делает редактирование HTML и вики-текста довольно большой проблемой)

Эта проблема также является одной из причин, почему люди предпочитают WYSIWYG редактор, который имеет надлежащее контекстуальное и концептуальное разделение между разметкой/стилем и самим текстом.

+0

Вот так я и сделал это в конце. Я использую контент-элементы, и я перехватываю событие keypress, поэтому я могу обернуть символы в разных элементах span с помощью свойства dir = "rtl" или dir = "ltr" –

 Смежные вопросы

  • Нет связанных вопросов^_^