Международная система кодировки unicode обеспечивает. Кодировка «Юникод»: стандарт кодирования символов


Поскольку в ряде компьютерных систем (например, Windows NT ) фиксированные 16-битные символы уже использовались в качестве кодировки по умолчанию, было решено все наиболее важные знаки кодировать только в пределах первых 65 536 позиций (так называемая англ. basic multilingual plane, BMP ). Остальное пространство используется для «дополнительных символов» (англ. supplementary characters ): систем письма вымерших языков или очень редко используемых китайских иероглифов, математических и музыкальных символов.

Для совместимости со старыми 16-битными системами была изобретена система UTF-16 , где первые 65 536 позиций, за исключением позиций из интервала U+D800…U+DFFF, отображаются непосредственно как 16-битные числа, а остальные представляются в виде «суррогатных пар» (первый элемент пары из области U+D800…U+DBFF, второй элемент пары из области U+DC00…U+DFFF). Для суррогатных пар была использована часть кодового пространства (2048 позиций), ранее отведённого для «символов для частного использования».

Поскольку в UTF-16 можно отобразить только 2 20 +2 16 −2048 (1 112 064) символов, то это число и было выбрано в качестве окончательной величины кодового пространства Юникода.

Хотя кодовая область Юникода была расширена за пределы 2 16 уже в версии 2.0, первые символы в «верхней» области были размещены только в версии 3.1.

Роль этой кодировки в веб-секторе постоянно растёт, на начало 2010 доля веб-сайтов, использующих Юникод, составила около 50 %.

Версии Юникода

По мере изменения и пополнения таблицы символов системы Юникода и выхода новых версий этой системы, - а эта работа ведётся постоянно, поскольку изначально система Юникод включала только Plane 0 - двухбайтные коды, - выходят и новые документы ISO . Система Юникод существует в общей сложности в следующих версиях:

  • 1.1 (соответствует стандарту ISO/IEC 10646-1:), стандарт 1991-1995 годов.
  • 2.0, 2.1 (тот же стандарт ISO/IEC 10646-1:1993 плюс дополнения: «Amendments» с 1-го по 7-е и «Technical Corrigenda» 1 и 2), стандарт 1996 года.
  • 3.0 (стандарт ISO/IEC 10646-1:2000), стандарт 2000 года.
  • 3.1 (стандарты ISO/IEC 10646-1:2000 и ISO/IEC 10646-2:2001), стандарт 2001 года.
  • 3.2, стандарт 2002 года .
  • 4.0, стандарт .
  • 4.01, стандарт .
  • 4.1, стандарт .
  • 5.0, стандарт .
  • 5.1, стандарт .
  • 5.2, стандарт .
  • 6.0, стандарт .
  • 6.1, стандарт .
  • 6.2, стандарт .

Кодовое пространство

Хотя формы записи UTF-8 и UTF-32 позволяют кодировать до 2 31 (2 147 483 648) кодовых позиций, было принято решение использовать лишь 1 112 064 для совместимости с UTF-16. Впрочем, даже и этого более чем достаточно - сегодня (в версии 6.0) используется чуть менее 110 000 кодовых позиций (109 242 графических и 273 прочих символов).

Кодовое пространство разбито на 17 плоскостей по 2 16 (65536) символов. Нулевая плоскость называется базовой , в ней расположены символы наиболее употребительных письменностей. Первая плоскость используется, в основном, для исторических письменностей, вторая - для редко используемых иероглифов ККЯ , третья зарезервирована для архаичных китайских иероглифов . Плоскости 15 и 16 выделены для частного употребления.

Для обозначения символов Unicode используется запись вида «U+xxxx » (для кодов 0…FFFF), или «U+xxxxx » (для кодов 10000…FFFFF), или «U+xxxxxx » (для кодов 100000…10FFFF), где xxx - шестнадцатеричные цифры. Например, символ «я» (U+044F) имеет код 044F = 1103 .

Система кодирования

Универсальная система кодирования (Юникод) представляет собой набор графических символов и способ их кодирования для компьютерной обработки текстовых данных.

Графические символы - это символы, имеющие видимое изображение. Графическим символам противопоставляются управляющие символы и символы форматирования.

Графические символы включают в себя следующие группы:

  • буквы, содержащиеся хотя бы в одном из обслуживаемых алфавитов ;
  • цифры;
  • знаки пунктуации;
  • специальные знаки (математические , технические, идеограммы и пр.);
  • разделители.

Юникод - это система для линейного представления текста. Символы, имеющие дополнительные над- или подстрочные элементы, могут быть представлены в виде построенной по определённым правилам последовательности кодов (составной вариант, composite character) или в виде единого символа (монолитный вариант, precomposed character).

Модифицирующие символы

Представление символа «Й» (U+0419) в виде базового символа «И» (U+0418) и модифицирующего символа « ̆» (U+0306)

