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

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

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

Примечание. Некоторые веб-браузеры могут отображать текст этой статьи на иврите в обратном направлении.

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

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

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

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

Поддержка Unicode Bidi

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

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

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

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

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

Числа

Если не присутствует переопределение направления, числа всегда кодируются (и вводятся) с прямым порядком байтов , а числа отображаются как LTR. Слабая направленность относится только к размещению номера целиком.

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

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

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

Символы явного форматирования, также называемые «символами направленного форматирования», представляют собой специальные последовательности 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, это символы форматирования, которые поощряются в новых документах - если известно, что целевые платформы их поддерживают. Эти символы форматирования были введены после того, как стало очевидно, что направленные встраивания обычно слишком сильно влияют на их окружение и, таким образом, излишне трудны в использовании. В отличие от устаревших «встраиваемых» символов направленного форматирования, «изолированные» символы не влияют на порядок текста вне своей области. Изоляты могут быть вложенными и могут быть размещены внутри вложений и переопределений.

Отменяет

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

Попс

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

Бежит

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

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

Двунаправленный тип символа ( свойство символа Unicode Bidi_Class)
Тип Описание Сила Направленность Общий объем Bidi_Control символ
L Слева направо Сильный Слева направо Большинство алфавитных и слоговых символов, китайские иероглифы, неевропейские или неарабские цифры, символ LRM, ... U + 200E МАРКА СЛЕВА НАПРАВО (LRM)
р Справа налево Сильный R-to-L Адлам, иврит, мандайский, менде кикакуи, н'ко, самаритянский, древние письменности, такие как харошти и набатейский, персонаж RLM, ... U + 200F ПРАВО НАЛЕВО МАРКА (RLM)
AL Арабское письмо Сильный R-to-L Арабский, ханифи рохинджа, согдийский, сирийский и тханский алфавиты и большинство знаков препинания, характерных для этих алфавитов, символ ALM, ... U + 061C АРАБСКАЯ БУКВА (ALM)
EN Европейский номер Слабый Европейские цифры, восточно-арабские-индийские цифры, коптские эпактные числа, ...
ES Европейский сепаратор Слабый знак плюс , минус , ...
ET Терминатор европейского номера Слабый знак градуса , символы валюты, ...
AN Арабский номер Слабый Арабско-индийские цифры, арабские десятичные дроби и разделители тысяч, цифры руми, цифры ханифи рохинья, ...
CS Общий разделитель чисел Слабый двоеточие , запятая , точка , неразрывный пробел , ...
NSM Непространственный знак Слабый Знаки в общих категориях: Отметить, без пробелов, и Отметить, заключить (Mn, Me)
BN Граница нейтральная Слабый Игнорируемые, несимволы, управляющие символы по умолчанию, кроме явно заданных других типов
B Разделитель абзацев Нейтральный разделитель абзацев , соответствующие функции новой строки, определение абзаца протокола более высокого уровня
S Разделитель сегментов Нейтральный Вкладки
WS Пробел Нейтральный пробел , пробел , разделитель строк , подача формы , общие пробелы в блоках пунктуации (меньший набор, чем список пробелов Unicode )
НА Другие нейтральные Нейтральный Все остальные символы, включая символ замены объекта
ЖРД Вложение слева направо Явный Слева направо Только символ LRE U + 202A ЛЕВАЯ ВСТАВКА (LRE)
МРО Слева направо Переопределение Явный Слева направо Только персонаж LRO U + 202D ПЕРЕХОД СЛЕВА НАПРАВО (LRO)
RLE Вложение справа налево Явный R-to-L Только символ RLE U + 202B ПРАВОЕ ВЛОЖЕНИЕ (RLE)
RLO Переопределение справа налево Явный R-to-L Только символ RLO U + 202E ПЕРЕХОД ВПРАВО-ВЛЕВО (RLO)
PDF Поп-направленный формат Явный Только символ PDF НАПРАВЛЕННОЕ ФОРМАТИРОВАНИЕ POP U + 202C (PDF)
LRI Изоляция слева направо Явный Слева направо Только символ LRI U + 2066 ИЗОЛЯЦИЯ СЛЕВА НАПРАВО (LRI)
RLI Изоляция справа налево Явный R-to-L Только символ RLI U + 2067 ИЗОЛЯЦИЯ ПРАВО-ЛЕВО (RLI)
FSI Первый сильный изолятор Явный Только символ FSI U + 2068 ПЕРВЫЙ СИЛЬНЫЙ ИЗОЛЯТОР (FSI)
PDI Поп-направленный изолятор Явный Только символ PDI НАПРАВЛЕННЫЙ ИЗОЛЯТОР POP U + 2069 (PDI)
Примечания
1. ^ Двунаправленный алгоритм Unicode (UAX # 9) , начиная с Unicode версии 12.0
2. ^ Возможные двунаправленные типы символов для свойства символа: Bidi_Class или 'type'
3. ^ Символы Bidi_Control : определены двенадцать символов форматирования Bidi_Control. Они невидимы и не имеют никакого эффекта, кроме направленности. Девять из них имеют уникальный, отменяющий тип BiDi, который используется в алгоритме. Их тип также является их аббревиатурой (например, символ «LRE» имеет тип BiDi «LRE»).

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

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

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

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

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

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

Бустрофедон

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

Тип Луны

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

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

использованная литература

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