Знаймо

Додати знання

приховати рекламу

Цей текст може містити помилки.

Юнікод


Unicode Consortium

План:


Введення

Unicode Consortium

Юникод [1] або Унікод [2] ( англ. Unicode ) - Стандарт кодування символів, що дозволяє представити знаки практично всіх письмових мов. [3]

Стандарт запропонований в 1991 некомерційною організацією "Консорціум Юнікоду" ( англ. Unicode Consortium, Unicode Inc. ). [4] [5] Застосування цього стандарту дозволяє закодувати дуже велике число символів з ​​різних писемностей: у документах Unicode можуть сусідити китайські ієрогліфи, математичні символи, букви грецького алфавіту, латиниці і кирилиці, при цьому стає непотрібним перемикання кодових сторінок. [6]

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

Коди в стандарті Юнікод розділені на кілька областей. Область з кодами від U +0000 до U +007 F містить символи набору ASCII з відповідними кодами. Далі розташовані області знаків різних писемностей, знаки пунктуації і технічні символи. Частина кодів зарезервована для використання в майбутньому. [7] Під символи кирилиці виділені області знаків з кодами від U +0400 до U +052 F, від U +2 DE0 до U +2 DFF, від U + A640 до U + A69F (див. Кирилиця в Юникоде). [8]


1. Передумови створення і розвиток Юнікоду

До кінця 1980-х років стандартом стали 8-бітові символи, при цьому існувало безліч різних 8-бітних кодувань, і постійно з'являлися все нові. Це пояснювалося як постійним розширенням кола підтримуваних мов, так і прагненням створити кодування, частково сумісну з якою-небудь інший (характерний приклад - поява альтернативної кодування для російської мови, обумовлене експлуатацією західних програм, створених для кодування CP437). У результаті з'явилося кілька проблем:

  1. Проблема " кракозябри "(відображення документів в неправильному кодуванні): [6] її можна було вирішити або послідовним впровадженням методів вказівки використовуваного кодування, або впровадженням єдиної для всіх кодування.
  2. Проблема обмеженості набору символів: [6] її можна було вирішити або перемиканням шрифтів усередині документа, або впровадженням "широкої" кодування. Перемикання шрифтів здавна практикувалося в текстових процесорах, причому часто використовувалися шрифти з нестандартною кодуванням, т. зв. "Dingbat fonts" - в підсумку при спробі перенести документ в іншу систему всі нестандартні символи перетворювалися на кракозябри.
  3. Проблема перетворення одного кодування в іншу: її можна було вирішити або складанням таблиць перекодування для кожної пари кодувань, або використанням проміжного перетворення в третю кодування, що включає всі символи всіх кодувань. [9]
  4. Проблема дублювання шрифтів: традиційно для кожного кодування робився свій шрифт, навіть якщо ці кодування частково (або повністю) збігалися з набору символів: цю проблему можна було вирішити, роблячи "великі" шрифти, з яких потім вибираються потрібні для даної кодування символи - однак це вимагає створення єдиного реєстру символів, щоб визначати, чому що відповідає.

Було визнано необхідним створення єдиної "широкої" кодування. Кодування зі змінною довжиною символу, широко використовуються в Східній Азії, були визнані занадто складними у використанні, тому було вирішено використовувати символи фіксованої ширини. Використання 32-бітових символів здавалося занадто марнотратним, тому було вирішено використовувати 16-бітні.

Таким чином, перша версія Юнікоду представляла собою кодування за фіксованим розміром символу в 16 біт, тобто загальне число кодів було 2 16 (65536). Звідси походить практика позначення символів чотирма шістнадцятковими цифрами (наприклад, U+0410). При цьому в Юникоде планувалося кодувати не всі існуючі символи, а тільки ті, які необхідні в повсякденному побуті. Рідко використовувані символи повинні були розміщуватися в "області користувальницьких символів" ( private use area ), Яка спочатку займала коди U+D800U+F8FF. Щоб використовувати Юнікод також і був посередником при перетворенні різних кодувань один в одного, в нього включили всі символи, представлені у всіх найбільш відомих кодуваннях.