Графические символы в Юникоде подразделяются на протяжённые и непротяжённые (бесширинные). Непротяжённые символы при отображении не занимают места в строке . К ним относятся, в частности, знаки ударения и прочие диакритические знаки . Как протяжённые, так и непротяжённые символы имеют собственные коды. Протяжённые символы иначе называются базовыми (англ. base characters ), а непротяжённые - модифицирующими (англ. combining characters ); причём последние не могут встречаться самостоятельно. Например, символ «á» может быть представлен как последовательность базового символа «a» (U+0061) и модифицирующего символа « ́» (U+0301) или как монолитный символ «á» (U+00C1).

Особый тип модифицирующих символов - селекторы варианта начертания (англ. variation selectors ). Они действуют только на те символы, для которых такие варианты определены. В версии 5.0 варианты начертания определены для ряда математических символов, для символов традиционного монгольского алфавита и для символов монгольского квадратного письма .

Формы нормализации

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

В стандарте Юникода определены 4 формы нормализации текста:

  • Форма нормализации D (NFD) - каноническая декомпозиция. В процессе приведения текста в эту форму все составные символы рекурсивно заменяются на несколько составных, в соответствии с таблицами декомпозиции.
  • Форма нормализации C (NFC) - каноническая декомпозиция с последующей канонической композицией. Сначала текст приводится к форме D, после чего выполняется каноническая композиция - текст обрабатывается от начала к концу и выполняются следующие правила:
    • Символ S является начальным , если он имеет нулевой класс модификации в базе символов Юникода.
    • В любой последовательности символов, стартующей с начального символа S, символ C блокируется от S, если и только если между S и C есть какой-либо символ B, который или является начальным, или имеет одинаковый или больший класс модификации, чем C. Это правило распространяется только на строки, прошедшие каноническую декомпозицию.
    • Первичным композитом считается символ, у которого есть каноническая декомпозиция в базе символов Юникода (или каноническая декомпозиция для хангыля и он не входит в список исключений).
    • Символ X может быть первично совмещён с символом Y, если и только если существует первичный композит Z, канонически эквивалентный последовательности .
    • Если очередной символ C не блокируется последним встреченным начальным базовым символом L и он может быть успешно первично совмещён с ним, то L заменяется на композит L-C, а C удаляется.
  • Форма нормализации KD (NFKD) - совместимая декомпозиция. При приведении в эту форму все составные символы заменяются, используя как канонические карты декомпозиции Юникода, так и совместимые карты декомпозиции, после чего результат ставится в каноническом порядке.
  • Форма нормализации KC (NFKC) - совместимая декомпозиция с последующей канонической композицией.

Термины «композиция» и «декомпозиция» понимают под собой соответственно соединение или разложение символов на составные части.

Примеры

Исходный текст NFD NFC NFKD NFKC
Français Franc\u0327ais Fran\xe7ais Franc\u0327ais Fran\xe7ais
А, Ё, Й \u0410, \u0401, \u0419 \u0410, \u0415\u0308, \u0418\u0306 \u0410, \u0401, \u0419
\u304b\u3099 \u304c \u304b\u3099 \u304c
Henry IV Henry IV Henry IV Henry IV Henry IV
Henry Ⅳ Henry \u2163 Henry \u2163 Henry IV Henry IV

Двунаправленное письмо

Стандарт Юникод поддерживает письменности языков как с направлением написания слева направо (англ. left-to-right, LTR ), так и с написанием справа налево (англ. right-to-left, RTL ) - например, арабское и еврейское письмо. В обоих случаях символы хранятся в «естественном» порядке; их отображение с учётом нужного направления письма обеспечивается приложением.

Кроме того, Юникод поддерживает комбинированные тексты, сочетающие фрагменты с разным направлением письма. Данная возможность называется двунаправленность (англ. bidirectional text, BiDi ). Некоторые упрощённые обработчики текста (например, в сотовых телефонах) могут поддерживать Юникод, но не иметь поддержки двунаправленности. Все символы Юникода поделены на несколько категорий: пишущиеся слева направо, пишущиеся справа налево, и пишущиеся в любом направлении. Символы последней категории (в основном это знаки пунктуации) при отображении принимают направление окружающего их текста.

Представленные символы

Юникод включает практически все современные письменности , в том числе:

и другие.

С академическими целями добавлены многие исторические письменности, в том числе: руны , древнегреческая , египетские иероглифы , клинопись , письменность майя , этрусский алфавит .

В Юникоде представлен широкий набор математических и музыкальных символов, а также пиктограмм .

Однако в Юникод принципиально не включаются логотипы компаний и продуктов, хотя они и встречаются в шрифтах (например, логотип Apple в кодировке MacRoman (0xF0) или логотип Windows в шрифте Wingdings (0xFF)). В юникодовских шрифтах логотипы должны размещаться только в области пользовательских символов.

ISO/IEC 10646

Консорциум Юникода работает в тесной связи с рабочей группой ISO/IEC/JTC1/SC2/WG2, которая занимается разработкой международного стандарта 10646 (ISO /IEC 10646). Между стандартом Юникода и ISO/IEC 10646 установлена синхронизация, хотя каждый стандарт использует свою терминологию и систему документации.

