Двунаправленный текст
Эта статья нуждается в дополнительных цитатах для проверки . ( июль 2015 г. ) |
Двунаправленный текст содержит два направления текста : справа налево (RTL) и слева направо (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
[ редактировать ]Тип [2] | Описание | Сила | Направленность | Общая сфера применения | Bidi_Control символ [3] |
---|---|---|---|---|---|
л | Слева направо | Сильный | Л-к-П | Большинство буквенных и слоговых символов, китайские иероглифы, неевропейские или неарабские цифры, символ LRM, ... | U+200E ОТМЕТКА СЛЕВА НАПРАВО (LRM) |
Р | Справа налево | Сильный | справа налево | Адлам, иврит, мандейский язык, Менде Кикакуи, Н'Ко, самаритянин, древние письменности, такие как Харости и Набатейский, символы RLM, ... | U+200F ОТМЕТКА СПРАВА НАЛЕВО (RLM) |
АЛ | арабское письмо | Сильный | справа налево | Арабский алфавит, алфавит ханифи-рохинджа, согдийский, сирийский и таанский алфавиты, а также большинство знаков препинания, характерных для этих алфавитов, символ ALM,... | U+061C АРАБСКАЯ БУКВА (ALM) |
В | Европейский номер | Слабый | Европейские цифры, восточно-арабско-индийские цифры, коптские числа эпактов, ... | ||
ЯВЛЯЕТСЯ | Европейский сепаратор | Слабый | знак плюс , знак минус , ... | ||
И | Терминатор европейского номера | Слабый | знак градуса , символы валюты, ... | ||
АН | арабское число | Слабый | Арабско-индийские цифры, арабские десятичные и разделители тысяч, цифры Руми, цифры Ханифи Рохинджа, ... | ||
CS | Общий разделитель чисел | Слабый | толстая кишка , запятая , точка , неразрывное пространство , ... | ||
НСМ | Непространственный знак | Слабый | Символы в общих категориях Знак, непробельный, и Знак, заключающий (Mn, Me) | ||
БН | Граница нейтральная | Слабый | Игнорируемые по умолчанию, несимволы, управляющие символы, отличные от явно заданных других типов. | ||
Б | Разделитель абзацев | Нейтральный | разделитель абзацев , соответствующие функции новой строки, определение абзаца протокола более высокого уровня | ||
С | Разделитель сегментов | Нейтральный | Вкладки | ||
WS | Пробелы | Нейтральный | космос , фигурное пространство , разделитель строк , фид формы , пробелы в блоках общей пунктуации (меньший набор, чем в списке пробелов в Юникоде ) | ||
НА | Другие нейтральные цвета | Нейтральный | Все остальные персонажи, включая символ замены объекта | ||
ЖРД | Встраивание слева направо | Явный | Л-к-П | Только персонаж LRE | U+202A ВСТРОЕНИЕ СЛЕВА НАПРАВО (LRE) |
МРО | Переопределение слева направо | Явный | Л-к-П | Только персонаж LRO | U + 202D ПЕРЕОПРЕДЕЛЕНИЕ СЛЕВА НАПРАВО (LRO) |
РЛЭ | Встраивание справа налево | Явный | справа налево | Только персонаж RLE | U+202B ВСТРОЕНИЕ ПРАВО НАЛЕВО (RLE) |
РЛО | Переопределение справа налево | Явный | справа налево | Только персонаж RLO | U + 202E ПЕРЕОПРЕДЕЛЕНИЕ ПРАВА НАЛЕВО (RLO) |
Поп-направленный формат | Явный | Только символы PDF | U+202C НАПРАВЛЕННОЕ ФОРМАТИРОВАНИЕ POP (PDF) | ||
ЛРИ | Изолировать слева направо | Явный | Л-к-П | Только символ LRI | U + 2066 ИЗОЛЯЦИЯ СЛЕВА НАПРАВО (LRI) |
РЛИ | Изолировать справа налево | Явный | справа налево | Только символ RLI | U + 2067 ИЗОЛЯЦИЯ СПРАВА НАЛЕВО (RLI) |
ФСИ | Первый сильный изолят | Явный | Только персонаж FSI | U+2068 ПЕРВЫЙ СИЛЬНЫЙ ИЗОЛЯТ (FSI) | |
ПДИ | Поп-направленный изолят | Явный | Только символ PDI | U+2069 POP НАПРАВЛЕННЫЙ РАЗЪЕДИНИТЕЛЬ (PDI) | |
Примечания
|
Безопасность
[ редактировать ]используются двунаправленные символы Юникода В уязвимости Trojan Source . [2]
Код Visual Studio выделяет управляющие символы двунаправленного письма, начиная с версии 1.62, выпущенной в октябре 2021 года. [3]
Visual Studio выделяет управляющие символы двунаправленного письма, начиная с версии 17.0.3, выпущенной 14 декабря 2021 года. [4]
Скрипты, использующие двунаправленный текст
[ редактировать ]Египетские иероглифы
[ редактировать ]Египетские иероглифы писались двунаправленно, причем знаки, имевшие отчетливую «голову» или «хвост», были обращены к началу строки.
Китайские иероглифы и другие сценарии CJK
[ редактировать ]Китайские иероглифы можно писать в любом направлении, а также вертикально (сверху вниз, затем справа налево), особенно на знаках (например, табличках), но ориентация отдельных иероглифов не меняется. Это часто можно увидеть на туристических автобусах в Китае, где название компании обычно идет от передней части автомобиля к его задней части, то есть справа налево на правой стороне автобуса и слева направо на левой стороне. сторона автобуса. Английские тексты на правой стороне автомобиля также довольно часто пишутся в обратном порядке. (См. фотографии туристического автобуса и почтового автомобиля ниже.)
Аналогично, другие сценарии CJK , состоящие из тех же квадратных символов, такие как японская система письма и корейская система письма , также могут быть написаны в любом направлении, хотя горизонтально слева направо, сверху вниз и вертикально сверху вниз. -снизу справа налево — две наиболее распространенные формы.
- Правая сторона (текст идет справа налево, включая текст на английском языке)
- Левая сторона (текст идет слева направо)
- На правой стороне самолета Hainan Airlines текст идет справа налево ( 空航南海 ).
- Однако на левой стороне самолета Hainan Airlines текст отображается слева направо ( 海南航空 ).
- Фотография, на которой виден текст с обеих сторон автомобиля China Post. В правой двери, Почта Китая выглядит как tsop anihc
Бустрофедон
[ редактировать ]Бустрофедон — стиль письма, встречающийся в древнегреческих надписях , древнесабайском ( старом южноаравийском языке) и венгерских рунах . Этот метод письма меняет направление и обычно меняет местами отдельные символы в каждой последующей строке.
Тип Луны
[ редактировать ]Лунный шрифт — это рельефная адаптация латинского алфавита, придуманная как тактильный алфавит для слепых.Изначально текст менял направление (но не ориентацию символов) в конце строк.Особые рельефные линии соединяли конец строки и начало следующей. [5] Примерно в 1990 году ориентация изменилась на левую-правую .
См. также
[ редактировать ]- Интернационализация и локализация
- Горизонтальное и вертикальное письмо в восточноазиатских письмах.
- Система письма § Направленность
- Кириллические цифры
- Знак справа налево
- Преобразование текста
- Бустрофедон
Ссылки
[ редактировать ]- ^ «UAX #9: Двунаправленный алгоритм Unicode» . Юникод.орг. 09.05.2018 . Проверено 26 июня 2018 г.
- ^ «Атаки троянских источников» . троянские исходные коды . Проверено 17 января 2022 г.
- ^ «Код Visual Studio, октябрь 2021 г.» . code.visualstudio.com . Проверено 11 ноября 2021 г.
- ^ «Примечания к выпуску Visual Studio 2022 версии 17.0» . docs.microsoft.com . Проверено 17 января 2022 г.
- ^ Тип Луны для слепых , Библейская коллекция Рамсиера , Библиотека Кэтрин А. Мартин , Университет Миннесоты в Дулуте .
Внешние ссылки
[ редактировать ]- Приложение № 9 к стандартам Юникода. Двунаправленный алгоритм.
- Рекомендации W3C по методам создания двунаправленного текста — включают примеры и подробные пояснения.
- Международные компоненты ICU для Unicode содержат реализацию двунаправленного алгоритма наряду с другими службами интернационализации.