Надалі, проте, було прийнято рішення кодувати всі символи і в зв'язку з цим значно розширити кодову область. Одночасно з цим, коди символів стали розглядатися не як 16-бітові значення, а як абстрактні числа, які в комп'ютері можуть представлятися безліччю різних способів (див. Способи подання).

Оскільки в ряді комп'ютерних систем (наприклад, Windows NT [10]) фіксовані 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%. [11]


2. Версії Юнікоду

У міру зміни і поповнення таблиці символів системи Юнікод і виходу нових версій цієї системи, - а ця робота ведеться постійно, оскільки спочатку система Юникод включала тільки Plane 0 - двухбайтного коди, - виходять і нові документи ISO. Система Юникод існує в цілому в наступних версіях:

  • 1.1 (відповідає стандарту ISO / IEC 10646-1: 1993), стандарт 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.2, стандарт 2002.
  • 4.0, стандарт 2003.
  • 4.01, стандарт 2004.
  • 4.1, стандарт 2005.
  • 5.0, стандарт 2006.
  • 5.1, стандарт 2008.
  • 5.2, стандарт 2009.
  • 6.0, стандарт 2010.

3. Кодове простір

Хоча форми запису UTF-8 і UTF-32 дозволяють кодувати до 2 31 (2147483648) кодових позицій, було прийнято рішення використовувати лише 1112064 для сумісності з UTF-16. Втім, навіть і цього більш ніж достатньо - сьогодні (у версії 6.0) використовується трохи менше 110 000 кодових позицій (109242 графічних і 273 інших символів).

Кодове простір розбито на 17 площин по 2 16 (65536) символів. Нульова площину називається базовою, в ній розташовані символи найбільш уживаних писемностей. Перша площина використовується, в основному, для історичних писемностей, друга - для рідко використовуваних ієрогліфів ККЯ, третя зарезервована для архаїчних китайських ієрогліфів [12]. Площини 15 і 16 виділені для приватного вжитку. [7]

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


4. Система кодування

Універсальна система кодування (Юнікод) являє собою набір графічних символів і спосіб їх кодування для комп'ютерної обробки текстових даних.

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

Графічні символи включають в себе такі групи:

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

Юнікод - це система для лінійного представлення тексту. Символи, що мають додаткові над-або підрядкові елементи, можуть бути представлені у вигляді побудованої за певними правилами послідовності кодів (складовою варіант, composite character) або у вигляді єдиного символу (монолітний варіант, precomposed character).


5. Модифікуючі символи

Представлення символу "Й" (U +0419) у вигляді базового символу "І" (U +0418) і модифікує символу "̆" (U +0306)

Графічні символи в Юникоде поділяються на протяжні і непротяжних (бесшірінние). Непротяжних символи при відображенні не займають місця в рядку. До них належать, зокрема, знаки наголосу та інші діакритичні знаки. Як протяжні, так і непротяжних символи мають власні коди. Протяжні символи інакше називаються базовими ( англ. base characters ), А непротяжних - модифікуючими ( англ. combining characters ); Причому останні не можуть зустрічатися самостійно. Наприклад, символ "" може бути представлений як послідовність базового символу "a" (U +0061) і модифікує символу "" (U +0301) або як монолітний символ "" (U +00 C1).

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


6. Форми нормалізації

Оскільки одні й ті ж символи можна уявити різними кодами, що іноді ускладнює обробку, існують процеси нормалізації, призначені для приведення тексту до певного стандартного вигляду.

У стандарті Юнікод визначено 4 форми нормалізації тексту:

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

Терміни "композиція" і "декомпозиція" розуміють під собою відповідно з'єднання або розкладання символів на складові частини.


6.1. Приклади

Оригінальний текст NFD NFC NFKD NFKC
Franais Franc\u0327ais Fran\xe7ais Franc\u0327ais Fran\xe7ais
А, Е, Й \u0410, \u0415\u0308, \u0418\u0306 \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

7. Двонаправлене лист