Сотрудничество Консорциума Юникода с Международной организацией по стандартизации (англ. International Organization for Standardization, ISO ) началось в 1991 году . В 1993 году ISO выпустила стандарт DIS 10646.1. Для синхронизации с ним Консорциум утвердил стандарт Юникода версии 1.1, в который были внесены дополнительные символы из DIS 10646.1. В результате значения закодированных символов в Unicode 1.1 и DIS 10646.1 полностью совпали.

В дальнейшем сотрудничество двух организаций продолжилось. В 2000 году стандарт Unicode 3.0 был синхронизирован с ISO/IEC 10646-1:2000. Предстоящая третья версия ISO/IEC 10646 будет синхронизирована с Unicode 4.0. Возможно, эти спецификации даже будут опубликованы как единый стандарт.

Аналогично форматам UTF-16 и UTF-32 в стандарте Юникода, стандарт ISO/IEC 10646 также имеет две основные формы кодирования символов: UCS-2 (2 байта на символ, аналогично UTF-16) и UCS-4 (4 байта на символ, аналогично UTF-32). UCS значит универсальный многооктетный (многобайтовый) кодированный набор символов (англ. universal multiple-octet coded character set ). UCS-2 можно считать подмножеством UTF-16 (UTF-16 без суррогатных пар), а UCS-4 является синонимом для UTF-32.

Способы представления

Юникод имеет несколько форм представления (англ. Unicode transformation format, UTF ): UTF-8 , UTF-16 (UTF-16BE, UTF-16LE) и UTF-32 (UTF-32BE, UTF-32LE). Была разработана также форма представления UTF-7 для передачи по семибитным каналам, но из-за несовместимости с ASCII она не получила распространения и не включена в стандарт. 1 апреля 2005 года были предложены две шуточные формы представления: UTF-9 и UTF-18 (RFC 4042).

Unicode UTF-8: 0x00000000 - 0x0000007F: 0xxxxxxx 0x00000080 - 0x000007FF: 110xxxxx 10xxxxxx 0x00000800 - 0x0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx 0x00010000 - 0x001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

Теоретически возможны, но не включены в стандарт также:

0x00200000 - 0x03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 0x04000000 - 0x7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

Несмотря на то, что UTF-8 позволяет указать один и тот же символ несколькими способами, только наиболее короткий из них правильный. Остальные формы должны отвергаться по соображениям безопасности.

Порядок байтов

В потоке данных UTF-16 старший байт может записываться либо перед младшим (англ. UTF-16 big-endian ), либо после младшего (англ. UTF-16 little-endian ). Аналогично существует два варианта четырёхбайтной кодировки - UTF-32BE и UTF-32LE.

Для определения формата представления Юникода в начало текстового файла записывается сигнатура - символ U+FEFF (неразрывный пробел с нулевой шириной), также именуемый меткой порядка байтов (англ. byte order mark, BOM ). Это позволяет различать UTF-16LE и UTF-16BE, поскольку символа U+FFFE не существует. Также этот способ иногда применяется для обозначения формата UTF-8, хотя к этому формату и неприменимо понятие порядка байтов. Файлы, следующие этому соглашению, начинаются с таких последовательностей байтов:

UTF-8 EF BB BF UTF-16BE FE FF UTF-16LE FF FE UTF-32BE 00 00 FE FF UTF-32LE FF FE 00 00

К сожалению, этот способ не позволяет надёжно различать UTF-16LE и UTF-32LE, поскольку символ U+0000 допускается Юникодом (хотя реальные тексты редко начинаются с него).

Файлы в кодировках UTF-16 и UTF-32, не содержащие BOM, должны иметь порядок байтов big-endian (unicode.org).

Юникод и традиционные кодировки

Внедрение Юникода привело к изменению подхода к традиционным 8-битным кодировкам. Если раньше кодировка задавалась шрифтом, то теперь она задаётся таблицей соответствия между данной кодировкой и Юникодом. Фактически 8-битные кодировки превратились в форму представления некоторого подмножества Юникода. Это намного упростило создание программ, которые должны работать с множеством разных кодировок: теперь, чтобы добавить поддержку ещё одной кодировки, надо всего лишь добавить ещё одну таблицу перекодировки в Юникод.

Кроме того, многие форматы данных позволяют вставлять любые символы Юникода, даже если документ записан в старой 8-битной кодировке. Например, в HTML можно использовать коды с амперсандом .

Реализации

Большинство современных операционных систем в той или иной степени обеспечивают поддержку Юникода.

Одной из первых успешных коммерческих реализаций Юникода стала среда программирования Java . В ней принципиально отказались от 8-битного представления символов в пользу 16-битного. Сейчас большинство языков программирования поддерживают строки Юникода, хотя их представление может различаться в зависимости от реализации.

Методы ввода

