stringtranslate.com

Двунаправленный текст

Двунаправленный текст содержит два направления текста : справа налево (RTL) и слева направо (LTR). Обычно оно включает в себя текст, содержащий разные типы алфавитов , но может также относиться к бустрофедону , который меняет направление текста в каждой строке.

Многие компьютерные программы не могут правильно отображать двунаправленный текст. Например, эта страница в основном написана английским шрифтом LTR, а вот еврейское имя Сара в написании RTL: שרה , написанное грех ( ש ) справа, реш ( ר ) посередине и хех ( ה ) слева.

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

Поддержка двунаправленных сценариев

Поддержка двунаправленных сценариев — это способность компьютерной системы правильно отображать двунаправленный текст. Этот термин часто сокращают до « БиДи » или « биди ».

Ранние компьютерные установки были разработаны только для поддержки одной системы письма , обычно для сценариев с письмом слева направо, основанных только на латинском алфавите . Добавление новых наборов символов и кодировок символов позволило поддерживать ряд других сценариев с письмом слева направо, но с трудом поддерживало сценарии с письмом справа налево, такие как арабский или иврит , и смешивать их было непрактично. Сценарии с письмом справа налево были введены посредством таких кодировок, как ISO/IEC 8859-6 и ISO/IEC 8859-8 , сохраняющих буквы (обычно) в порядке записи и чтения. Можно просто изменить порядок отображения слева направо на порядок отображения справа налево, но при этом жертвуется возможность правильного отображения сценариев слева направо. Благодаря поддержке двунаправленных сценариев можно смешивать символы из разных сценариев на одной странице независимо от направления письма.

В частности, стандарт Unicode обеспечивает основу для полной поддержки двунаправленного письма с подробными правилами кодирования и отображения смеси сценариев с письмом слева направо и справа налево.

Поддержка биди Юникод

Стандарт Unicode требует, чтобы символы упорядочивались «логически», то есть в той последовательности, в которой они предназначены для интерпретации, а не «визуально», в той последовательности, в которой они появляются. Это различие актуально для поддержки биди, поскольку при любом переходе биди визуальное представление перестает быть «логическим». Таким образом, чтобы обеспечить поддержку биди, Unicode предписывает алгоритм преобразования логической последовательности символов в правильное визуальное представление. Для этой цели стандарт кодирования Unicode делит все символы на один из четырех типов: «сильный», «слабый», «нейтральный» и «явное форматирование». [1]

Сильные персонажи

Сильные характеры – это те, у кого есть определенное направление. Примеры символов этого типа включают большинство буквенных символов, слоговых символов, ханьских иероглифов, неевропейских или неарабских цифр, а также знаков препинания, характерных только для этих сценариев.

Слабые персонажи

Слабые персонажи — это те, у кого неясное направление. Примеры символов этого типа включают европейские цифры, восточно-арабско-индийские цифры, арифметические символы и символы валюты.

Нейтральные персонажи

У нейтральных персонажей направление невозможно определить без контекста. Примеры включают разделители абзацев, табуляции и большинство других пробельных символов. В эту категорию также попадают символы пунктуации, общие для многих сценариев, такие как двоеточие, запятая, точка и пробел.

Явное форматирование

Символы явного форматирования, также называемые «символами направленного форматирования», представляют собой специальные последовательности Юникода, которые предписывают алгоритму изменить поведение по умолчанию. Эти символы подразделяются на «метки», «вложения», «изолированные» и «переопределения». Их действие продолжается до тех пор, пока не появится разделитель абзацев или всплывающий символ.

Метки

Если за «слабым» символом следует другой «слабый» символ, алгоритм будет рассматривать первый соседний «сильный» символ. Иногда это приводит к непреднамеренным ошибкам отображения. Эти ошибки исправляются или предотвращаются с помощью «псевдосильных» символов. Такие управляющие символы Юникода называются метками . Знак ( U+200E ОТМЕТКА СЛЕВА НА ПРАВО (LRM) или U+200F ОТМЕТКА СПРАВА НАЛЕВО (RLM)) должен быть вставлен в место, чтобы замкнутый слабый символ унаследовал свое направление письма.

Например, для правильного отображения ЗНАКА ТОРГОВОЙ ЗНАКА U+2122 для английского бренда (LTR) в отрывке на арабском языке (RTL), после символа товарного знака вставляется знак LRM, если за символом не следует текст LTR (например, « قرأ Wikipedia™‎ طوال اليوم. »). Если знак LRM не добавлен, слабый символ ™ будет соседствовать с сильным символом LTR и сильным символом RTL. Следовательно, в контексте RTL он будет считаться RTL и отображаться в неправильном порядке (например, « قرأ Wikipedia™ طوال اليوم. »).

Вложения