Стандарт Юнікод підтримує писемності мов як з напрямком написання зліва направо ( англ. left-to-right, LTR ), Так і з написанням справа наліво ( англ. right-to-left, RTL ) - Наприклад, арабське і єврейське письмо. В обох випадках символи зберігаються в "природному" порядку; їх відображення в обліку потрібного напрямку письма забезпечується додатком.

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


8. Представлені символи

Схема базової площини Unicode, см. опис

Юникод включає практично всі сучасні писемності, в тому числі:

та інші.

З академічними цілями додані багато історичних писемності, у тому числі: руни, давньогрецька, єгипетські ієрогліфи, клинопис, писемність майя, етруська алфавіт.

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

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


9. 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.


10. Способи подання

Юнікод має декілька форм представлення ( англ. 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).

В Microsoft Windows NT та заснованих на ній системах Windows 2000 і Windows XP в основному використовується форма UTF-16LE. В UNIX -подібних операційних системах GNU / Linux, BSD і Mac OS X прийнята форма UTF-8 для файлів і UTF-32 або UTF-8 для обробки символів у оперативної пам'яті.

Punycode - інша форма кодування послідовностей Unicode-символів в так звані ACE-послідовності, які складаються тільки з алфавітно-цифрових символів, як це дозволено в доменних іменах.


10.1. UTF-8

UTF-8 - представлення Юнікоду, що забезпечує найкращу сумісність зі старими системами, які використовували 8-бітові символи. Текст, що складається тільки з символів з номером менше 128, при записі в UTF-8 перетворюється на звичайний текст ASCII. І навпаки, в тексті UTF-8 будь байт із значенням менше 128 зображає символ ASCII з тим же кодом. Решта символів Юнікоду зображуються послідовностями завдовжки від 2 до 6 байт (на ділі, тільки до 4 байт, оскільки в Юникоде немає символів з ​​кодом більше 10FFFF, і вводити їх в майбутньому не планується), в яких перший байт завжди має вид 11xxxxxx, а решта - 10xxxxxx.

Формат UTF-8 був винайдений 2 вересня 1992 Кеном Томпсоном і Робом Пайком і реалізований в Plan 9 [13]. Зараз стандарт UTF-8 офіційно закріплений в документах RFC 3629 і ISO / IEC 10646 Annex D.

Символи UTF-8 виходять з Unicode таким чином :

 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 дозволяє вказати один і той же символ кількома способами, тільки найбільш короткий з них правильний. Інші форми повинні відхилятися з міркувань безпеки.


10.2. Порядок байтів

У потоці даних 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).


10.3. Юнікод і традиційні кодування

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

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


10.4. Реалізації

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

В операційних системах сімейства Windows NT для внутрішнього представлення імен файлів і інших системних рядків використовується двухбайтовая кодування UTF-16LE. Системні виклики, які беруть строкові параметри, існують в однобайтное і двухбайтного варіантах. Детальніше див Юникод в операційних системах Microsoft.

UNIX -подібні операційні системи, у тому числі GNU / Linux, BSD, Mac OS X, використовують для представлення Юнікоду кодування UTF-8. Більшість програм можуть працювати з UTF-8 як з традиційними однобайтні кодуваннями, не звертаючи уваги на те, що символ представляється як кілька послідовних байт. Для роботи з окремими символами рядка звичайно перекодуються в UCS-4, так що кожному символу відповідає машинне слово.

Однією з перших успішних комерційних реалізацій Юнікоду стала середовище програмування Java. У ній принципово відмовилися від 8-бітного представлення символів на користь 16-бітного. Зараз більшість мов програмування підтримують рядка Юнікоду, хоча їх подання може відрізнятися в залежності від реалізації.


11. Методи введення

Оскільки жодна розкладка клавіатури не може дозволити вводити всі символи Юнікоду одночасно, від операційних систем і прикладних програм потрібна підтримка альтернативних методів введення довільних символів Юнікоду.

11.1. Microsoft Windows

Починаючи з Windows 2000, службова програма "Таблиця символів" (charmap.exe) показує всі символи в ОС і дозволяє копіювати їх в буфер обміну. Схожа таблиця є, наприклад, в Microsoft Word.