Консоль GNU/Linux также допускает ввод символа Юникода по его коду - для этого десятичный код символа нужно ввести цифрами расширенного блока клавиатуры при зажатой клавише Alt. Можно вводить символы и по их шестнадцатеричному коду: для этого нужно зажать клавишу AltGr, и для ввода цифр A-F использовать клавиши расширенного блока клавиатуры от NumLock до Enter (по часовой стрелке). Поддерживается также и ввод в соответствии с ISO 14755. Для того чтобы перечисленные способы могли работать, нужно включить в консоли режим Юникода вызовом unicode_start (1) и выбрать подходящий шрифт вызовом setfont (8).

Написание «Юникод» уже твёрдо вошло в русскоязычные тексты. Согласно «Яндексу », частота использования этого слова примерно в 11 раз превышает «Уникод» . В Википедии используется более распространённый вариант.

На сайте Консорциума есть специальная страница, где рассматриваются проблемы передачи слова «Unicode» в различных языках и системах письма. Для русской кириллицы указан вариант «Юникод» .

Формы, принятые иностранными организациями для русской передачи слова «Unicode», являются рекомендательными.

См. также

  • Проект:Внесение символов алфавитов народов России в Юникод

Примечания

  1. Unicode Transcriptions (англ.) . Архивировано из первоисточника 22 августа 2011. Проверено 10 мая 2010.
  2. Уникод в словаре Paratype
  3. The Unicode® Standard: A Technical Introduction . Архивировано
  4. History of Unicode Release and Publication Dates . Архивировано из первоисточника 22 августа 2011. Проверено 4 июля 2010.
  5. The Unicode Consortium . Архивировано из первоисточника 22 августа 2011. Проверено 4 июля 2010.
  6. Foreword . Архивировано из первоисточника 22 августа 2011. Проверено 4 июля 2010.
  7. General Structure . Архивировано из первоисточника 22 августа 2011. Проверено 5 июля 2010.
  8. European Alphabetic Scripts . Архивировано из первоисточника 22 августа 2011. Проверено 4 июля 2010.
  9. Unicode 88 . Архивировано из первоисточника 22 августа 2011. Проверено 8 июля 2010.
  10. Unicode and Microsoft Windows NT (англ.) . Microsoft Support . Архивировано
  11. Unicode используется почти на 50% веб-сайтов (рус.) . Архивировано из первоисточника 22 августа 2011.
  12. Roadmap to the TIP (Tertiary Ideographic Plane)
  13. http://www.cl.cam.ac.uk/~mgk25/ucs/utf-8-history.txt (англ.)
  14. Регистр в Unicode - это непросто
  15. В большинстве шрифтов для ПК реализованы «прописные» (маюскульные) моноширинные цифры.
  16. В некоторых случаях документ (не простой текст) в Юникоде может занимать существенно меньше места, чем документ в однобайтовой кодировке. Например, если некая веб-страница содержит примерно поровну русского и греческого текста, то в однобайтовой кодировке придётся либо русские, либо греческие буквы записывать, используя возможности формата документов, в виде кодов с амперсандом, которые занимают 6-7 байт на символ (при использовании десятичных кодов), т. е. в среднем на букву придётся 3,5-4 байта, в то время как UTF-8 занимает только 2 байта на греческую или русскую букву.
  17. Один из файлов шрифтов Arial Unicode имеет размер 24 мегабайта; существует Times New Roman размером 120 мегабайт, он содержит количество символов, близкое к 65536.
  18. Даже для самого современного и дорогого мобильного телефона затруднительно выделить 120 Мбайт памяти для полного Юникод-шрифта. На практике использование полных шрифтов требуется редко.
  19. 350 тыс. страниц «Юникод » против 31 тыс. страниц «Уникод ».

Ссылки

  • Официальный сайт Консорциума Юникода (англ.)
  • Unicode в каталоге ссылок Open Directory Project (dmoz). (англ.)
  • Что такое Unicode? (рус.)
  • Последняя версия стандарта Юникод (англ.)
  • Таблица символов Юникода с названиями и описаниями (рус.) (англ.)
  • Связь Юникода и ISO/IEC 10646 (файл PDF) (англ.)
  • FAQ по UTF-8 и Unicode (англ.)
  • Кириллица в Юникоде:

В попытках настроить ту или иную функцию интернета любой пользователь наверняка сталкивался с таким понятием, как «Юникод». Чтобы узнать, что означает это понятие, прочитайте данную статью до конца.

«Юникод»: определение

Под термином «Юникод» сегодня имеют в виду стандарт кодирования символов. Данный стандарт был предложен в 1991 году некоммерческой организацией Unicode Inc. Стандарт «Юникод» разрабатывался для объединения большого числа различных символов в одном документе. Страница, созданная на основе такой кодировки, может содержать в себе иероглифы, буквы, и математические символы. В данной кодировке без проблем отображаются все символы.

«Юникод»: причины создания