«Внедрение» символов направленного форматирования представляет собой классический метод явного форматирования Unicode, и, начиная с Unicode 6.3, его не рекомендуют в пользу «изолированных». «Вложение» сигнализирует о том, что фрагмент текста следует рассматривать как отдельный по направлению. Текст внутри области встраивания символов форматирования не является независимым от окружающего текста. Кроме того, символы внутри вложения могут влиять на порядок символов снаружи. В Unicode 6.3 признается, что направленные встраивания обычно оказывают слишком сильное влияние на свое окружение и, следовательно, их излишне сложно использовать.

изоляты

«Изолировать» символы направленного форматирования сигнализируют о том, что фрагмент текста следует рассматривать как направленно изолированный от его окружения. Начиная с версии Unicode 6.3, использование этих символов форматирования приветствуется в новых документах, как только станет известно, что целевые платформы их поддерживают. Эти символы форматирования были введены после того, как стало очевидно, что направленные встраивания обычно оказывают слишком сильное влияние на их окружение и, следовательно, их излишне сложно использовать. В отличие от устаревших «внедренных» символов направленного форматирования, «изолированные» символы не влияют на порядок текста за пределами их области действия. Изоляты могут быть вложенными и могут быть помещены во вложения и переопределения.

Переопределения

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

Попс

Символы направленного форматирования «pop» завершают область самого последнего «встраивания», «переопределения» или «изолирования».

Бежит

В алгоритме каждая последовательность объединенных строгих символов называется «прогоном». «Слабый» персонаж, расположенный между двумя «сильными» персонажами с одинаковой ориентацией, унаследует их ориентацию. «Слабый» символ, расположенный между двумя «сильными» символами с разным направлением письма, унаследует направление письма основного контекста (в документе LTR символ станет LTR, в документе RTL — RTL).

Таблица возможных типов символов BiDi

Тип двунаправленного символа ( свойство символа Юникода Bidi_Class ) [1]

Безопасность

В уязвимости Trojan Source используются двунаправленные символы Юникода . [2]

Код Visual Studio выделяет управляющие символы двунаправленного письма, начиная с версии 1.62, выпущенной в октябре 2021 года. [3]

Visual Studio выделяет управляющие символы двунаправленного письма, начиная с версии 17.0.3, выпущенной 14 декабря 2021 года. [4]

Скрипты, использующие двунаправленный текст

Египетские иероглифы

Египетские иероглифы писались двунаправленно, причем знаки, имевшие отчетливую «голову» или «хвост», были обращены к началу строки.

Китайские иероглифы и другие сценарии CJK

Китайские иероглифы можно писать в любом направлении, а также вертикально (сверху вниз, затем справа налево), особенно на знаках (например, табличках), но ориентация отдельных иероглифов не меняется. Это часто можно увидеть на туристических автобусах в Китае, где название компании обычно проходит от передней части автомобиля к его задней части, то есть справа налево на правой стороне автобуса и слева направо на левой. сторона автобуса. Английские тексты на правой стороне автомобиля также довольно часто пишутся в обратном порядке. (См. фотографии туристического автобуса и почтового автомобиля ниже.)

Аналогично, другие сценарии CJK , состоящие из тех же квадратных символов, такие как японская система письма и корейская система письма , также могут быть написаны в любом направлении, хотя горизонтально слева направо, сверху вниз и вертикально сверху вниз. -снизу справа налево — две наиболее распространенные формы.

Бустрофедон

Бустрофедон — стиль письма, встречающийся в древнегреческих надписях , древнесабайском ( старом южноаравийском языке) и венгерских рунах . Этот метод письма меняет направление и обычно меняет местами отдельные символы в каждой последующей строке.

Тип Луны

Лунный шрифт — это рельефная адаптация латинского алфавита, придуманная как тактильный алфавит для слепых. Изначально текст менял направление (но не ориентацию символов) в конце строк. Особые рельефные линии соединяли конец строки и начало следующей. [5] Примерно в 1990 году ориентация изменилась на левую-правую .

Смотрите также

Рекомендации

  1. ^ «UAX # 9: Двунаправленный алгоритм Unicode» . Юникод.орг. 09.05.2018 . Проверено 26 июня 2018 г.
  2. ^ «Атаки с использованием троянских источников». троянские исходные коды . Проверено 17 января 2022 г.
  3. ^ «Код Visual Studio, октябрь 2021 г.» . code.visualstudio.com . Проверено 11 ноября 2021 г.
  4. ^ «Примечания к выпуску Visual Studio 2022 версии 17.0» . docs.microsoft.com . Проверено 17 января 2022 г.
  5. ^ Тип Луны для слепых , Библейская коллекция Рамсиера, Библиотека Кэтрин А. Мартин, Университет Миннесоты в Дулуте .

Внешние ссылки