Іноді можна набрати шістнадцятковий код, натиснути Alt + X, і код буде замінено на відповідний символ, наприклад, в WordPad, Microsoft Word. У редакторах Alt + X виконує і зворотне перетворення.

У багатьох програмах MS Windows, щоб отримати символ Unicode, потрібно при клавіші Alt набрати десяткове значення коду символу на цифровій клавіатурі. Наприклад, корисними при наборі кириличних текстів будуть комбінації Alt +0171 (") і Alt +0187 ("). Цікава також комбінація Alt +0133 (...).


11.2. Macintosh

В Mac OS 8.5 і пізніших версіях підтримується метод введення, званий "Unicode Hex Input". При затиснутою клавіші Option потрібно набрати чотиризначний шістнадцятковий код потрібного символу. Цей метод дозволяє вводити символи з кодами, великими U + FFFF, використовуючи пари сурогатів; такі пари операційною системою будуть автоматично замінені на одиночні символи. Цей метод введення перед використанням потрібно активізувати у відповідному розділі системних налаштувань і потім вибрати як поточний метод введення в меню клавіатури.

Починаючи з Mac OS X 10.2, існує також додаток "Character Palette", що дозволяє вибирати символи з таблиці, в якій можна виділяти символи певного блоку або символи, підтримувані конкретним шрифтом.


11.3. Linux

В GNOME також є утиліта "Таблиця символів", що дозволяє відображати символи певного блоку або системи письма і надає можливість пошуку за назвою чи опису символу. Коли код потрібного символу відомий, його можна ввести у відповідності зі стандартом ISO 14755: при затиснутих клавішах Ctrl і Shift ввести шістнадцятковий код (починаючи з деякою версії GTK + ввести потрібно випередити натисканням клавіші "U"). Введений шістнадцятковий код може мати до 32 біт в довжину, дозволяючи вводити будь-які символи Юнікоду без використання сурогатних пар.

Всі додатки X Window, включаючи GNOME і KDE, підтримують введення за допомогою клавіші Compose. Для клавіатур, на яких немає окремої клавіші Compose, для цієї мети можна призначити будь-яку клавішу - наприклад, Caps Lock.

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

Mozilla Firefox для Linux підтримує введення символів по ISO 14755.


12. Юнікоду Проблеми

У Юникоде англійське "a" і польське "a" - один і той же символ. Точно так само одним символом (але відрізняється від "a" латинського) вважаються російське "а" і сербське "а". Такий принцип кодування не універсальний; мабуть, рішення "на всі випадки життя" взагалі не може існувати.

  • Тексти на китайському, корейською та японському мові мають традиційне написання зверху вниз, починаючи з правого верхнього кута. Перемикання горизонтального і вертикального написання для цих мов не передбачено в Юникоде - це має здійснюватися засобами мов розмітки або внутрішніми механізмами текстових процесорів.
  • Юникод передбачає можливість різних накреслень одного і того ж символу в залежності від мови. Так, китайські ієрогліфи можуть мати різні накреслення у китайському, японському ( кандзі) та корейської ( ханчча), але при цьому в Юникоде позначатися одним і тим же символом (так звана CJK-уніфікація), хоча спрощені і повні ієрогліфи все ж мають різні коди. Часто виникають накладки, коли, наприклад, японський текст виглядає "по-китайськи". Аналогічно, російська та сербська мови використовують різне накреслення курсивних букв п і т (в сербському вони виглядають як і і ш , См. сербський курсив). Тому потрібно стежити, щоб текст завжди був правильно позначено як відноситься до того чи іншої мови.
  • Переклад з рядкових букв в заголовні теж залежить від мови. Наприклад: у турецькому існують літери İi і Iı - таким чином, турецькі правила зміни регістру конфліктують з англійськими, які наказують "i" переводити в "I". Подібні проблеми є і в інших мовах - наприклад, в канадському діалекті французької мови регістр перекладається трохи не так, як у Франції. [14]
  • Навіть з арабськими цифрами є певні типографські тонкощі: цифри бувають "прописними" і " малими ", пропорційними і моноширінним [15] - для Юнікоду різниці між ними немає. Подібні нюанси залишаються за програмним забезпеченням.

