stringtranslate.com

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

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

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

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

Поддержка двунаправленного письма

Поддержка двунаправленного письма — это способность компьютерной системы правильно отображать двунаправленный текст. Термин часто сокращается до « BiDi » или « bidi ».

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

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

Поддержка двунаправленного письма Unicode

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

Сильные характеры

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

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

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

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

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

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

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

Маркс

Если за «слабым» символом следует другой «слабый» символ, алгоритм будет смотреть на первый соседний «сильный» символ. Иногда это приводит к непреднамеренным ошибкам отображения. Эти ошибки исправляются или предотвращаются с помощью «псевдосильных» символов. Такие управляющие символы Unicode называются метками . Метка ( U+200E LEFT-TO-RIGHT MARK (LRM) или U+200F RIGHT-TO-LEFT MARK (RLM)) должна быть вставлена ​​в место, чтобы заставить вложенный слабый символ унаследовать его направление письма.

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

Вложения

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

Изоляты

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

Переопределяет

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

Использование юникода для переопределения

Использование unicode U+202D (LTR Override) переключит направление с слева направо на справа налево. Аналогично, использование U+202E (RTL Override) переключит направление с справа налево на слева направо. См. двунаправленный алгоритм Unicode.

Попс

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

Пробежки

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

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

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

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

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

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

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

Скрипты с использованием двунаправленного текста

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

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

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

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

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

Бустрофедон

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

Тип Луны

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

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

Ссылки

  1. ^ "UAX #9: Двунаправленный алгоритм Unicode". Unicode.org. 2018-05-09 . Получено 2018-06-26 .
  2. ^ "Trojan Source Attacks". trojansource.codes . Получено 17 января 2022 г. .
  3. ^ "Visual Studio Code October 2021". code.visualstudio.com . Получено 11 ноября 2021 г. .
  4. ^ "Visual Studio 2022 версия 17.0 Заметки о выпуске". docs.microsoft.com . Получено 17 января 2022 г. .
  5. ^ Moon Type для слепых , Коллекция Библии Рамсейера, Библиотека Кэтрин А. Мартин, Университет Миннесоты в Дулуте .

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