Еще задолго до появления системы «Юникод», кодировки выбирались исходя из предпочтений автора документа. Нередко по этой причине, чтобы прочитать один документ, приходилось использовать различные таблицы. Однако делать это приходилось по несколько раз. Это существенно усложняло жизнь обычным пользователям. Как уже было сказано ранее, в 1991 году для решения данной проблемы некоммерческая организация Unicode Inc. предложила использовать новый тип кодирования информации. Данный тип кодирования был создан для объединения самых разнообразных стандартов. Кодировка «Юникод» позволила добиться невозможного: создать инструмент, поддерживающий огромное количество разнообразных символов. Полученный результат превзошел ожидания: получились документы, которые одновременно могли содержать в себе как русский, так и английский текст, а также математические выражения и латынь. Перед созданием единой системы кодировки разработчикам предстояло решить целый ряд проблем, возникающих из-за существования огромного числа стандартов, которые уже существовали на данный момент. К самым распространенным из таких проблем относились ограниченность набора символов, эльфийские письмена, дублирование шрифтов и проблема преобразования различных кодировок.

«Юникод»: экскурс в историю

Представьте себе следующую картину: на дворе 80-е, компьютерная техника еще не получила столь широкого распространения и имеет вид, отличный от сегодняшнего. Каждая операционная система по-своему уникальна и доработана энтузиастами под те или иные конкретные нужды. В результате необходимость в обмене информацией привела к дополнительным доработкам. При попытке прочитать документ, созданный в другой операционной системе, на экране обычно выводились непонятные наборы символов. Это требовало дальнейшей работы с кодировкой, которую не всегда получалось выполнить быстро. Порой на обработку необходимого документа уходило несколько месяцев. Пользователи, которым часто приходится обмениваться информацией, стали создавать для себя особые таблицы преобразования. Работа с такими таблицами выявила одну интересную особенность: создавать такие таблицы необходимо одновременно по двум направлениям. Машина не может выполнить банальную инверсию вычислений. Для нее в правом столбце записан исходный файл, а в левом результат. Наоборот переставить их нельзя. При необходимости использовать в документе какие-то специальные символы, сначала их необходимо было добавить, а потом еще объяснить другому пользователю, что нужно с ними сделать, чтобы они не превратились в «крякозябры». Также стоит учитывать, что под каждую кодировку приходилось разрабатывать собственные шрифты. Это привело к созданию огромного количества дублей в операционной системе. Так, например, на одной странице пользователь мог наблюдать десяток шрифтов, идентичных стандартному Times New Roman, но с пометками UCS-2, UTF-16, UTF-8, ANSI. Таким образом, назрела необходимость разработки универсального стандарта.

«Юникод»: создатели

Начало истории создания «Юникод» можно отнести к 1987 году. Именно тогда Джо Беккер из компании Xerox вместе с Марком Дэвисом и Ли Коллинзом из компании Apple приступили к исследованиям в области практической разработки универсальной кодировки. В 1988 году Джо Беккер опубликовал проект создания международной многоязычной кодировки. Несколько месяцев спустя работая группа по разработке «Юникод» была расширена. В нее вошли такие специалисты, как Гленн Райт из Sun Microsystems, Майк Кернеган и Кен Уистлер из RLG. Это позволило завершить работы по предварительному формированию единого стандарта кодирования.

«Юникод»: общее описание

В основе кодировки Unicode лежит общее понятие символа. Под данным определением понимают абстрактное явление, которое существует в виде письменности, реализуемой через графемы. В «Юникод» каждому символу сопоставляется уникальный код, который принадлежит тому или иному блоку стандарта. Так, к примеру, графема «В» присутствует и в английском, и в русском языках, но ей соответствует два разных символа. К данным символам также может применяться преобразование в строчную букву. Это значит, что каждый из этих символов описывается ключом, набором свойств и названием.

«Юникод»: преимущества

От других современных систем кодировки «Юникод» отличается огромным запасом знаков для «шифрования» различных символов. Все дело в том, что предшествующие кодировки имели всего 8 бит. Это значит, что они поддерживали всего 28 символов. Новая разработка имела 216 символов, что стало большим шагом вперед. Таким образом появилась возможность закодировать практически все существующие алфавиты. Необходимость использования таблиц преобразования с появлением «Юникода» отпала. Наличие единого стандарта просто сводило их полезность к нулю. Вместе с тем исчезли и «крякозябры». Появление нового стандарта сделало их существование невозможным. Также была исключена необходимость создания дублей шрифтов.

«Юникод»: развитие

Несмотря на то, что прогресс не стоит на месте, кодировка «Юникод» продолжает удерживать лидирующие позиции в мире. Это стало возможным во многом благодаря тому, что он стал легко внедряемым и получил широкое распространение. При это не стоит считать, что сегодня используется такая же кодировка «Юникод», что и 25 лет назад. Сегодня используется версия 5.x.x. Число кодируемых символов возросло до 231. С момента возникновения до появления версии 2.0.0 кодировка «Юникод» увеличила число входящих в нее символов практически в два раза. В последующие годы такой рост возможностей продолжился. К моменту появления версии 4.0.0 возникла необходимость увеличения самого стандарта. В результате кодировка «Юникод» обрела вид, в котором мы ее знаем сегодня.

