Почему слова перетасовываются, когда я вставляю английские слова в любой арабский / урду / персидский текст в Блокноте или MS Word? - PullRequest
26 голосов
/ 08 марта 2012

Я могу написать арабский / урду / персидский на MS Word или в блокноте просто отлично, но всякий раз, когда я вставляю любое английское слово или цифру, последовательность просто нарушается и кажется, что все слова в предложении перемешаны *

Посмотрите на пример ниже:

یہ ایک مثال ہے اردو کی ...

Теперь я вставил английское слово, и оно стало:

 یہ ایک مثال ہےword  اردو کی ...

Таким образом, вы можете видеть, что почти все слова были перемешаны ... каково решение для этого?

Ответы [ 8 ]

13 голосов
/ 05 декабря 2012

Например:

باللغة العربية «клавиатура» انا أريد أن أعرف الكلمة

  1. Завершите ввод арабского слова и добавьте после него пробел (этот пробел отделяет встроенный текст отарабский текст справа).
  2. Вставьте специальный символ U + 200F (чтобы преобразовать предыдущий пробел в арабский символ).Имя символа - «Метка справа налево».
  3. Вставьте специальный символ U + 202A (чтобы начать встраивание слева направо).Имя символа - «Внедрение слева направо».
  4. Вставьте еще один пробел (для отделения встроенного текста от арабского текста, который будет продолжаться слева от него).
  5. Измените клавиатуру, например, на английскийи введите слово слева направо.
  6. Вставьте специальный символ U + 202C (чтобы восстановить двунаправленное состояние до того, каким оно было до встраивания слева направо).Имя персонажа - «Развернутое направленное форматирование».
  7. Снова верните клавиатуру и продолжайте писать по-арабски.

Если вы работаете в Microsoft Office или Open Office, «специальныйсимволы "можно найти в разделе" вставить "[Вставка -> символы -> другие символы -> специальные символы в MS 2013].Прокрутите, пока не найдете символ с соответствующим номером Unicode, и если номер Unicode не появится в вашей версии MS Word, выберите его по имени [как указано выше].

Вы также можете добавитьсимвол, написав его в кодировке Юникод, а затем выделив его и нажав Alt + X - но это может сбить с толку, потому что требуется постоянное переключение между арабским и английским.

Все специальные символы, задействованные в этом маленьком маневре, являются невидимыми символами (их задача - просто изменить направление текста), поэтому не удивляйтесь, если похоже, что вы ничего не вставляете.

