Unicode Consortium объявил о выпуске Unicode Standard 6.3.0 — универсального стандарта для кодирования текстов на любых языках мира.
Главные изменения нового выпуска касаются двунаправленного письма (bi-directional writing, сокр. BiDi), то есть чередования в тексте письма слева направо и справа налево. В языках, где пишут справа налево (арабский, иврит и др.), такое смешение проиходит очень часто, например, при записи чисел арабскими цифрами, вставке иностранных (в т.ч. английских) слов и так далее.
В версии 6.3.0 введено понятие фраз, изолированных по направлению письма (bi-directional isolates). Ранее они уже появились в HTML5 (тег <bdi>). Изолированные фразы должны отображаться в своём направлении, вне зависимости от окружающего текста. Существующие уже символы U+202A LRE и U+202B RLE имеют похожее действие, но являются «сильными» с точки зрения алгоритма отображения, то есть могут повлиять на отображение окружающих символов. Иногда это нежелательно, но обходится только нетривиальным анализом текста для правильной вставки кодов направления письма. Изоляты таких проблем вызывать не должны, потому что на окружающий текст не влияют. Для них определены следующие новые коды:
- U+2066 LEFT-TO-RIGHT ISOLATE
- U+2067 RIGHT-TO-LEFT ISOLATE
- U+2068 FIRST STRONG ISOLATE (вводит изолят с автоматически определяемым направлением письма)
- U+2069 POP DIRECTIONAL ISOLATE (обозначает конец изолята)
Помимо этих символов появился ещё один, тоже связанный с BiDi:
- U+061C ARABIC LETTER MARK (как U+200F RLM, только для арабского языка, Bidi_Class = AL).
Внесены соответствующие изменения в Unicode Standard Annex #9: Unicode Bidirectional Algorithm.
Когда у вас ОС и браузер начнут поддерживать Unicode 6.3.0, три строчки ниже будут отображаться одинаково. Если только две верхние отображаются одинаково, у вас поддерживается Unicode от 1.1 до 6.2, но не 6.3:
Linux.org.ru Linux.org.ru ur.gro.xuniL
Linux.org.ru Linux.org.ru Linux.org.ru
Linux.org.ru Linux.org.ru Linux.org.ru
Впрочем, проверить эту гипотезу автору новости пока удалось только на тестовой реализации алгоритма, поэтому может быть и не будут одинаково отображаться.
Для подробной информации читайте UAX #9 или предложение о введении BiDi-изолятов в Unicode (Aharon Lanin et al.).
Ещё одно важное нововведение, не связанное с BiDi, — это наведение порядка с выбором вариантов иероглифов в блоке CJK Compatibility Ideographs (U+F900 — U+FAFF). Эти иероглифы имеют больше одной формы, и раньше при нормализации текста иероглиф мог нежелательным образом поменять форму, а теперь такого не будет.
Также есть ряд точечных изменений, касающихся отдельных символов и деталей алгоритмов.
Помимо указанных выше 5 контрольных кодов, в 6.3.0 никаких новых символов (в частности, отображаемых) нет. В Core Specification не будет внесено никаких изменений — сохраняет действие версия 6.2.0, за исключением обновленного определения case-ignorable (параграф 3.13, определение D136). Кроме того, ещё с января действует Corrigendum #9 о понятии noncharacter.