Что же еще полезного есть в «Юникод»? Кроме огромного, постоянно пополняющегося количества символов, кодировка «Юникод» имеет одну довольно полезную особенность. Это нормализация. Кодировка не тратит ресурсы компьютера на регулярную проверку одного и того же символа, который в разных алфавитах может иметь похожее написание. Для этой цели используется специальный алгоритм, который дает возможность вынести схожие символы отдельно графой и обращаться к ним, а не проверять каждый раз всю информацию. Всего разработано и внедрено четыре таких алгоритма. Преобразование в каждом из них осуществляется по определенному принципу, отличающемуся от других.

Ряд цифр и букв имеют внешне схожее начертание, малоразличимое при небольшом размере шрифта. Например, цифры "0", "1" и буквы "О", "l" (L). Это является серьёзной проблемой, особенно в тех случаях, когда необходимо строго однозначное прочтение символов. К примеру, при записи ручкой на листке бумаги или печати на принтере своего буквенно-цифрового пароля. Решением данной проблемы пришлось заниматься первым программистам и фонт-дизайнерам (в XX-м веке, в самом начале компьютерной эры). Давно уже, появились специальные контрастные шрифты, такие как Inconsolata, Consolas (системный в OS Windows), Anonymous Pro, Deja Vu Sans Mono и многие другие. Некоторые из них можно бесплатно скачать по ссылкам с сайтов их авторов-создателей и с профильных Интернет-ресурсов.
Смотреть пример:
http://www.levien.com/type/myfonts/inconsolata.html

Если допускается техническими условиями и проектным заданием, то вместо цифрового нуля, в HTML-код ставится "Ø" (latin capital letter O with stroke, с косым штрихом, из модификации латинского алфавита для скандинавских языков - норвежского и датского), приблизительно похожий, своим начертанием, на перечёркнутый пополам нолик. В текстовом редакторе - такой значок берётся, копируется из таблицы спецсимволов (Special Character), и вставляется в нужную позицию в строке. Данный лайфхак-приём будет полезен, если возникают сложности с поиском и установкой на девайс специального фонта. Этот совет позволит сэкономить время и не перепутать цифру "0" (zero) с буквой "О" не только на мониторе вашего ПК, но и на экранах других устройств, где может не оказаться нужного шрифта. Такая форма записи, традиционно, применяется при обозначении на листе бумаги смешанной, буквенно-цифровой информации, например, своего пароля, кода доступа. Примечательно, что даже есть шутливое выражение " ", подчёркивающее важность наличия этого элемента, наделяющего символ определённым смыслом и значением. Графический вид нуля в разных типах шрифтов - можно посмотреть и сравнить их изображение на картинках с помощью специализированного сервиса на странице сайта:
http://www.fileformat.info/info/unicode/char/0030/fontsupport.htm

Рисунок 2

При редактировании и правке текста, перечёркивание неправильно написанного или ненужного символа - производится большим косым крестиком (двумя крест-накрест перекрещивающимися диагональными штрихами равной длины). В текстовом редакторе это осуществляется средствами форматирования - сначала выделяется фрагмент, а затем в меню нажимается последовательность кнопок и вкладок (Format - Character - Font Effects - Strikethrough) для выбора из выпадающих списков необходимого эффекта. Зачёркивание одного или нескольких слов в строчке или в целом абзаце документа - делается с помощью горизонтальной одинарной или двойной линии, достаточной толщины.

Если нужно точно выяснить, что в тексте написано - буква или цифра, то можно, в режиме поиска на странице, задать нужный символ и убедиться, что он будет найден именно там.

Стандарт предложен в 1991 году некоммерческой организацией «Консорциум Юникода» (англ. Unicode Consortium, Unicode Inc.). Применение этого стандарта позволяет закодировать очень большое число символов из разных письменностей: в документах Unicode могут соседствовать китайские иероглифы, математические символы, буквы греческого алфавита, латиницы и кириллицы, при этом становится ненужным переключение кодовых страниц.

Стандарт состоит из двух основных разделов: универсальный набор символов (англ. UCS, universal character set) и семейство кодировок (англ. UTF, Unicode transformation format). Универсальный набор символов задаёт однозначное соответствие символов кодам - элементам кодового пространства, представляющим неотрицательные целые числа. Семейство кодировок определяет машинное представление последовательности кодов UCS.

Стандарт Unicode был разработан с целью создания единой кодировки символов всех современных и многих древних письменных языков. Каждый символ в этом стандарте кодируется 16 битами, что позволяет ему охватить несравненно большее количество символов, чем принятые ранее 8-битовые кодировки. Еще одним важным отличием Unicode от других систем кодировки является то, что он не только приписывает каждому символу уникальный код, но и определяет различные характеристики этого символа, например:

Тип символа (прописная буква, строчная буква, цифра, знак препинания и т.д.);