Обратите внимание, чтобы выбрать опцию RTL на ленте, когда большинство вашихабзац RTL и оставьте его выделенным [как показано на рисунке в этом ответе https://stackoverflow.com/a/46050171/8558867].

7 голосов
/ 11 января 2014
  1. Прежде чем начать печатать на арабском / персидском языке, убедитесь, что вы выбрали кнопку «Направление справа налево».Эту кнопку можно найти на вкладке Абзац слева от кнопки сортировки AZ.Также выберите кнопку «Выровнять текст по правому краю», которую можно найти на вкладке «Абзац» слева от кнопки «Выровнять».

  2. Начните вводить язык

  3. Довставив английское слово, поставьте пробел, затем выберите левую клавишу ALT + SHIFT и введите свое английское слово

  4. После завершения ввода английских слов выберите правую клавишу ALT + SHIFT, затем введите пробел и продолжайте вводить свой языкснова

Надеюсь, это поможет

7 голосов
/ 08 марта 2012

Это нормально; они не перетасованы: вы видите их в режиме рендеринга LTR.

Вам просто нужно сделать их справа налево. В Блокноте или Word нажмите правую клавишу Ctrl + Shift, чтобы направить их направо справа налево, и все будет в порядке. (Это похоже на <p dir="rtl">...</p> в HTML).

Управляющие символы LRE и RLE (0x202A и 0x202B), а также LRM и RLM (0x200E и 0x200F) должны применяться ко всему абзацу, то есть они должны находиться в начале последовательности. Некоторые виджеты с текстовым дисплеем на некоторых платформах могут отбрасывать эти управляющие символы, особенно на более старых (до 2000) платформах или на тех, которые не поддерживают двунаправленный алгоритм Unicode правильно. Новые ОС и программы должны быть в порядке; попробуйте с Windows Notepad например.

Я лично рекомендую использовать средства платформы для создания текста RTL и избегать специальных управляющих символов, потому что они невидимы и могут привести к неожиданным результатам, если они выйдут из-под контроля. Поэтому вам лучше использовать Word API для создания текста RTL, или, если вы выводите HTML, поместите их в теги <div dir="rtl">...</div>. Для простого текстового файла пользователь должен сам вручную нажать клавиши Ctrl + Shift.

4 голосов
/ 22 мая 2012

Выберите абзац (например, с помощью тройного щелчка) и используйте кнопку для направления справа налево (¶ ◀) в разделе «Абзац» панели «Начало».

Как объясняется в ответе Хоссейна, проблема заключается в направленности параграфа. Он изменяется слева направо, когда вы вставляете латинскую букву, и вам нужно исправить это вручную.

3 голосов
/ 05 сентября 2017

Редактировать: это было написано как разъясняющий ответ на первый ответ здесь, позже я отредактировал первый ответ и добавил важные примечания, которые я написал здесь [редактирование все еще нуждается в утверждении, хотя].


Я смог исправить свой текст, выполнив шаги из первого ответа здесь.Если у кого-то возникнут проблемы при выполнении этих шагов, позвольте мне уточнить некоторые вещи:

Если вы вводите английское слово в арабском тексте, убедитесь, что на ленте выбрана опция RTL [обведено красным вследующий рисунок]:

screenshot

Сохраняйте его выбранным по всему абзацу, независимо от используемого вами языка [до тех пор, пока большинство абзаца написано наRTL-язык, такой как арабский или иврит].

Где найти специальные символы и как их вставить:

Вы можете написать Unicode символа и затем выбратьэто и нажмите «Alt + X».Однако это может немного сбивать с толку из-за необходимости переключаться между английским и арабским языками для написания кодов, поэтому лучше всего вводить их «вручную», вставляя их имена.

Вы можете сделать это, выбрав Вставить -> Символ -> Дополнительные символы -> Специальные символы [прокрутите вниз].Затем выберите имя символа, которое вам нужно использовать вместо его юникода.

Имена символов, которые вам нужно использовать [как указано в первом ответе здесь]:

  • «Метка справа налево»: U + 200F.
  • «Внедрение слева направо»: U + 202A.
  • «Форматирование поп-направления»: U + 202C.

Как гласит первый ответ, на экране ничего не появится, потому что это непечатный символ, поэтому это нормально, если вы почувствовали, что ничего не произошло при вставке.

Если вам нужно сделатьнаоборот, то есть вставьте ивритское или арабское слово в текст на английском языке, просто поменяйте местами юникоды - или следуйте инструкциям, приведенным в следующей ссылке: https://superuser.com/a/1247476/767967

Если вы хотитеузнать больше о том, что делают специальные символы и что означает сделать ваш абзац LTR или RTL, перейдите по следующей ссылке: http://dotancohen.com/howto/rtl_right_to_left.html#Directionality

2 голосов
/ 08 марта 2012

Вам необходимо добавить невидимый символ Unicode RLE в начале строки [^] . Это: 0x202B hex = 8235 десятичное или справа налево (RLE). Это необходимо для Блокнота, но MS-Word может справиться с этим. вам нужно правильно выровнять текст.

Как ввести RLE: http://www.fileformat.info/tip/microsoft/enter_unicode.htm

0 голосов
/ 27 мая 2015

В текстовом редакторе у вас есть основное направление текста, которое слева направо или справа налево (или сверху вниз, но давайте проигнорируем это :-), и у вас будет направление текста для отдельных символов, который также будет слева направо или справа налево.

Текстовый процессор разбивает текст на куски строк с одинаковым порядком символов, а затем отображает эти куски в соответствии с основным порядком текста.

Кажется, что ваш основной порядок текста был слева направо.Пока весь ваш текст написан на арабском языке, есть только один блок с арабским текстом.Вы уже видите, что он отображается выровненным по левому краю, а не выровненным по правому краю, потому что порядок текста слева направо.Символы отображаются справа налево, потому что именно так отображается арабский язык.

Когда вы вставляли латинский текст, у вас было три куска: арабский, латинский, арабский.Эти три блока отображаются слева направо, потому что это основной порядок текста.Это было бы хорошо для текста, который в основном латинский (например, "арабские слова для собаки и коровы ... и ...").Для текста, который в основном арабский и иногда используется латинское слово, вам нужно изменить основной порядок текста на «справа налево».

0 голосов
/ 26 сентября 2013

Просто выполните следующие действия:

  • Скопируйте и вставьте арабский текст из текстового или текстового документа в ADOBE Illustrator.
  • Сохраните документ-иллюстратор в формате .EPS.
  • Откройте indesign и поместите документ .EPS в нужное место.

Поскольку indesign не может самостоятельно решить проблему с арабским текстом, этот метод поможет многим дизайнерам.

...