Поведение, описанное выше, является правильным по дизайну и согласуется с реализацией поддержки двунаправленного текста.
Во-первых, решение вашего требования, насколько я понимаю.
Если вы хотите обернуть эти примеры RTL некоторым префиксом и суффиксом и визуально отобразить их справа и слева от исходного выделенного текста, вы можете поместить управляющий символ RLM после префикса, и он будет вести себя так, как вы хотите.
Вы можете добавить RLM, нажав кнопку «Специально» в диалоговом окне поиска / замены и выбрав RTL Mark
, или вы можете просто ввести ^r
вручную. Я собираюсь использовать тексты PRE
и POST
(вместо XXX
в ваших примерах):
Если вы используете этот текст «Заменить» одним из ваших примеров RTL:
Тогда вы получите этот результат, который, я думаю, является результатом, который вы искали:
Так что же происходит?
В ваших примерах RTL у вас есть текст, который состоит из двух частей или двух «направленных прогонов». Первый - это запуск LTR (часть «abcd»), а второй - запуск RTL (часть «אאא» на иврите), все в абзаце с базовым направлением RTL.
Когда вы добавляете префикс LTR (первый «XXX» в вашем примере замены) к запуску LTR, вы просто делаете этот запуск немного длиннее, как добавление еще нескольких букв к первому слову. Поскольку прогоны LTR отрисовываются слева направо, эти новые символы появляются там, где и должны. Если бы вместо «abcd» вы использовали слово «stand», а затем добавили префикс «UNDER», полученное слово было бы «UNDERstand» (не «standUNDER»).
Чтобы помочь справиться с подобными ситуациями и вручную разрешить некоторые неоднозначности, Unicode предоставляет «управляющие символы», которые являются невидимыми маркерами, каждый со своей ролью или эффектом.
Знак справа налево (RLM) ведет себя как символ RTL (представьте букву нулевой ширины "א"). Если мы поместим этот символ сразу после нашего префикса, мы фактически сломаем тот запуск LTR, который я описал выше, с ивритским символом. Теперь текст отображается визуально так, как вам нужно, с префиксом, появляющимся сначала у самого правого края, затем с нашим невидимым ивритским символом, а затем с оригинальным «abcd».