Атрибуты символа (отображение слева направо или справа налево, пробел, разрыв строки и т.д.);

Соответствующая прописная или строчная буква (для строчных и прописных букв соответственно);

Соответствующее числовое значение (для цифровых символов).

Весь диапазон кодов от 0 до FFFF разбит на несколько стандартных подмножеств, каждое из которых соответствует либо алфавиту какого-то языка, либо группе специальных символов, сходных по своим функциям. На приведенной ниже схеме содержится общий перечень подмножеств Unicode 3.0 (рисунок 2).

Рисунок 2

Стандарт Unicode является основой для хранения и текста во многих современных компьютерных системах. Однако, он не совместим с большинством Интернет-протоколов, поскольку его коды могут содержать любые байтовые значения, а протоколы обычно используют байты 00 - 1F и FE - FF в качестве служебных. Для достижения совместимости были разработаны несколько форматов преобразования Unicode (UTFs, Unicode Transformation Formats), из которых на сегодня наиболее распространенным является UTF-8. Этот формат определяет следующие правила преобразования каждого кода Unicode в набор байтов (от одного до трех), пригодных для транспортировки Интернет-протоколами.


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

Дальнейшее развитие стандарта Unicode связано с добавлением новых языковых плоскостей, т.е. символов в диапазонах 10000 - 1FFFF, 20000 - 2FFFF и т.д., куда предполагается включать кодировку для письменностей мертвых языков, не попавших в таблицу, приведенную выше. Для кодирования этих дополнительных символов был разработан новый формат UTF-16.

Таким образом, существует 4 основных способа кодировки байтами в формате Unicode:

