Вместо того, чтобы рассматривать направление текста как проблему, которая должна контролироваться на уровне разметки или форматирования, Unicode требует, чтобы он обрабатывался на уровне набора символов.При отсутствии символов форматирования, которые бы указывали направление текста, некоторые символы (например, буквы латинского алфавита) отображаются слева направо, некоторые (например, буквы арабского или иврита) отображаются справа налево, а некоторые (например, знаки препинания)могут отображаться способами, которые зависят от предыдущих символов, а некоторые (например, цифры) могут отображаться слева направо в виде группы, но с отображением групп в соответствии с направлением предыдущего текста.
Еслизаглавные буквы в тексте (символы, указанные по порядку, слева направо) abc123 456XYZdef
были в алфавите справа налево, текст будет отображаться как abc123 456ZYXdef
, а символы справа налево отображаются в видепорядок справа налево.Если бы порядок символов был (опять же, чтение строго слева направо) был abcXYZ456 123def
, он был бы отображен как abc123 456ZYXdef
, потому что две группы чисел были бы отображены в порядке справа налево, слевапредыдущего текста справа налево, даже если числа в каждой группе будут читаться слева направо.
Как следствие этих правил, невозможно узнать порядок символов в строке, просто посмотревна него.Единственный способ по-настоящему узнать, что происходит, - это транслитерировать символы в формы, подобные их шестнадцатеричным представлениям, которые имеют последовательный порядок.