Управляющие символы Юникода
Многие символы Юникода используются для управления интерпретацией или отображением текста, но сами эти символы не имеют визуального или пространственного представления. Например, нулевой символ ( U+0000 NULL ) используется в средах приложений C-программирования для обозначения конца строки символов. Таким образом, этим программам требуется только один начальный адрес памяти для строки (в отличие от начального адреса и длины), поскольку строка заканчивается, как только программа считывает нулевой символ.
В самом узком смысле управляющий код — это символ общей категории Cc
, который включает в себя управляющие коды C0 и C1 — концепцию, определенную в ISO/IEC 2022 и унаследованную Unicode, причем наиболее распространенный набор определен в ISO/IEC 6429 . Управляющие коды обрабатываются отдельно от обычных символов Юникода, например, поскольку им не назначаются имена символов (хотя им назначаются нормативные формальные псевдонимы). [1] В более широком смысле другие символы непечатаемого формата, например те, которые используются в двунаправленном тексте , также называются в программном обеспечении управляющими символами ; [2] они в основном отнесены к общей категории Cf
(формат), используемый для эффекторов формата, представленных и определенных самим Unicode.
Коды управления категории «Cc» (C0 и C1) [ править ]
Диапазоны управляющих кодов 0x00–0x1F («C0») и 0x7F взяты из стандарта US-ASCII 1967 года . Стандарт ISO/IEC 2022 (ECMA-35) определяет методы расширения ASCII, включая вторичный диапазон «C1» из 8-битных управляющих кодов от 0x80 до 0x9F, что эквивалентно 7-битным последовательностям ESC с байтами от 0x40 до 0x5F. В совокупности коды в этих диапазонах известны как управляющие коды C0 и C1 . Хотя ISO/IEC 2022 допускает существование нескольких наборов управляющих кодов, определяющих различные интерпретации этих управляющих кодов, их наиболее распространенная интерпретация указана в ISO/IEC 6429 (ECMA-48).
Серия кодировок ISO/IEC 8859 соответствует уровню 1 ISO/IEC 4873 (ECMA-43), подмножеству ISO/IEC 2022, разработанному для 8-битных кодировок символов, и поэтому резервирует диапазон 0x80–0x9F для использования в качестве нестандартных кодировок. печать кодов с помощью наборов управляющих кодов C1, таких как ISO/IEC 6429. [3] Unicode наследует свои первый и второй блоки (содержащие U+0000–U+00FF) из ASCII и ISO/IEC 8859-1 , таким образом включая диапазоны управляющих кодов C0 и C1 (U+0000–U+001F, U+007F–U). +009F) как общую категорию «Cc». Он не присваивает этим управляющим кодам нормативные имена, хотя и присваивает им нормативные псевдонимы. [1]
Коды управления категории «Cc» могут служить различным целям, не ограничиваясь эффекторами формата: например, набор ASCII C0 по умолчанию включает шесть эффекторов формата ( БС , ХТ , ЛФ , ВТ , ФФ и CR ), десять элементов управления передачей, четыре элемента управления устройством, четыре разделителя информации и восемь других управляющих кодов. [4] Большинство этих символов не играют явной роли в обработке текста в Юникоде и используются только протоколами более высокого уровня, такими как те, которые используются эмуляторами терминала . Определенные символы обычно используются для форматирования или сторожевых целей:
- U+0000 NULL (используется в строках, завершающихся нулем )
- U + 0009 ГОРИЗОНТАЛЬНАЯ ТАБУЛЯЦИЯ (HT) (вставляется с помощью клавиши табуляции )
- U+000A LINE FEED (LF) (используется как разрыв строки )
- U+000C FORM FEED (FF) (обозначает разрыв страницы в текстовом файле)
- U+000D ВОЗВРАТ КАРЕТКИ (CR) (используется в некоторых соглашениях о разрыве строки)
- U+0085 NEXT LINE (NEL) (иногда используется как разрыв строки в тексте, перекодированном из EBCDIC )
Юникод определяет только семантику для U+0009—U+000D , U+001C—U+001F и U+0085 (эффекторы формата ASCII, за исключением BS , плюс разделители информации ASCII и C1. НЭЛ ). Остальные управляющие коды «Cc» прозрачны для Unicode, и их значения оставлены на усмотрение протоколов более высокого уровня, хотя по умолчанию предлагается интерпретация, определенная в ISO/IEC 6429. [5] Более того, некоторые специализированные протоколы более высокого уровня, такие как транскодированный телетекст , могут включать в себя различную интерпретацию всего диапазона управляющих кодов C0. [6]
В Unicode появились разделители [ править ]
В попытке упростить несколько символов новой строки , используемых в устаревшем тексте. [ нужна цитата ] , Unicode вводит свои собственные символы новой строки для разделения строк или абзацев: U+2028 РАЗДЕЛИТЕЛЬ СТРОК (сокращенно LS или LSEP) и U+2029 РАЗДЕЛИТЕЛЬ АБЗАЦОВ (сокращенно PS или PSEP).
Подобно CR и LF, LS и PS являются эффекторами форматирования текста; в отличие от CR и LF, они не рассматриваются как «контрольные коды» для целей ECMA-35 / ECMA-48 (категория Cc
), а семантика полностью определяется самим Unicode. Они отнесены к категориям sui Generis Unicode. Zl
и Zp
соответственно, в основной категории Z
(разделитель), используемый для определенных символов пробелов .
Языковые теги [ править ]
Раньше Unicode включал 128 символов, которые сейчас устарели, для языковых тегов. Эти символы по существу отражали 128 символов ASCII, но использовались для идентификации последующего текста как принадлежности к определенному языку в соответствии с BCP 47 . Например, чтобы указать последующий текст как вариант английского языка, написанного в США, последовательность U+E0001 ЯЗЫКОВАЯ ТЕГКА , U+E0065 ТЕГ ЛАТИНСКАЯ СТРОЧНАЯ БУКВА E , U+E006E ТЕГ ЛАТИНСКАЯ СТРОЧНАЯ БУКВА N , U+E002D ТЕГ ДЕФИС-МИНУС , U+E0075 ТЕГ ЛАТИНСКАЯ СТРОЧНАЯ БУКВА U и U+E0073 TAG LATIN СТРОЧНАЯ БУКВА S использовалась бы.
Эти символы языковых тегов сами по себе не будут отображаться. Однако они будут предоставлять информацию для обработки текста или даже для отображения других символов. Например, при отображении иероглифов Unihan могли быть заменены другие глифы, если языковые теги указывали корейский, а не если теги указывали японский. Другой пример мог повлиять на отображение десятичных цифр от 0 до 9 по-разному в зависимости от языка, на котором они появились.
Символы тегов U+E0001 ЯЗЫКОВАЯ ТЕГИЯ и U+E007F CANCEL TAG устарел в Unicode 5.1 (2008 г.) и не должен использоваться для информации о языке. [7] Персонажи U+E0020—U+E0073 также устарели, но были восстановлены с выпуском Unicode 8.0 (2015 г.). Изменение было внесено, «чтобы расчистить путь для потенциального использования символов тегов в целях, отличных от представления языковых тегов». [8] В Unicode говорится, что «использование символов тегов для представления языковых тегов в простом текстовом потоке по-прежнему является устаревшим механизмом передачи языковой информации о тексте. [8]
Подстрочная аннотация [ править ]
Три символа форматирования обеспечивают поддержку подстрочных аннотаций ( U+FFF9 ЯКОРЬ ПОДЛИНЕЙНОЙ АННОТАЦИИ , U+FFFA РАЗДЕЛИТЕЛЬ МЕЖЛИНЕЙНЫХ АННОТАНЦИЙ , U+FFFB ТЕРМИНАТОР ПОДЛИНЕЙНОЙ АННОТАЦИИ ). Это можно использовать для предоставления примечаний, которые обычно отображаются между строками другого текста. Unicode считает такие аннотации форматированным текстом и рекомендует использовать для таких аннотаций другие протоколы. Рекомендации W3C по разметке Ruby — это пример альтернативного протокола, поддерживающего более сложные подстрочные аннотации.
Двунаправленный текстовый элемент управления [ править ]
Юникод поддерживает стандартный двунаправленный текст без каких-либо специальных символов. Другими словами, программное обеспечение, совместимое с Unicode, должно отображать символы, написанные справа налево, такие как буквы иврита, справа налево, просто исходя из свойств этих символов. Аналогичным образом, Unicode обрабатывает сочетание текста с письмом слева направо и текста с письмом справа налево без каких-либо специальных символов. Например, можно цитировать арабский язык («بسم الله») (переведенный на английский как «Бисмиллах») рядом с английским, и арабские буквы будут идти справа налево, а латинские буквы — слева направо.
Однако направленность может быть не определена правильно, если текст, написанный слева направо, цитируется в начале абзаца, написанного справа налево (или наоборот ). [2] а поддержка двунаправленного текста становится еще более сложной, когда текст, текущий в противоположных направлениях, встраивается иерархически, например, если в английском тексте цитируется арабская фраза, которая, в свою очередь, цитирует английскую фразу. Другие ситуации также могут усложнить это, например, когда автор хочет переопределить символы, написанные слева направо, чтобы они двигались справа налево. Хотя такие ситуации довольно редки, Unicode предоставляет двенадцать символов для управления этими уровнями встроенного двунаправленного текста глубиной до 125 уровней: [9]
- U+061C АРАБСКАЯ БУКВА МАРКИРОВКА
- U+200E ОТМЕТКА СЛЕВА НАПРАВО
- U+200F ОТМЕТКА СПРАВА НАЛЕВО
- U+202A ВСТРОЕНИЕ СЛЕВА НАПРАВО
- U+202B ВСТРОЕНИЕ ПРАВО НАЛЕВО
- U+202C НАПРАВЛЕННОЕ ФОРМАТИРОВАНИЕ POP
- U + 202D ПЕРЕОПРЕДЕЛЕНИЕ СЛЕВА НАПРАВО
- U + 202E ПЕРЕОПРЕДЕЛЕНИЕ СПРАВА НАЛЕВО
- U + 2066 ИЗОЛЯЦИЯ СЛЕВА НАПРАВО
- U + 2067 ИЗОЛЯЦИЯ СПРАВА НАЛЕВО
- U+2068 ПЕРВЫЙ СИЛЬНЫЙ ИЗОЛЯТ
- U+2069 POP НАПРАВЛЕННЫЙ РАЗЪЕДИНИТЕЛЬ
Селекторы вариантов [ править ]
Многие символы сопоставляются с альтернативными глифами в зависимости от контекста. Например, арабские и латинские курсивные символы заменяют разные глифы для соединения глифов вместе в зависимости от того, является ли этот символ начальным символом слова, конечным символом, средним символом или изолированным символом. Эти типы замены глифов легко обрабатываются контекстом символа без участия других авторских данных. Авторы также могут использовать символы специального назначения, такие как соединяющие и не соединяющие, чтобы создать альтернативную форму глифа там, где в противном случае он не появился бы. Лигатуры — это аналогичные случаи, когда глифы можно заменить, просто включив или отключив лигатуры как атрибут форматированного текста.
Однако для другой замены глифов намерение автора может потребоваться закодировать вместе с текстом и не может быть определено контекстуально. Так обстоит дело с символами/глифами, называемыми гайдзи , где разные глифы используются для одного и того же символа либо исторически, либо для иероглифов фамилий. Это одна из серых зон в различении глифа и символа. Если фамилия немного отличается от символа идеографа, от которого она произошла, то это простой вариант глифа или вариант символа. Начиная с Unicode 3.2 и 4.0, набор символов теперь включает 256 селекторов вариантов, так что эти символы объединяющего знака могут выбирать из 256 возможных вариантов символов/глифов для предыдущего символа.
Контрольные изображения [ править ]
Unicode предоставляет графические символы для представления управляющих кодов C0 (а также пробел и общий символ новой строки ) в блоке Control Pictures . Это визуальные представления, а не сами управляющие коды. нет Эквивалентных символов для кодов управления C1 .
Контрольные изображения [1] [2] Официальная таблица кодов Консорциума Unicode (PDF) | ||||||||||||||||
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | А | Б | С | Д | И | Ф | |
U + 240x | ␀ | ␁ | ␂ | ␃ | ␄ | ␅ | ␆ | ␇ | ␈ | ␉ | ␊ | ␋ | ␌ | ␍ | ␎ | ␏ |
U + 241x | ␐ | ␑ | ␒ | ␓ | ␔ | ␕ | ␖ | ␗ | ␘ | ␙ | ␚ | ␛ | ␜ | ␝ | ␞ | ␟ |
U + 242x | ␠ | ␡ | ␢ | ␣ |  | ␥ | ␦ | |||||||||
U + 243x | ||||||||||||||||
См. также [ править ]
Ссылки [ править ]
- ^ Перейти обратно: а б «Псевдонимы имен» . База данных символов Юникода . Консорциум Юникод .
- ^ Перейти обратно: а б Сеган, Данило. «На пути к локализованному рабочему столу» .
В некоторых случаях, когда автоматическое принятие решений не работает, вы можете вручную добавить определенные маркеры направления, щелкнув правой кнопкой мыши текстовое поле, выбрав в меню «Вставить управляющий символ Юникода» и выбрав соответствующий маркер направления. Это позволит вам, например, начать текст с письмом справа налево со слова, которое в противном случае будет написано на языке LTR (например, «GNOME»).
- ^ ISO/IEC JTC 1/SC 2/WG 3 (12 февраля 1998 г.). Окончательный текст DIS 8859-1, 8-битные однобайтовые наборы графических символов. Часть 1: Латинский алфавит № 1 (PDF) . ИСО / МЭК ФДИС 8859-1:1998; ДТК1/СК2/Н2988; РГ3/N411.
Этот набор закодированных графических символов можно рассматривать как версию 8-битного кода согласно ISO/IEC 2022 или ISO/IEC 4873 на уровне 1. […] Заштрихованные позиции в кодовой таблице соответствуют битовым комбинациям, которые не представляют собой графические символы. Их использование выходит за рамки ISO/IEC 8859; это указано в других международных стандартах, например ISO/IEC 6429.
{{citation}}
: CS1 maint: числовые имена: список авторов ( ссылка ) - ^ ИСО/ТК 97/SC 2 (1975). Набор управляющих символов ISO 646 (PDF) . ITSCJ/ IPSJ . ИСО-ИК -1.
{{citation}}
: CS1 maint: числовые имена: список авторов ( ссылка ) - ^ Консорциум Юникод (2019). 23.1: Коды управления (PDF) (изд. 12.0.0). стр. 868–870. ISBN 978-1-936213-22-1 .
{{cite book}}
:|work=
игнорируется ( помогите ) - ^ Юэлл, Дуг (16 октября 2020 г.). «Мозаичная графика, разделенная телетекстом» . Архив списка рассылки Unicode . Консорциум Юникод .
Я повторяю, что именно UTC [ Технический комитет Unicode ] и Script Ad Hoc предоставили рекомендации группе, пишущей предложение «Символы для устаревших вычислений» (и на подходе второе), что от 0x00 до 0x1F в исходном наборе телетекста следует отображать до U+0000–U+001F при преобразовании в Юникод.
- ^ Кленсин, Джон К.; Пресун, Рэнди; Уистлер, Кен; Дюрст, Мартин Дж.; Адамс, Гленн (ноябрь 2010 г.). Пресун, Р. (ред.). «RFC6082: Устаревшие символы языковых тегов Юникода: RFC 2482 является историческим» . Целевая группа инженеров Интернета (IETF). дои : 10.17487/RFC6082 .
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) - ^ Перейти обратно: а б «Юникод 8.0.0, последствия миграции» . Консорциум Юникод.
- ^ «UAX #9: Двунаправленный алгоритм Unicode» . Консорциум Юникод. 09.05.2018.