UTF-8: 128 символов кодируются одним байтом (формат ASCII), 1920 символов кодируются 2-мя байтами ((Roman, Greek, Cyrillic, Coptic, Armenian, Hebrew, Arabic символы), 63488 символов кодируются 3-мя байтами (Китайский, японский и др.) Оставшиеся 2 147 418 112 символы (еще не использованы) могут быть закодированы 4, 5 или 6-ю байтами.

UCS-2: Каждый символ представлен 2-мя байтами. Данная кодировка включает лишь первые 65 535 символов из формата Unicode.

UTF-16:Является расширением UCS-2, включает 1 114 112 символов формата Unicode. Первые 65 535 символов представлены 2-мя байтами, остальные - 4-мя байтами.

USC-4: Каждый символ кодируется 4-мя байтами.

Верите вы или нет, но существует формат изображений, встроенных в браузер. Этот формат позволяет загружать изображения до того, как они понадобились, обеспечивает рендеринг изображения на обычных или retina экранах и позволяет добавлять к изображениям CSS. ОК, это не совсем правда. Это не формат изображения, хотя все остальное остается в силе. Используя его, вы можете создавать иконки, независимые от разрешения, не требующие время на загрузку и стилизуемые с помощью CSS.

Что такое Юникод?

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

Юникод продолжает развиваться: сейчас актуальна версия 8.0 в которой более 120 тысяч символов (в оригинальной статье, опубликованной в начале 2014 года, речь шла о версии 6.3 и 110 тысячах символов).

Кроме букв и цифр, в Юникоде есть и другие символы и иконки. В последних версиях в их число вошли эмодзи , которые вы можете видеть в месседжере iOS.

Страницы HTML создаются из последовательности символов Юникода и при отсылке по сети они конвертируются в байты. Каждая буква и каждый символ любого языка имеют свой уникальный код и кодируются при сохранении файла.

При использовании системы кодирования UTF-8 вы можете напрямую вставлять в текст символы Юникода, но также можно добавлять их в текст, указывая цифровую символьную ссылку. Например, это символ сердечка и вы можете вывести этот символ, просто добавив код в разметку .

Эту числовую ссылку можно задавать как в десятичном формате, так и в шестнадцатеричном. Десятичный формат требует добавления в начале буквы x , запись даст то же самое сердечко ( ), что и предыдущий вариант. (2665 это шестнадцатеричный вариант 9829).

Если вы добавляете символ Юникода с помощью CSS, то вы можете использовать только шестнадцатеричные значения .

Некоторые наиболее часто используемые символы Юникода имеют более запоминаемые текстовые имена или аббревиатуры вместо цифровых кодов - это, например, амперсанд (& - &). Такие символы называются мнемоники в HTML , их полный список есть в Википедии .

Почему вам стоит использовать Юникод?

Хороший вопрос, вот несколько причин:

  1. Чтобы использовать корректные символы из разных языков.
  2. Для замены иконок.
  3. Для замены иконок, подключаемых через @font-face .
  4. Для задания CSS-классов

Корректные символы

Первая из причин не требует никаких дополнительных действий. Если HTML сохранен в формате UTF-8 и его кодировка передана по сети как UTF-8, все должно работать как надо.

Должно. К сожалению, не все браузеры и устройства поддерживают все символы Юникода одинаково (точнее, не все шрифты поддерживают полный набор символов). Например, недавно добавленные символы эмодзи поддерживаются не везде.

Для поддержки UTF-8 в HTML5 добавьте (при отсутствии доступа к настройкам сервера стоит добавить также ). При старом доктайпе используется ().

Иконки

Вторая причина использования Юникода это наличие большого количества полезных символов, которые можно использовать в качестве иконок. Например, , ≡ и .

Их очевидный плюс в том, что вам не надо никаких дополнительных файлов, чтобы добавить их на страницу, а, значит, ваш сайт будет быстрее. Вы также можете изменить их цвет или добавить тень с помощью CSS. А добавив переходы (css transition) вы сможете плавно менять цвет иконки при наведении на нее без каких-либо дополнительных изображений.

Предположим, что я хочу подключить индикатор рейтинга со звездами на свою страницу. Я могу сделать это так:

★ ★ ★ ☆ ☆

Получится следующий результат:

Но если вам не повезет, вы увидите что-то вроде этого:

Тот же рейтинг на BlackBerry 9000

Так бывает, если используемые символы отсутствуют в шрифте браузера или устройства (к счастью, эти звездочки поддерживаются отлично и старые телефоны BlackBerry являются здесь единственным исключением).

Если символ Юникода отсутствует, на его месте могут быть разные символы от пустого квадрата (□) до ромба со знаком вопроса (�).

А как найти символ Юникода, который может подойти для использования в вашем дизайне? Вы можете поискать его на сайте типа Unicodinator , просматривая имеющиеся символы, но есть и лучший вариант. - этот отличный сайт позволяет вам нарисовать искомую иконку, после чего предлагает вам список похожих символов Юникода.

Использование Юникода с @font-face иконками

Если вы используете иконки, подключаемые с внешним шрифтом через @font-face , символы Юникода можно использовать в качестве запасного варианта. Таким образом вы можете показать похожий символ Юникода на тех устройствах или в браузерах, где @font-face не поддерживается:

Слева иконки Font Awesome в Chrome, а справа замещающие их символы Юникода в Opera Mini.

Многие инструменты для подбора @font-face используют диапазон символов Юникода из области для частного использования (private use area). Проблема этого подхода в том, что если @font-face не поддерживается, пользователю передаются коды символов без какого-либо смысла.

Отлично подходит для создания наборов иконок в @font-face и позволяет выбрать в качестве основы для иконки подходящий символ Юникода.

Но будьте внимательны - некоторые браузеры и устройства не любят отдельные символы Юникода при их использовании с @font-face . Имеет смысл проверить поддержку символов Юникода с помощью Unify - это приложение поможет вам определить, насколько безопасно использование символа в наборе иконок @font-face .

Поддержка символов Юникода

Основная проблема с использованием символов Юникода в качестве запасного варианта это плохая поддержка в скринридерах (опять-таки, некоторые сведения об этом можно найти на Unify), поэтому важно осторожно выбирать используемые символы.

Если ваша иконка это просто декоративный элемент рядом с текстовой меткой, читаемым скринридером, вы можете особо не волноваться. Но если иконка расположена отдельно, стоит добавить скрытую текстовую метку, чтобы помочь пользователям скринридеров. Даже если символ Юникода будет считан скринридером, есть вероятность, что он будет сильно отличен от своего предназначения. Например, ≡ (≡) в качестве иконки-гамбургера будет считан VoiceOver на iOS как “идентичный”.

Юникод в названиях CSS-классов

То, что Юникод можно использовать в названиях классов и в таблицах стилей известно с 2007 года. Именно тогда Джонатан Снук написал об использовании символов Юникода во вспомогательных классов при верстке скругленных углов . Особого распространения эта идея не получила, но о возможности использовать Юникод в названиях классов (спецсимволы или кириллицу) знать стоит.

Выбор шрифтов

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

Много иконок в Segoe UI Symbol или Arial Unicode MS . Эти шрифты есть и на PC и на Mac; в Lucida Grande также достаточное количество символов Юникода. Вы можете добавить эти шрифты в декларацию font-family , чтобы обеспечить наличие максимального количества символов Юникода для пользователей, у которых эти шрифты установлены.

Определение поддержки Юникода

Было бы очень удобно иметь возможность проверить наличие того или иного символа Юникода, но нет гарантированного способа сделать это.

Символы Юникода могут быть эффективны при наличии поддержки. Например, эмодзи в теме письма выделяет его на фоне остальных в почтовом ящике.

Заключение

Эта статья затрагивает лишь основы Юникода. Надеюсь, она окажется полезной и поможет вам лучше понять Юникод и эффективно применять его.

Список ссылок

  • (Генератор набора иконок @font-face на основе Юникода)
  • Shape Catcher (Инструмент для распознавания символов Юникода)
  • Unicodinator (таблица символов Юникода)
  • Unify (Проверка поддержки символов Юникода в браузерах)
  • Unitools (Коллекция инструментов для работы с Юникодом)






2024 © gtavrl.ru.