Деякі недоліки пов'язані не з самим Юнікод, а з можливостями обробників тексту.

  • Файли з текстом в Юникоде займають більше місця в пам'яті, так як один символ кодується не одним байтом, як у різних національних кодуваннях, а послідовністю байтів (виняток становить UTF-8 для мов, алфавіт яких укладається в ASCII, а також наявність в тексті символів двох і більше мов, алфавіт яких не вкладається в ASCII [16]). Файл шрифту, необхідний для відображення всіх символів таблиці Юнікод, займає порівняно багато місця в пам'яті і вимагає великих обчислювальних ресурсів [17]. Зі збільшенням потужності комп'ютерних систем і здешевленням пам'яті і дискового простору ця проблема стає все менш істотною, тим не менш, вона залишається і в найближчому майбутньому залишиться актуальною для портативних пристроїв, наприклад, для мобільного телефону [18].
  • Хоча підтримка Юнікоду реалізована в найбільш поширених операційних системах, до цих пір не все прикладне програмне забезпечення підтримує коректну роботу з ним. Зокрема, не завжди обробляються мітки BOM і погано підтримуються діакритичні символи. Проблема є тимчасовою і є наслідок порівняльної новизни стандартів Юнікоду (у порівнянні з однобайтові національними кодуваннями).
  • Продуктивність деяких програм знижується при використанні Юнікоду замість однобайтових кодувань.
  • Філософія UNIX (перенаправлення вводу-виводу з однієї програми в іншу) неявно передбачає, що мінімальна одиниця вводу-виводу - байт - збігається з одним символом тексту. Тому UNIX-подібні ОС перейшли на Unicode відносно пізно - і то у вигляді UTF-8.

Первісна версія Юнікоду припускала наявність великої кількості готових символів, в подальшому було віддано перевагу поєднанню букв з діакритичними модифікуючими знаками ( англ. combining diacritics ). Наприклад, російські літери Е (U +0401) і Й (U +0419) існують у вигляді монолітних символів, хоча можуть бути представлені і набором базового символу з подальшим акцентованого знаком, тобто в складовою формі ( англ. decomposed ): Е + ̈ (U +0415 U +0308), І + ̆ (U +0418 U +0306). У той же час безліч символів з мов з алфавітами на основі кирилиці не мають монолітних форм.

Нарешті, деякі рідкісні системи письма все ще не представлені належним чином в Юникоде. Зображення "довгих" надрядкових символів, що тягнуться над кількома літерами, як, наприклад, в церковнослов'янською мовою, поки не реалізована.


13. "Юнікод" або "Унікод"?

"Unicode" - одночасно і ім'я власне (або частина імені, наприклад, Unicode Consortium), і ім'я загальне, що відбувається з англійської мови.

На перший погляд краще використовувати написання "Унікод". В російською мовою вже є морфеми "уні-" (слова з латинським елементом "uni-" традиційно перекладалися і писалися через "уні-": універсальний, уніполярний, уніфікація, уніформа) і "код". Навпаки, торгові марки, запозичені з англійської мови, звичайно передаються за допомогою практичної транскрипції, в якій деетімологізірованное поєднання букв "uni-" записується у вигляді "юні-" (" Юнілівер "," Юнікс "і т. п.), тобто точно так само, як у випадку з політерний скороченнями, начебто UNICEF "United Nations International Children's Emergency Fund" - ЮНІСЕФ.

Написання "Юнікод" вже твердо увійшло в російськомовні тексти. Згідно з " Яндексу ", частота використання цього слова приблизно в 11 разів перевищує" Унікод " [19]. В Вікіпедії використовується більш поширений варіант.

На сайті Консорціуму є спеціальна сторінка, де розглядаються проблеми передачі слова "Unicode" в різних мовах і системах письма. Для російської кирилиці вказаний варіант "Юнікод" [1].

Форми, прийняті іноземними організаціями для російської передачі слова "Unicode", є рекомендаційними.


Примітки

  1. 1 2 Unicode Transcriptions - www.unicode.org / standard / UnicodeTranscriptions.html (Англ.) . Фотогалерея - www.webcitation.org/618OOcYRY з першоджерела 22 серпня 2011.
  2. Унікод в словнику Paratype - www.paratype.ru/help/term/terms.asp?code=361
  3. The Unicode Standard: A Technical Introduction - www.unicode.org / standard / principles.html. архіві - www.webcitation.org/618OPFD0i з першоджерела 22 серпня 2011.
  4. History of Unicode Release and Publication Dates - www.unicode.org / history / publicationdates.html. архіві - www.webcitation.org/618OPfL5z з першоджерела 22 серпня 2011.
  5. The Unicode Consortium - www.unicode.org / consortium / consort.html. архіві - www.webcitation.org/618OQ5Syr з першоджерела 22 серпня 2011.
  6. 1 2 3 Foreword - www.unicode.org/versions/Unicode5.2.0/Foreword.pdf. архіві - www.webcitation.org/618OQVqZN з першоджерела 22 серпня 2011.
  7. 1 2 General Structure - www.unicode.org/versions/Unicode5.2.0/ch02.pdf. архіві - www.webcitation.org/618OQvPSL з першоджерела 22 серпня 2011.
  8. European Alphabetic Scripts - www.unicode.org/versions/Unicode5.2.0/ch07.pdf. архіві - www.webcitation.org/618ORPqRV з першоджерела 22 серпня 2011.
  9. Unicode 88 - www.unicode.org/history/unicode88.pdf. архіві - www.webcitation.org/618ORt6df з першоджерела 22 серпня 2011.
  10. Unicode and Microsoft Windows NT - support.microsoft.com/kb/99884 (Англ.) . Microsoft Support. архіві - www.webcitation.org/618OSVei1 з першоджерела 22 серпня 2011.
  11. Unicode використовується майже на 50% веб-сайтів - w3pro.ru/news/unicode-ispolzuetsya-pochti-na-50-veb-saitov. архіві - www.webcitation.org/618OTTP1T з першоджерела 22 серпня 2011.
  12. Roadmap to the TIP (Tertiary Ideographic Plane) - unicode.org / roadmaps / tip /
  13. http://www.cl.cam.ac.uk/ ~ mgk25/ucs/utf-8-history.txt - www.cl.cam.ac.uk/ ~ mgk25/ucs/link20 (Англ.)
  14. Регістр в Unicode - це непросто - www.transl-gunsmoker.ru/2008/11/unicode.html
  15. У більшості шрифтів для ПК реалізовані "прописні" (маюскульние) моноширинний цифри.
  16. У деяких випадках текст в Юникоде може займати істотно менше місця, ніж текст в однобайтове кодуванні. Наприклад, якщо якась веб-сторінка містить приблизно порівну російського і грецького тексту, то в однобайтове кодуванні доведеться або росіяни, або грецькі літери записувати у вигляді кодів з амперсандом, які займають 6-7 байт на символ (при використанні десяткових кодів), т. е. в середньому на букву доведеться 3,5-4 байта, у той час як UTF-8 займає лише 2 байти на грецьку або російську літеру.
  17. Один з файлів шрифтів Arial Unicode має розмір 24 ​​мегабайта; існує Times New Roman розміром 120 мегабайт, він містить кількість символів, близьке до 65536.
  18. Навіть для самого сучасного та дорогого мобільного телефону важко виділити 120 Мбайт пам'яті для повного Юникод-шрифту. На практиці використання повних шрифтів потрібно рідко.
  19. 350 тис. сторінок " Юнікод - yandex.ru / yandsearch? text =! (юнікод) "проти 31 тис. сторінок" Унікод - yandex.ru / yandsearch? text =! (Унікод) ".

Цей текст може містити помилки.

Схожі роботи | скачати

Схожі роботи:
Юнікод Шрифти
© Усі права захищені
написати до нас
Рейтинг@Mail.ru