Unicode - Unicode

Unicode
Nové logo Unicode.svg
Přezdívky Univerzální kódovaná znaková sada (UCS)
Jazyk (y) Mezinárodní
Standard Standard Unicode
Formáty kódování
Předchází ISO/IEC 8859 , různé další

Unicode , formálně standard Unicode , je informační technologie standardem pro jednotné kódování , reprezentace a manipulace s textem vyjádřený ve většině světových systémů psaní . Standard, který udržuje Unicode Consortium , definuje 144 697 znaků pokrývajících 159 moderních a historických skriptů , stejně jako symboly, emodži a nevizuální kontrolní a formátovací kódy.

Repertoár znaků Unicode je synchronizován s ISO/IEC 10646 , přičemž každý je kód pro kód identický s druhým. Standard Unicode však obsahuje více než jen základní kód. Kromě kódování znaků obsahuje oficiální publikace Konsorcia celou řadu podrobností o skriptech a způsobu jejich zobrazení: pravidla normalizace , dekompozice, řazení , vykreslování a obousměrné pořadí zobrazení textu pro vícejazyčné texty atd. Standard také zahrnuje referenční datové soubory a vizuální grafy pro vývojáře a designéry nápovědy správně provádět repertoár.

Úspěch Unicode při sjednocování znakových sad vedl k jeho rozšířenému a převládajícímu využití při internacionalizaci a lokalizaci počítačového softwaru . Standard byl implementován do mnoha nejnovějších technologií, včetně moderních operačních systémů , XML , Java (a dalších programovacích jazyků ) a .NET Framework .

Unicode lze implementovat pomocí různých kódování znaků. Standard Unicode definuje formáty transformace Unicode (UTF): UTF-8 , UTF-16 a UTF-32 a několik dalších kódování. Nejčastěji používaná kódování jsou UTF-8, UTF-16 a zastaralé UCS-2 (předchůdce UTF-16 bez plné podpory Unicode); GB18030 , ačkoli není oficiálním standardem Unicode, je standardizován v Číně a plně implementuje Unicode.

UTF-8, dominantní kódování na World Wide Web (používá se u více než 95% webů od roku 2020 a až 100% u některých jazyků) a ve většině operačních systémů podobných Unixu, používá jeden bajt (8  bitů ) pro prvních 128 kódových bodů a až 4 bajty pro ostatní znaky. Prvních 128 bodů kódu Unicode představuje znaky ASCII , což znamená, že jakýkoli text ASCII je také textem UTF-8.

UCS-2 používá dva bajty (16 bitů) pro každý znak, ale může kódovat pouze prvních 65 536 kódových bodů , takzvanou základní vícejazyčnou rovinu (BMP). S 1 112 064 možnými body kódu Unicode odpovídajícími znakům (viz níže ) na 17 rovinách a s více než 144 000 body kódu definovanými od verze 14.0 dokáže UCS-2 reprezentovat pouze méně než polovinu všech kódovaných znaků Unicode. UCS-2 je proto zastaralý, i když se stále používá v softwaru. UTF-16 rozšiřuje UCS-2 pomocí stejného 16bitového kódování jako UCS-2 pro základní vícejazyčnou rovinu a 4bajtového kódování pro ostatní roviny. Pokud text ve vyhrazeném rozsahu U+D800 – U+DFFF neobsahuje žádné kódové body, je text UCS-2 platným textem UTF-16.

UTF-32 (také označovaný jako UCS-4) používá ke kódování libovolného bodu kódu čtyři bajty, ale ne nutně jakýkoli daný uživatelem vnímaný znak (volně řečeno grafém ), protože uživatelsky vnímaný znak může být reprezentován cluster grafémů (posloupnost více kódových bodů). Stejně jako UCS-2 je počet bytů na kódový bod pevný, což usnadňuje indexování kódových bodů; ale na rozdíl od UCS-2 je UTF-32 schopen kódovat všechny body kódu Unicode. Protože však každý bod kódu používá čtyři bajty, zabírá UTF-32 podstatně více místa než jiná kódování a není široce používán. Ačkoli UTF-32 má pevnou velikost pro každý bod kódu, má také proměnnou délku s ohledem na znaky vnímané uživatelem. Mezi příklady patří: Devanagari kshi , který je kódován 4 kódovými body, a emodži státní vlajky, které se skládají ze dvou kódových bodů. Všechny kombinace znakových sekvencí jsou grafémy, ale existují i ​​další sekvence kódových bodů, například \ r \ n .

Původ a vývoj

Unicode má výslovný cíl překročit omezení tradičních kódování znaků, jako jsou ta definovaná normou ISO/IEC 8859 , která nacházejí široké využití v různých zemích světa, ale zůstávají navzájem do značné míry nekompatibilní. Mnoho tradičních kódování znaků sdílí společný problém v tom, že umožňují dvojjazyčné počítačové zpracování (obvykle pomocí znaků latinky a místního skriptu), nikoli však vícejazyčné počítačové zpracování (počítačové zpracování libovolných skriptů smíchaných mezi sebou).

Unicode záměrně kóduje podkladové znaky- grafémy a jednotky podobné grafémům-spíše než variantní glyfy (vykreslování) pro takové znaky. V případě čínských znaků to někdy vede ke kontroverzím ohledně rozlišení základního znaku od jeho variantních glyfů (viz sjednocení Han ).

Při zpracování textu má Unicode roli poskytování jedinečného bodu kódu - čísla , nikoli glyfu - pro každý znak. Jinými slovy, Unicode představuje znak abstraktním způsobem a ponechává vizuální vykreslování (velikost, tvar, písmo nebo styl) na jiném softwaru, jako je webový prohlížeč nebo textový procesor . Tento jednoduchý cíl se však komplikuje kvůli ústupkům, které udělali designéři Unicode v naději, že podpoří rychlejší přijetí Unicode.

Prvních 256 kódových bodů bylo vytvořeno identických s obsahem ISO/IEC 8859-1 , aby bylo triviální převést stávající západní text. Mnoho v podstatě identických znaků bylo zakódováno vícekrát v různých bodech kódu, aby se zachovaly rozdíly používané starším kódováním, a proto umožnil převod z těchto kódování na Unicode (a zpět) bez ztráty jakýchkoli informací. Například, „ fullwidth formy sekci“ kódových bodů zahrnuje plnou duplikát latinské abecedy, protože čínské, japonské a korejské ( CJK ) fonty obsahují dvě verze těchto písmen, „fullwidth“ odpovídající šířku znaky CJK a normální šířka. Další příklady najdete v duplicitních znacích v Unicode .

Držitelé ceny Unicode Bulldog Award zahrnují mnoho jmen ovlivňujících vývoj Unicode a zahrnují Tatsuo Kobayashi , Thomas Milo, Roozbeh Pournader , Ken Lunde a Michael Everson

Dějiny

Na základě zkušeností se standardem Xerox Character Code Standard (XCCS) od roku 1980, původ Unicode se datuje do roku 1987, kdy Joe Becker ze společnosti Xerox s Lee Collinsem a Markem Davisem ze společnosti Apple začali zkoumat praktičnosti vytváření univerzální znakové sady. S dalšími vstupy Petera Fenwicka a Davea Opstada zveřejnil Joe Becker v srpnu 1988 návrh návrhu na „mezinárodní/vícejazyčný systém kódování znaků textu, předběžně nazvaný Unicode“. Vysvětlil, že „[název] Unicode“ má navrhnout jedinečné, jednotné a univerzální kódování “.

V tomto dokumentu s názvem Unicode 88 Becker nastínil 16bitový znakový model:

Unicode je určen k řešení potřeby funkčního a spolehlivého světového kódování textu. Unicode by se dalo zhruba popsat jako „širokoúhlý ASCII“, který byl natažen na 16 bitů, aby obsáhl znaky všech světových žijících jazyků. Ve správně navrženém designu je 16 bitů na znak pro tento účel více než dostačujících.

Jeho původní 16bitový design byl založen na předpokladu, že budou muset být zakódovány pouze ty skripty a znaky v moderním použití:

Unicode dává vyšší prioritu zajištění užitečnosti pro budoucnost než zachování starověku. Unicode se v první řadě zaměřuje na znaky publikované v moderním textu (např. Ve spojení všech novin a časopisů vytištěných ve světě v roce 1988), jejichž počet je nepochybně hluboko pod 2 14 = 16 384. Kromě těchto moderně používaných postav mohou být všechny ostatní definovány jako zastaralé nebo vzácné; tito jsou lepšími kandidáty pro registraci pro soukromé použití než pro zahlcení veřejného seznamu obecně užitečných Unicode.

Počátkem roku 1989 se pracovní skupina Unicode rozšířila o Kena Whistlera a Mikea Kernaghana z Metaphor, Karen Smith-Yoshimura a Joan Aliprand z RLG a Glenna Wrighta ze Sun Microsystems a v roce 1990 Michel Suignard a Asmus Freytag z Microsoftu a Rick McGowan skupiny NeXT se připojilo ke skupině. Do konce roku 1990 byla většina prací na mapování stávajících standardů kódování znaků dokončena a byl připraven finální revizní návrh Unicode.

Unicode Consortium byla založena v Kalifornii dne 3. ledna 1991, a v říjnu 1991, první objem standardu Unicode byla zveřejněna. Druhý svazek pokrývající Han ideografy byl vydán v červnu 1992.

V roce 1996 byl v Unicode 2.0 implementován mechanismus náhradních znaků, takže Unicode již nebyl omezen na 16 bitů. Tím se zvýšil kódový prostor Unicode na více než milion kódových bodů, což umožnilo kódování mnoha historických skriptů (např. Egyptských hieroglyfů ) a tisíců zřídka používaných nebo zastaralých znaků, u nichž se nepředpokládalo, že by vyžadovaly kódování. Mezi znaky, které původně nebyly určeny pro Unicode, se zřídka používají znaky Kanji nebo čínské znaky, z nichž mnohé jsou součástí osobních a místních jmen, což je zřídka používá, ale mnohem důležitější, než se předpokládalo v původní architektuře Unicode.

Specifikace Microsoft TrueType verze 1.0 z roku 1992 používala pro ID platformy v pojmenovací tabulce místo „Unicode“ název „Apple Unicode“.

Konsorcium Unicode

Unicode Consortium je nezisková organizace, která koordinuje vývoj Unicode. Mezi řádné členy patří většina hlavních počítačových softwarových a hardwarových společností, které se zajímají o standardy zpracování textu, včetně společností Adobe , Apple , Facebook , Google , IBM , Microsoft , Netflix a SAP SE .

V průběhu let bylo členy konsorcia Unicode několik zemí nebo vládních agentur. V současné době je řádným členem s hlasovacím právem pouze Ministerstvo nadací a náboženských záležitostí (Omán) .

Konsorcium má ambiciózní cíl nakonec nahradit stávající schémata kódování znaků Unicode a jeho standardní schémata formátu Unicode Transformation Format (UTF), protože mnohé ze stávajících schémat mají omezenou velikost a rozsah a jsou nekompatibilní s vícejazyčnými prostředími.

Skripty pokryty

Mnoho moderních aplikací může vykreslit podstatnou podmnožinu mnoha skriptů v Unicode , jak ukazuje tento snímek obrazovky z aplikace OpenOffice.org .

Unicode pokrývá téměř všechny skripty ( systémy psaní ), které se v současnosti používají.

Jak 2021 celkem 159 skriptů jsou zahrnuty v nejnovější verzi Unicode (zahrnující abeced , abugidas a syllabaries ), i když stále existují skripty, které ještě nejsou kódovány, zejména těch, které používají hlavně v historických, liturgických a akademické kontexty. Dochází také k dalšímu přidávání znaků do již zakódovaných skriptů a také symbolů, zejména pro matematiku a hudbu (ve formě not a rytmických symbolů).

Výbor pro plán Unicode ( Michael Everson , Rick McGowan, Ken Whistler, VS Umamaheswaran) udržuje seznam skriptů, které jsou kandidáty nebo potenciálními kandidáty na kódování, a jejich předběžné přiřazení bloků kódu na stránce Unicode Roadmap na webu Unicode Consortium . U některých skriptů na Plánu, jako je Jurchen a Khitan malý skript , byly vytvořeny návrhy kódování a procházejí procesem schvalování. Pro jiné skripty, jako je Mayan (kromě čísel) a Rongorongo , zatím nebyl předložen žádný návrh a čekají na dohodu o repertoáru postav a dalších podrobnostech od zapojených uživatelských komunit.

Některé moderní vynalezené skripty, které ještě nebyly zahrnuty v Unicode (např. Tengwar ) nebo které nesplňují podmínky pro zařazení do Unicode kvůli nedostatku použití v reálném světě (např. Klingon ), jsou uvedeny v registru Unicode ConScript spolu s neoficiálními ale široce používané přiřazování kódů soukromých oblastí použití .

Existuje také iniciativa Medieval Unicode Font Initiative zaměřená na speciální latinské středověké znaky. Část těchto návrhů již byla zahrnuta do Unicode.

Iniciativa kódování skriptů

Iniciativa Script Encoding Initiative, projekt realizovaný Deborah Andersonovou na Kalifornské univerzitě, Berkeley byla založena v roce 2002 s cílem financovat návrhy pro skripty, které ještě nejsou zakódovány ve standardu. Projekt se v posledních letech stal hlavním zdrojem navrhovaných dodatků ke standardu.

Verze

Konsorcium Unicode a Mezinárodní organizace pro normalizaci (ISO) společně vyvinuly společný repertoár po počátečním zveřejnění standardu Unicode v roce 1991; Unicode a univerzální kódovaná znaková sada (UCS) ISO používají identická jména znaků a body kódu. Verze Unicode se však liší od svých ekvivalentů ISO dvěma významnými způsoby.

Zatímco UCS je jednoduchá mapa znaků, Unicode určuje pravidla, algoritmy a vlastnosti nezbytné k dosažení interoperability mezi různými platformami a jazyky. Tak Unicode Standard obsahuje další informace, které pokrývají hloubka-témata, jako bitové kódování, řazení a zobrazování. Poskytuje také komplexní katalog vlastností znaků, včetně těch, které jsou potřebné pro podporu obousměrného textu , a také vizuální grafy a sady referenčních dat, které pomáhají implementátorům. Dříve byl Unicode Standard prodáván jako tiskový svazek obsahující úplnou základní specifikaci, standardní přílohy a grafy kódů. Poslední verze vytištěná tímto způsobem však byla Unicode 5.0, publikovaná v roce 2006. Počínaje verzí 5.2 lze zakoupit pouze základní specifikaci, publikovanou jako brožovaný výtisk na vyžádání. Úplný text je naopak publikován jako bezplatný soubor PDF na webových stránkách Unicode.

Praktický důvod této publikační metody zdůrazňuje druhý významný rozdíl mezi UCS a Unicode - četnost vydávání aktualizovaných verzí a přidávání nových znaků. Unicode Standard pravidelně vydává každoroční rozšířené verze, příležitostně s více než jednou verzí vydanou v kalendářním roce a se vzácnými případy, kdy bylo nutné plánované vydání odložit. Například v dubnu 2020, pouhý měsíc po vydání verze 13.0, konsorcium Unicode oznámilo, že změnilo předpokládané datum vydání verze 14.0 a posunulo jej o šest měsíců od března 2021 do září 2021 kvůli pandemii COVID-19 .

Dosud byly publikovány následující hlavní a vedlejší verze standardu Unicode. Aktualizované verze, které neobsahují žádné změny v repertoáru postav, jsou označeny třetím číslem (např. „Verze 4.0.1“) a jsou v tabulce níže vynechány.

Verze datum Rezervovat Odpovídající vydání ISO/IEC 10646 Skripty Znaky
Celkový Pozoruhodné přírůstky
1.0.0 Říjen 1991 ISBN  0-201-56788-1 (sv. 1) 24 7,129 Počáteční repertoár pokrývá tyto skripty: arabština , arménština , bengálština , bopomofo , azbuka , devanagari , gruzínština , řečtina a koptština , gudžarátština , gurmukhi , hangul , hebrejština , hiragana , kannadština , katakana , laoština , latinka , malajálamština , orijština , tamilština , telugština , Thajské a tibetské .
1.0.1 Června 1992 ISBN  0-201-60845-6 (sv. 2) 25 28,327
(21204 přidáno;
6 odstraněno)
Je definována počáteční sada 20 902 jednotných ideografů CJK .
1.1 Června 1993 ISO/IEC 10646-1: 1993 24 34168
( 5963 přidáno;
89 odstraněno;
33 překlasifikováno
na kontrolní
znaky)
Do původní sady 2 350 znaků bylo přidáno 4 306 dalších slabik Hangul . Tibetan odstraněn.
2.0 Červenec 1996 ISBN  0-201-48345-9 ISO/IEC 10646-1: 1993 plus změny 5, 6 a 7 25 38 885
(přidáno 11
373 ; odstraněno 6 656)
Původní sada slabik Hangul odstraněna a na nové místo přidána nová sada 11 172 slabik Hangul. Tibetan přidán zpět na nové místo a s jiným charakterovým repertoárem. Je definován mechanismus náhradních znaků a jsou přiděleny oblasti soukromého použití letadel 15 a letadel 16 .
2.1 Květen 1998 ISO/IEC 10646-1: 1993 plus změny 5, 6 a 7, stejně jako dva znaky z dodatku 18 25 38 887
(2 přidány)
Přidán znak euro a znak nahrazující objekt .
3,0 Září 1999 ISBN  0-201-61633-5 ISO/IEC 10646-1: 2000 38 49194
(přidáno 10307)
Cherokee , Ethiopic , Khmer , mongolský , barmský , Ogham , Runic , sinhálština , Syriac , Thaana , Slabičné písmo kanadských domorodců a Yi slabiky dodal, jakož i sada Braillova písma vzorů.
3.1 Březen 2001 ISO/IEC 10646-1: 2000

ISO/IEC 10646-2: 2001

41 94,140
(přidáno 44,946)
Přidal Deseret , Gothic a Old Italic , stejně jako sady symbolů pro západní hudbu a byzantskou hudbu a 42 711 dalších CJK Unified Ideographs .
3.2 Března 2002 ISO/IEC 10646-1: 2000 plus dodatek 1

ISO/IEC 10646-2: 2001

45 95156
(přidáno 1016)
Přidány filipínské skripty Buhid , Hanunó'o , Tagalog a Tagbanwa .
4,0 Duben 2003 ISBN  0-321-18578-1 ISO/IEC 10646: 2003 52 96 382
(přidáno 1 226)
Kyperský slabikář , Limbu , Lineární B , Osmanya , Shavian , Tai Le a Ugaritic přidány, stejně jako symboly Hexagramu .
4.1 Března 2005 ISO/IEC 10646: 2003 plus dodatek 1 59 97 655
(1 273 přidáno)
Bugiština , hlaholice , Kharóšthí , New Tai Lue , Starý Peršan , Syloti Nagri a Tifinagh dodal, a koptský byl disunified z řečtiny . Přidána byla také starověká řecká čísla a hudební symboly .
5,0 Červenec 2006 ISBN  0-321-48091-0 ISO/IEC 10646: 2003 plus dodatky 1 a 2 a také čtyři znaky z dodatku 3 64 99,024
(přidáno 1369 )
Balinese , Klínové písmo , n'ko , Phags-pa , a fénické přidán.
5.1 Duben 2008 ISO/IEC 10646: 2003 plus dodatky 1, 2, 3 a 4 75 100 648
(přidáno 1624 )
Carian , Cham , Kayah Li , Lepcha , Lycian , Lydian , Ol Chiki , Rejang , Saurashtra , Sundanese a Vai přidali, stejně jako sady symbolů pro disk Phaistos Disc , dlaždice Mahjong a dlaždice Domino . Byly také důležité dodatky pro barmské , doplnění písmen a zkratek Scribal používané ve středověkých rukopisech a přidání kapitálu ẞ .
5.2 Říjen 2009 ISBN  978-1-936213-00-9 ISO/IEC 10646: 2003 plus dodatky 1, 2, 3, 4, 5 a 6 90 107296
(přidáno 6648 )
Přidány Avestan , Bamum , egyptské hieroglyfy ( Gardinerova sada , obsahující 1 071 znaků), Imperial Aramaic , Inscriptional Pahlavi , Inscriptional Parthian , Javanese , Kaithi , Lisu , Meetei Mayek , Old South Arabian , Old Turkic , Samaritan , Tai Tham a Tai Viet . 4 149 dalších CJK Unified Ideographs (CJK-C), stejně jako rozšířené Jamo pro Old Hangul a postavy pro védský sanskrt .
6.0 Říjen 2010 ISBN  978-1-936213-01-6 ISO/IEC 10646: 2010 plus znak indické rupie 93 109,384
(přidáno 2088)
Batak , Brahmi , Mandaic , symboly hracích karet , dopravní a mapové symboly, alchymistické symboly , emotikony a emoji . Přidáno 222 dalších CJK Unified Ideographs (CJK-D).
6.1 Leden 2012 ISBN  978-1-936213-02-3 ISO/IEC 10646: 2012 100 110,116
(přidáno 732)
Chakma , Meroitic kurzíva , Meroitic hieroglyfy , Miao , Sharada , Sora Sompeng a Takri .
6.2 Září 2012 ISBN  978-1-936213-07-8 ISO/IEC 10646: 2012 plus znak turecké liry 100 110,117
(1 přidán)
Turecká lira znamení .
6.3 září 2013 ISBN  978-1-936213-08-5 ISO/IEC 10646: 2012 plus šest znaků 100 110,122
(5 přidáno)
5 znaků obousměrného formátování.
7.0 Červen 2014 ISBN  978-1-936213-09-2 ISO/IEC 10646: 2012 plus dodatky 1 a 2 a také znak Rublu 123 112,956
(přidáno 2834)
Bassa Vah , kavkazská Albánec , Duployan , Elbasan , Grantha , Khojki , Khudawadi , Linear , Mahajani , Manichaean , Mende Kikakui , Modi , Mro , Nabataean , Old North arabský , Old Permic , Pahawh Hmong , Palmyrene , Pau Cin Hau , žaltář Pahlavi , Siddham , Tirhuta , Warang Citi a Dingbats .
8,0 Červen 2015 ISBN  978-1-936213-10-8 ISO/IEC 10646: 2014 plus dodatek 1, stejně jako znak Lari , devět jednotných ideografů CJK a 41 znaků emodži 129 120672
(přidáno 7716 )
Ahom , anatolské hieroglyfy , Hatran , Multani , staromaďarština , SignWriting , 5 771 jednotných ideografů CJK , sada malých písmen pro Cherokee a pět modifikátorů tónu pleti emodži .
9.0 Červen 2016 ISBN  978-1-936213-13-9 ISO/IEC 10646: 2014 plus dodatky 1 a 2, stejně jako Adlam, Newa, japonské televizní symboly a 74 emodži a symboly 135 128172
(přidáno 7500)
Adlam , Bhaiksuki , Marchen , Newa , Osage , Tangut a 72 emoji .
10.0 Června 2017 ISBN  978-1-936213-16-0 ISO/IEC 10646: 2017 plus 56 znaků emodži , 285 znaků hentaigana a 3 znaky náměstí Zanabazar 139 136 690
(přidáno 8518)
Zanabazar Square , Soyombo , Masaram Gondi , Nüshu , hentaigana (nestandardní hiragana ), 7,494 CJK sjednoceny ideographs , 56 emotikony a Bitcoin symbol.
11.0 Června 2018 ISBN  978-1-936213-19-1 ISO/IEC 10646: 2017 plus dodatek 1, stejně jako 46 velkých gruzínských písmen Mtavruli, 5 jednotných ideografů CJK a 66 znaků emodži. 146 137 374
(přidáno 684)
Dogra , gruzínský Mtavruli velká písmena, Gunjala Gondi , Hanifi Rohingya , Indic Siyaq čísla , Makasar , Medefaidrin , Old Sogdian a Sogdian , Mayské číslice 5 naléhavě potřeba CJK sjednoceny ideographs , symboly pro xiangqi (Čínské šachy) a hodnocení hvězdičkami a 145 emodži .
12.0 Března 2019 ISBN  978-1-936213-22-1 ISO/IEC 10646: 2017 plus dodatky 1 a 2 a také 62 dalších znaků. 150 137 928
(přidáno 554)
Elymaic , Nandinagari , Nyiakeng Puachue Hmong , Wancho , Miao doplnění skriptů pro několik dialektů Miao a Yi v Číně, malá písmena hiragana a katakana pro psaní archaické japonštiny, tamilské historické zlomky a symboly, laoská písmena pro Pali , latinská písmena pro egyptologickou a ugaritskou transliteraci , ovládací prvky formátu hieroglyfů a 61 emodži .
12.1 Květen 2019 ISBN  978-1-936213-25-2 150 137 929
(1 přidán)
Přidá jeden znak v U+32FF pro tvar čtvercové ligatury názvu Reiwovy éry .
13.0 Března 2020 ISBN  978-1-936213-26-9 ISO/IEC 10646: 2020 154 143 859
(5 930 přidáno)
Přidány Chorasmian , Dives Akuru , Khitan small script , Yezidi , 4 969 CJK unified ideographs (including 4,939 in Ext. G ), Arabic script additions used to write Hausa , Wolof , and other languages ​​in Africa and other additions used to write Hindko and Punjabi in Pákistán, doplňky Bopomofo používané pro kantonštinu, licenční symboly Creative Commons, grafické znaky pro kompatibilitu s teletextem a domácími počítačovými systémy ze 70. a 80. let a 55 emoji.
14.0 Září 2021 ISBN  978-1-936213-29-0 159 144 697
(přidáno 838)
Toto , Cypro-Minoan , Vithkuqi , Old Uyghur , Tangsa , latinské skripty v blocích SMP (Ext-F, Ext-G) pro použití v rozšířeném IPA , arabské skriptové doplňky pro použití v jazycích napříč Afrikou a v Íránu, Pákistánu, Malajsii , Indonésie, Jáva a Bosna a psát honorifika, dodatky pro použití Koránu, další dodatky k podpoře jazyků v Severní Americe, na Filipínách, v Indii a Mongolsku, přidání symbolu měny Kyrgyzstani som , podpora Znamennyho notového zápisu a 37 emoji.

Architektura a terminologie

Standard Unicode definuje kódový prostor, sadu číselných hodnot v rozmezí od 0 do 10FFFF 16 , nazývaných kódové body a označovaných jako U+0000 až U+10FFFF („U+“ plus hodnota bodového kódu v hexadecimálním formátu , podle potřeby doplněné úvodními nulami) výsledkem jsou minimálně čtyři číslice, např. U+00F7 pro znak dělení ÷ ale U+13254 pro egyptský hieroglyf Hiero O4.png označující úkryt z rákosí nebo vinutí . Z těchto 2 16 +2 20 definovaných kódových bodů kódové body z u + D800 až u + DFFF, které se používají pro kódování páry náhrady v UTF-16 , jsou vyhrazeny v normě, a nemohou být použity pro zakódování platné znaky, což vede k čistému celkem 2 16 - 2 11 + 2 20 = 1 112 064 možných kódových bodů odpovídajících platným znakům Unicode. Ne všechny tyto kódové body nutně odpovídají viditelným znakům; například několik je přiřazeno řídícím kódům, jako je návrat na začátek řádku .

Kódujte roviny a bloky

Prostor kódů Unicode je rozdělen do sedmnácti rovin očíslovaných od 0 do 16:

Všechny kódové body v BMP jsou přístupné jako jedna kódová jednotka v kódování UTF-16 a mohou být kódovány v jednom, dvou nebo třech bajtech v UTF-8 . K kódovým bodům v rovinách 1 až 16 ( doplňkové roviny ) se přistupuje jako k náhradním párům v UTF-16 a kóduje se ve čtyřech bajtech v UTF-8.

V každé rovině jsou znaky přiděleny v pojmenovaných blocích souvisejících znaků. Přestože bloky mají libovolnou velikost, vždy se jedná o násobek 16 kódových bodů a často násobek 128 kódových bodů. Znaky požadované pro daný skript mohou být rozloženy do několika různých bloků.

Vlastnost obecné kategorie

Každý bod kódu má jednu vlastnost obecné kategorie . Označují se hlavní kategorie: písmeno, značka, číslo, interpunkce, symbol, oddělovač a další. V rámci těchto kategorií existují podskupiny. Ve většině případů musí být k dostatečné specifikaci charakteristik bodu kódu použity jiné vlastnosti. Možné obecné kategorie jsou:

Obecná kategorie ( vlastnost znaku Unicode )
Hodnota Kategorie Major, minor Základní typ Postava přiřazena Počet
(stav k 14.0)
Poznámky
 
L, písmeno; LC, Cased Letter (pouze Lu, Ll a Lt)
Lu Písmeno, velká písmena Grafický Charakter 1831
Ll Písmeno, malá písmena Grafický Charakter 2227
Por Písmeno, nadpis Grafický Charakter 31 Ligatury obsahující velká písmena následovaná malými písmeny (např. Dž , Lj , Nj a Dz )
Lm Písmeno, modifikátor Grafický Charakter 334 Modifikátor písmeno
hle Dopis, jiný Grafický Charakter 127,333 Ideogram nebo písmeno v Unicase abecedě
M, Marku
Mn Mark, bez mezer Grafický Charakter 1950
Mc Marku, kombinování mezer Grafický Charakter 445
Mark, uzavírající Grafický Charakter 13
N, číslo
Nd Číslo, desetinná číslice Grafický Charakter 660 Všechny tyto a pouze tyto mají číselný typ = De
Nl Číslo, písmeno Grafický Charakter 236 Číslovky složené z písmen nebo symbolů podobných písmenům (např. Římské číslice )
Ne Číslo, jiné Grafický Charakter 895 Například zlomky , index a index číslice
P, Interpunkce
Pc Interpunkce, spojka Grafický Charakter 10 Obsahuje podtržítko „_“
Pd Interpunkce, pomlčka Grafický Charakter 26 Obsahuje několik znaků spojovníku
Ps Interpunkce, otevřeno Grafický Charakter 79 Znaky úvodní závorky
Pe Interpunkce, zavřít Grafický Charakter 77 Znaky uzavírací závorky
Pi Interpunkce, úvodní citát Grafický Charakter 12 Úvodní uvozovky . Neobsahuje uvozovky „neutrální“ ASCII. V závislosti na použití se může chovat jako Ps nebo Pe
Pf Interpunkce, závěrečný citát Grafický Charakter 10 Zavírací uvozovky. V závislosti na použití se může chovat jako Ps nebo Pe
Po Interpunkce, jiné Grafický Charakter 605
S, symbol
Sm Symbol, matematika Grafický Charakter 948 Matematické symboly (např. + , - , = , × , ÷ , , , ). Nezahrnuje závorky a závorky, které jsou v kategoriích Ps a Pe. Také nezahrnuje ! , * , - , nebo / , které i přes časté používání jako matematické operátory jsou primárně považovány za „interpunkci“.
Sc Symbol, měna Grafický Charakter 63 Symboly měny
Sk Symbol, modifikátor Grafický Charakter 125
Tak Symbol, další Grafický Charakter 6 605
Z, separátor
Zs Oddělovač, prostor Grafický Charakter 17 Zahrnuje mezeru, ale ne TAB , CR nebo LF , což jsou kopie
Zl Oddělovač, linka Formát Charakter 1 Pouze U+2028 SEPARÁTOR ŘÁDKU (LSEP)
Zp Oddělovač, odstavec Formát Charakter 1 Pouze U+2029 SEPARÁTOR ODSTRAŇOVÁNÍ (PSEP)
C, ostatní
Kopie Jiné, ovládání Řízení Charakter 65 (nikdy se nezmění) Žádné jméno, <control>
Srov Jiné, formát Formát Charakter 163 Obsahuje měkkou pomlčku , spojující řídicí znaky ( zwnj a zwj ), řídicí znaky pro podporu obousměrného textu a znaky jazykových značek
Čs Jiné, náhradní Náhrada Není (používá se pouze v UTF-16 ) 2048 (nikdy se nezmění) Žádné jméno, <surrogate>
Co Jiné, soukromé použití Soukromé použití Znak (ale není stanoven žádný výklad) Celkem 137 468 (nikdy se nezmění) ( 6 400 v BMP , 131 068 v rovinách 15–16 ) Žádné jméno, <soukromé použití>
Cn Jiné, nepřiřazené Necharakter Ne 66 (nikdy se nezmění) Žádné jméno, <neznak>
Rezervováno Ne 829 768 Žádné jméno, <vyhrazeno>

Kódové body v rozsahu U+D800 – U+DBFF (1024 kódových bodů) jsou známy jako vysoce náhradní kódové body a kódové body v rozsahu U+DC00 – U+DFFF (1024 kódových bodů) jsou známy jako nízko-náhradní kódové body. Bod s vysokým náhradním kódem následovaný kódovým bodem s nízkou náhradou tvoří v UTF-16 náhradní pár, který představuje body kódu větší než U+FFFF. Tyto body kódu jinak nelze použít (toto pravidlo je v praxi často ignorováno, zejména pokud nepoužíváte UTF-16).

Malá sada kódových bodů je zaručena, že nebudou nikdy použity pro kódování znaků, ačkoli aplikace mohou tyto body kódu využívat interně, pokud si to přejí. Existuje šedesát šest z těchto noncharacters : U + FDD0-U + FDEF a jakýkoli bod kódu končí v hodnotě FFFE nebo FFFF (tj U + FFFE, U + FFFF, U + 1FFFE, U + 1FFFF, ... U +10FFFE, U+10FFFF). Sada neznaků je stabilní a žádné nové neznaky nebudou nikdy definovány. Pravidlo, že je nelze použít, je často ignorováno, stejně jako náhradní, i když operace značky pořadí bajtů předpokládá, že U+FFFE nikdy nebude prvním bodem kódu v textu.

Vyloučením náhradních a neznakových znaků zůstane k použití 1 111 998 kódových bodů.

Body kódu pro soukromé použití jsou považovány za přiřazené znaky, ale nemají žádnou interpretaci specifikovanou standardem Unicode, takže jakákoli výměna těchto znaků vyžaduje dohodu o jejich interpretaci mezi odesílatelem a příjemcem. V kódovém prostoru Unicode jsou tři oblasti soukromého použití:

  • Oblast soukromého použití: U+E000 – U+F8FF (6 400 znaků),
  • Doplňkové soukromé použití Oblast-A: U+F0000 – U+FFFFD (65 534 znaků),
  • Doplňková oblast soukromého použití B: U+100 000 – U+10FFFD (65 534 znaků).

Grafické znaky jsou znaky definované Unicodeem, které mají konkrétní sémantiku a mají buď viditelný tvar glyfu, nebo představují viditelný prostor. Ke standardu Unicode 14.0 je 144 532 grafických znaků.

Formátované znaky jsou znaky, které nemají viditelný vzhled, ale mohou mít vliv na vzhled nebo chování sousedních postav. Například U+200C ZERO WIDTH NON-JOINER a U+200D ZERO WIDTH JOINER lze použít ke změně výchozího chování tvarování sousedních znaků (např. K inhibici ligatur nebo žádosti o vytvoření ligatury). V Unicode 14.0 je 165 znaků formátu.

Šedesát pět kódových bodů (U+0000 – U+001F a U+007F – U+009F) je vyhrazeno jako řídicí kódy a odpovídají řídícím kódům C0 a C1 definovaným v ISO/IEC 6429 . U+0009 (Tab), U+000A (Line Feed) a U+000D (Carriage Return) jsou široce používány v textech kódovaných Unicode. V praxi jsou body kódu C1 často nesprávně přeloženy ( mojibake ) jako starší znaky Windows-1252 používané některými anglickými a západoevropskými texty.

Grafické znaky, znaky formátu, znaky řídicího kódu a znaky pro soukromé použití jsou souhrnně označovány jako přiřazené znaky . Rezervované kódové body jsou ty kódové body, které jsou k dispozici k použití, ale ještě nejsou přiřazeny. Od Unicode 14.0 je 829 768 vyhrazených kódových bodů.

Abstraktní postavy

Sada grafických a formátových znaků definovaných Unicode neodpovídá přímo repertoáru abstraktních znaků, který je reprezentovatelný pod Unicode. Unicode kóduje znaky přidružením abstraktního znaku ke konkrétnímu bodu kódu. Ne všechny abstraktní znaky jsou však zakódovány jako jeden znak Unicode a některé abstraktní znaky mohou být v Unicode reprezentovány sekvencí dvou nebo více znaků. Například latinské malé písmeno „i“ s ogonkem , tečkou nahoře a ostrým přízvukem , které je v litevštině vyžadováno , je reprezentováno posloupností znaků U+012F, U+0307, ​​U+0301. Unicode udržuje seznam jedinečně pojmenovaných sekvencí znaků pro abstraktní znaky, které nejsou přímo kódovány v Unicode.

Všechny grafické, formátové a soukromé znaky mají jedinečný a neměnný název, podle kterého je lze identifikovat. Tato neměnnost je od Unicode verze 2.0 zaručena zásadami stability názvu. V případech, kdy je název vážně vadný a zavádějící nebo obsahuje závažnou typografickou chybu, může být definován formální alias a aplikace se vyzývají, aby místo oficiálního názvu znaku používaly formální alias. Například, U + A015 YI slabika WU má formální alias YI slabika iterace MARK a U + FE18 Prezentační formát pro svislou pravé straně Bílá lentikulární Braz KC ET ( sic ) má formální alias Prezentační formát pro svislou pravé straně Bílá lentikulární BRA CK ET .

Hotové versus kompozitní postavy

Unicode obsahuje mechanismus pro úpravu znaků, který výrazně rozšiřuje podporovaný repertoár glyfů. To zahrnuje použití kombinování diakritických znamének, které může uživatel přidat za základní znak. Na stejný znak lze současně použít více kombinujících diakritiky. Unicode také obsahuje předkomponované verze většiny kombinací písmen/diacritic při běžném používání. Díky nim je převod do a ze starších kódování jednodušší a umožňuje aplikacím používat Unicode jako interní textový formát, aniž by bylo nutné implementovat kombinování znaků. Například é může být v Unicode reprezentováno jako U+ 0065 ( LATINSKÝ MALÝ PÍSMEN E ) následovaný U+0301 ( KOMBINUJÍCÍ AKUTNÍ AKCENT ), ale může být také reprezentováno jako předkomponovaný znak U+00E9 (LATINSKÝ MALÝ LETTER E S AKUTNÍ ) . V mnoha případech tedy uživatelé mají více způsobů kódování stejného znaku. Abychom se s tím vyrovnali, Unicode poskytuje mechanismus kanonické ekvivalence .

Příkladem toho je korejská abeceda Hangul . Unicode poskytuje mechanismus pro skládání slabik Hangul s jejich jednotlivými dílčími složkami, známý jako Hangul Jamo . Poskytuje však také 11 172 kombinací předem složených slabik vyrobených z nejběžnějšího jamo.

Tyto znaky CJK v současné době kódy jen pro jejich precomposed formě. Přesto většina těchto znaků obsahuje jednodušší prvky (nazývané radikály ), takže je v zásadě Unicode mohl rozložit stejně jako u Hangul. To by výrazně snížilo počet požadovaných kódových bodů a umožnilo by zobrazení prakticky každého myslitelného znaku (což by mohlo odstranit některé problémy způsobené sjednocením Han ). Podobnou myšlenku používají některé vstupní metody , například Cangjie a Wubi . Pokusy o kódování znaků však narazily na skutečnost, že čínské znaky se nerozkládají tak jednoduše nebo tak pravidelně jako Hangul.

Sada radikálů byla poskytnuta v Unicode 3.0 (radikály CJK mezi U+2E80 a U+2EFF, radikály KangXi v U+2F00 až U+2FDF a ideografické popisné znaky od U+2FF0 do U+2FFB), ale standard Unicode (kap. 12.2 Unicode 5.2) varuje před používáním sekvencí ideografického popisu jako alternativní reprezentace dříve kódovaných znaků:

Tento proces se liší od formálního kódování ideografu. Neexistuje žádný kanonický popis nekódovaných ideografů; popsaným ideografům není přiřazena žádná sémantika; pro popsané ideografy není definována ekvivalence. Koncepčně se ideografické popisy více podobají anglickému slovnímu spojení „an 'e' s akutním přízvukem“ než sekvenci znaků <U+0065, U+0301>.

Ligatury

Mnoho skriptů, včetně arabštiny a Devanāgarī , má speciální pravopisná pravidla, která vyžadují, aby se určité kombinace tvarů písmen spojily do speciálních ligaturních forem . Pravidla upravující tvorbu ligatury mohou být poměrně složitá a vyžadují speciální technologie pro tvarování skriptů, jako je ACE (Arabic Calligraphic Engine od společnosti DecoType v 80. letech minulého století a používané ke generování všech arabských příkladů v tištěných edicích standardu Unicode), což se stalo důkazem konceptu pro OpenType (Adobe a Microsoft), Graphite ( SIL International ) nebo AAT (Apple).

Do písem jsou také vloženy pokyny, které operačnímu systému sdělují, jak správně vytvářet různé posloupnosti znaků. Jednoduchým řešením umístění kombinujících značek nebo diakritiky je přiřadit značkám šířku nula a samotný glyf umístit vlevo nebo vpravo od levého bočního ložiska (v závislosti na směru skriptu, se kterým mají být použity). Takto zpracovaná značka se objeví nad jakýmkoli znakem, který ji předchází, ale nebude upravovat svou polohu vzhledem k šířce nebo výšce základního glyfu; může to být vizuálně nešikovné a může to překrývat některé glyfy. Skutečné stohování je nemožné, ale lze jej v omezených případech přiblížit (například thajské špičkové kombinace samohlásek a tónových značek mohou být pro začátek v různých výškách). Obecně je tento přístup účinný pouze u písem s mezerou, ale může být použit jako záložní způsob vykreslování, když složitější metody selžou.

Standardizované podmnožiny

Standardizováno je několik podmnožin Unicode: Microsoft Windows od Windows NT 4.0 podporuje WGL-4 s 657 znaky, což je považováno za podporu všech současných evropských jazyků pomocí latinského, řeckého nebo azbuky. Mezi další standardizované podmnožiny Unicode patří vícejazyčné evropské podmnožiny:

MES-1 (pouze latinské skripty, 335 znaků), MES-2 (latinská, řecká a cyrilice 1062 znaků) a MES-3A a MES-3B (dvě větší podmnožiny, zde nezobrazeny). Všimněte si, že MES-2 obsahuje všechny znaky v MES-1 a WGL-4.

WGL-4 , MES-1 a MES-2
Řádek Buňky Rozsah (y)
00 20–7E Základní latina (00–7F)
A0 – FF Dodatek Latin-1 (80 – FF)
01 00–13, 14–15, 16–2B, 2C – 2D, 2E – 4D, 4E – 4F, 50–7E, 7F Latin Extended-A (00–7F)
8F, 92, B7, DE-EF, FA – FF Latin Extended-B (80 – FF ... )
02 18–1B, 1E – 1F Latin Extended-B ( ... 00–4F)
59, 7C, 92 Rozšíření IPA (50 – AF)
BB – BD, C6, C7, C9, D6, D8 – DB, DC, DD, DF, EE Modifikační písmena mezer (B0 – FF)
03 74–75, 7A, 7E, 84–8A, 8C, 8E – A1, A3 – CE, D7, DA – E1 Řečtina (70 – FF)
04 00–5F, 90–91, 92 – C4, C7 – C8, CB – CC, D0 – EB, EE – F5, F8 – F9 Azbuka (00 – FF)
1E 02–03, 0A – 0B, 1E – 1F, 40–41, 56–57, 60–61, 6A – 6B, 80–85, 9B, F2 – F3 Rozšířená latinka (00 – FF)
1F 00–15, 18–1D, 20–45, 48–4D, 50–57, 59, 5B, 5D, 5F – 7D, 80 – B4, B6 – C4, C6 – D3, D6 – DB, DD – EF, F2 – F4, F6 – FE Řecký jazyk (00 – FF)
20 13–14, 15, 17, 18–19, 1A – 1B, 1C – 1D, 1E, 20–22, 26, 30, 32–33, 39–3A, 3C, 3E, 44, 4A Obecná interpunkce (00–6F)
7F , 82 Horní a dolní indexy (70–9 F)
A3 – A4, A7, AC, AF Symboly měny (A0 – CF)
21 05, 13, 16, 22, 26, 2E Symboly podobné písmenu (00–4F)
5B – 5E Číselné formuláře (50–8F)
90–93, 94–95, A8 Šipky (90 – FF)
22 00, 02, 03, 06, 08–09, 0F, 11–12, 15, 19–1A, 1E – 1F, 27–28, 29, 2A, 2B, 48, 59, 60–61, 64–65, 82–83, 95, 97 Matematické operátory (00 – FF)
23 02, 0A, 20–21, 29–2A Různé technické (00 – FF)
25 00, 02, 0C, 10, 14, 18, 1C, 24, 2C, 34, 3C, 50–6C Kresba rámečku (00–7F)
80, 84, 88, 8C, 90–93 Blokové prvky (80–9F)
A0 – A1, AA – AC, B2, BA, BC, C4, CA – CB, CF, D8 – D9, E6 Geometrické tvary (A0 – FF)
26 3A – 3C, 40, 42, 60, 63, 65–66, 6A, 6B Různé symboly (00 – FF)
F0 (01–02) Prostor pro soukromé použití (00 – FF ...)
FB 01–02 Abecední prezentační formuláře (00–4F)
FF FD Speciální nabídky

Vykreslovací software, který nedokáže vhodně zpracovat znak Unicode, jej často zobrazuje jako otevřený obdélník nebo „ náhradní znak “ Unicode (U+FFFD, ), aby indikoval polohu nerozpoznaného znaku. Některé systémy se pokusily poskytnout více informací o takových postavách. Apple Last Resort font bude zobrazovat náhradní piktogramy označující rozsah Unicode charakteru a SIL International ‚s Unicode Záložní font zobrazí okno zobrazující skalární hexadecimální hodnotu znaku.

Mapování a kódování

Bylo zadáno několik mechanismů pro ukládání řady kódových bodů jako řady bajtů.

Unicode definuje dvě metody mapování: kódování Unicode Transformation Format (UTF) a kódování Universal Coded Character Set (UCS). Kódování mapuje (možná podmnožinu) rozsah kódu Unicode ukazuje na sekvence hodnot v nějakém rozsahu pevné velikosti, nazývané kódové jednotky . Všechna kódování UTF mapují kód kódu na jedinečnou sekvenci bajtů. Čísla v názvech kódování udávají počet bitů na jednotku kódu (pro kódování UTF) nebo počet bytů na jednotku kódu (pro kódování UCS a UTF-1 ). Nejčastěji používaným kódováním jsou UTF-8 a UTF-16. UCS-2 je zastaralá podmnožina UTF-16; UCS-4 a UTF-32 jsou funkčně ekvivalentní.

Kódování UTF zahrnuje:

  • UTF-8 , používá jeden až čtyři bajty pro každý bod kódu, maximalizuje kompatibilitu s ASCII
  • UTF-EBCDIC , podobný UTF-8, ale navržený pro kompatibilitu s EBCDIC (není součástí standardu Unicode )
  • UTF-16 , používá jednu nebo dvě 16bitové kódové jednotky na kódový bod, nemůže kódovat náhradní
  • UTF-32 , používá jednu 32bitovou kódovou jednotku na kódový bod

UTF-8 používá jeden až čtyři bajty na bod kódu a je kompaktní pro latinské skripty a kompatibilní s ASCII a poskytuje de facto standardní kódování pro výměnu textu Unicode. Je používán FreeBSD a nejnovějšími distribucemi Linuxu jako přímá náhrada za starší kódování v obecné manipulaci s textem.

Kódování UCS-2 a UTF-16 specifikuje BOM ( Unicode Byte Order Mark ) pro použití na začátku textových souborů, které lze použít pro detekci pořadí bajtů (nebo detekci bajtové endianity ). Kusovník, kódový bod U+FEFF, má důležitou vlastnost jednoznačnosti při změně pořadí bajtů, bez ohledu na použité kódování Unicode; U+FFFE (výsledek výměny bajtů U+FEFF) se nerovná právnímu charakteru a U+FEFF na jiných místech než na začátku textu přenáší mezeru bez přerušení s nulovou šířkou (znak bez vzhledu a žádný účinek kromě prevence tvorby ligatur ).

Stejný znak převedený na UTF-8 se stane bajtovou sekvencí EF BB BF. Standard Unicode umožňuje, aby kusovník „mohl sloužit jako podpis pro text kódovaný UTF-8, kde je znaková sada bez označení“. Někteří vývojáři softwaru jej přijali pro jiná kódování, včetně UTF-8, ve snaze odlišit UTF-8 od místních 8bitových kódových stránek . Nicméně RFC  3629 , standard UTF-8, doporučuje, aby značky pořadí bajtů byly v protokolech používajících UTF-8 zakázány, ale popisuje případy, kdy to nemusí být možné. Kromě toho velké omezení možných vzorů v UTF-8 (například s vysokou sadou bitů nemohou existovat žádné osamocené bajty) znamená, že by mělo být možné odlišit UTF-8 od jiného kódování znaků, aniž by se museli spoléhat na kusovník.

V UTF-32 a UCS-4 slouží jedna 32bitová kódová jednotka jako poměrně přímá reprezentace bodu kódu libovolného znaku (ačkoli endianness, která se liší napříč různými platformami, ovlivňuje, jak se kódová jednotka projevuje jako bajtová sekvence). V ostatních kódováních může být každý bod kódu reprezentován proměnným počtem jednotek kódu. UTF-32 je široce používán jako interní reprezentace textu v programech (na rozdíl od uloženého nebo přenášeného textu), protože každý operační systém Unix, který ke generování softwaru používá kompilátory gcc, jej používá jako standardní kódování „ širokých znaků “. Některé programovací jazyky, jako například Seed7 , používají UTF-32 jako interní reprezentaci řetězců a znaků. Nedávné verze programovacího jazyka Python (počínaje 2.2) mohou být také nakonfigurovány tak, aby používaly UTF-32 jako reprezentaci řetězců Unicode, což účinně šíří takové kódování v kódovaném softwaru na vysoké úrovni .

Punycode , další kódovací forma, umožňuje kódování řetězců Unicode do omezené znakové sady podporované systémem DNS ( Domain Name System ) na bázi ASCII . Kódování se používá jako součást IDNA , což je systém umožňující používání internacionalizovaných doménových jmen ve všech skriptech, které Unicode podporuje. Dříve a nyní historické návrhy zahrnují UTF-5 a UTF-6 .

GB18030 je další kódovací forma pro Unicode, od Standardization Administration v Číně . Jedná se o oficiální znaková sada části Čínské lidové republiky (ČLR). BOCU-1 a SCSU jsou schémata komprese Unicode. Na apríl RFC 2005 uvedeno dvě parodie UTF kódování, UTF-9 a UTF-18 .

Přijetí

Operační systémy

Unicode se stal dominantním schématem pro interní zpracování a ukládání textu. Přestože je velké množství textu stále uloženo ve starších kódováních, Unicode se používá téměř výhradně k vytváření nových systémů pro zpracování informací. Raní uživatelé měli tendenci používat UCS-2 (dvoubajtový předchůdce pevné šířky UTF-16) a později přešli na UTF-16 (současný standard s proměnnou šířkou), protože to byl nejméně rušivý způsob, jak přidat podporu pro -BMP znaky. Nejznámějším takovým systémem je Windows NT (a jeho potomci, Windows 2000 , Windows XP , Windows Vista , Windows 7 , Windows 8 a Windows 10 ), který používá UTF-16 jako jediné interní kódování znaků. Prostředí bytecode Java a .NET , macOS a KDE jej také používají pro interní reprezentaci. Částečnou podporu pro Unicode lze nainstalovat na Windows 9x prostřednictvím Microsoft Layer pro Unicode .

UTF-8 (původně vyvinutý pro Plan 9 ) se stal hlavním kódováním úložiště ve většině operačních systémů podobných Unixu (i když některé knihovny používají i jiné), protože jde o relativně snadnou náhradu za tradiční rozšířené znakové sady ASCII . UTF-8 je také nejběžnější kódování Unicode používané v dokumentech HTML na World Wide Web .

Vícejazyčné nástroje pro vykreslování textu, které používají Unicode, zahrnují Uniscribe a DirectWrite pro Microsoft Windows, ATSUI a Core Text pro macOS a Pango pro GTK+ a desktop GNOME .

Vstupní metody

Protože rozložení klávesnice nemůže mít jednoduché kombinace kláves pro všechny znaky, několik operačních systémů poskytuje alternativní metody zadávání, které umožňují přístup k celému repertoáru.

ISO/IEC 14755 , která standardizuje metody pro zadávání znaků Unicode z jejich bodů kódu, určuje několik metod. Existuje metoda Basic , kde za počáteční sekvencí následuje hexadecimální reprezentace bodu kódu a koncová sekvence . Je také zadán způsob zadávání výběru obrazovky , kde jsou znaky uvedeny v tabulce na obrazovce, například pomocí programu pro mapování znaků.

Mezi online nástroje pro hledání bodu kódu pro známou postavu patří Unicode Lookup od Jonathana Hedleyho a Shapecatcher od Benjamina Mildeho. Při vyhledávání Unicode zadáte vyhledávací klíč (např. „Zlomky“) a vrátí se seznam odpovídajících znaků s jejich kódovými body. V Shapecatcher, na základě kontextu Shape , jeden nakreslí znak do rámečku a vrátí se seznam znaků přibližujících se kresbě s jejich kódovými body.

E-mailem

MIME definuje dva různé mechanismy pro kódování znaků jiných než ASCII v e-mailu v závislosti na tom, zda jsou znaky v záhlavích e-mailů (například „Předmět:“) nebo v textu zprávy; v obou případech je identifikována původní znaková sada a také přenosové kódování. Pro přenos Unicode e-mailem se doporučuje znaková sada UTF-8 a kódování přenosu Base64 nebo Quoted-printable v závislosti na tom, zda velká část zprávy obsahuje znaky ASCII . Podrobnosti o těchto dvou různých mechanismech jsou specifikovány ve standardech MIME a obecně jsou uživatelům e -mailového softwaru skryty.

Přijetí Unicode v e -mailu bylo velmi pomalé. Některý východoasijský text je stále zakódován v kódování, jako je ISO-2022 , a některá zařízení, například mobilní telefony, stále nedokáží správně zpracovat data Unicode. Podpora se však zlepšuje. Mnoho velkých poskytovatelů bezplatné pošty, jako jsou Yahoo , Google ( Gmail ) a Microsoft ( Outlook.com ), to podporuje.

Web

Všechna doporučení W3C používají Unicode jako znakovou sadu dokumentu od HTML 4.0. Webové prohlížeče podporují Unicode, zejména UTF-8, po mnoho let. Dříve docházelo k problémům se zobrazováním, které byly primárně důsledkem problémů souvisejících s písmem ; např. v 6 a starší aplikace Microsoft Internet Explorer nevykreslila mnoho bodů kódu, pokud nebylo výslovně řečeno, aby používaly písmo, které je obsahuje.

Přestože pravidla syntaxe mohou ovlivnit pořadí, ve kterém se mohou znaky zobrazovat, dokumenty XML (včetně XHTML ) podle definice obsahují znaky z většiny bodů kódu Unicode, s výjimkou:

Znaky HTML se projevují buď přímo jako bajty podle kódování dokumentu, pokud je kódování podporuje, nebo je uživatelé mohou zapsat jako odkazy na číselné znaky na základě znakového bodu Unicode kódu. Například odkazy &#916;, &#1049;, &#1511;, &#1605;, &#3671;, &#12354;, &#21494;, &#33865;, a &#47568;(nebo stejné číselné hodnoty vyjádřené v hexadecimální soustavě, se &#xjako prefix) by měl zobrazit na všechny prohlížeče jako Δ, Й, ק, م, 7,あ,叶,葉a 말.

Při zadávání identifikátorů URI , například jako adres URL v požadavcích HTTP , musí být znaky jiné než ASCII zakódovány v procentech .

Písma

Unicode se v zásadě nezabývá fonty jako takovými , vidí je jako možnosti implementace. Jakýkoli daný znak může mít mnoho alografů , od běžnějších tučných, kurzíva a základních tvarů písmen až po složité dekorativní styly. Písmo je „kompatibilní s Unicode“, pokud lze ke glyfům v písmu přistupovat pomocí kódových bodů definovaných ve standardu Unicode. Norma neurčuje minimální počet znaků, které musí být do písma zahrnuty; některá písma mají docela malý repertoár.

Bezplatná a maloobchodní písma založená na Unicode jsou široce dostupná, protože TrueType a OpenType podporují Unicode. Tyto formáty písem mapují body kódu Unicode na glyfy, ale písmo TrueType je omezeno na 65 535 glyfů.

Na trhu existují tisíce písem , ale méně než tucet písem-někdy označovaných jako „pan-Unicode“-se pokouší podpořit většinu znakového repertoáru Unicode. Místo toho se písma založená na Unicode obvykle zaměřují na podporu pouze základních ASCII a konkrétních skriptů nebo sad znaků nebo symbolů. Tento přístup ospravedlňuje několik důvodů: aplikace a dokumenty zřídka potřebují vykreslit znaky z více než jednoho nebo dvou systémů psaní; písma mají tendenci vyžadovat prostředky ve výpočetních prostředích; a operační systémy a aplikace vykazují rostoucí inteligenci, pokud jde o získávání informací o glyfech ze samostatných souborů písem podle potřeby, tj. nahrazování písem . Kromě toho představuje vytvoření konzistentní sady pokynů pro vykreslování desítek tisíc glyfů monumentální úkol; takový podnik projde bodem klesajících výnosů pro většinu písem.

Nové řádky

Unicode částečně řeší problém s novým řádkem , ke kterému dochází při pokusu o čtení textového souboru na různých platformách. Unicode definuje velký počet znaků, které by vyhovující aplikace měly rozpoznat jako ukončovače řádků.

Pokud jde o nový řádek, Unicode představil U+2028 LINE SEPARATOR a U+2029 PARAGRAPH SEPARATOR . Toto byl pokus poskytnout řešení Unicode pro sémantické kódování odstavců a řádků, které potenciálně nahradí všechna různá řešení platforem. Přitom Unicode poskytuje cestu kolem historických řešení závislých na platformě. Nicméně jen málo řešení Unicode přijalo tyto oddělovače řádků a odstavců Unicode jako jediné kanonické znaky pro ukončení řádku. Běžný přístup k řešení tohoto problému je však prostřednictvím normalizace nového řádku. Toho je dosaženo pomocí textového systému Cocoa v systému Mac OS X a také pomocí doporučení W3C XML a HTML. V tomto přístupu je každý možný znak nového řádku interně převeden na společný nový řádek (na kterém vlastně nezáleží, protože se jedná o interní operaci pouze pro vykreslování). Jinými slovy, textový systém může správně zacházet se znakem jako s novým řádkem, bez ohledu na skutečné kódování vstupu.

Problémy

Kritika filozofie a úplnosti

Han unifikace (identifikace forem ve východoasijských jazycích, které lze považovat za stylistické variace stejného historického charakteru) se stala jedním z nejkontroverznějších aspektů Unicode, a to navzdory přítomnosti většiny odborníků ze všech tří regionů v Ideographic Research Group (IRG), která radí konsorciu a ISO ohledně přírůstků do repertoáru a sjednocení Han.

Unicode byl kritizován za to, že nedokázal samostatně kódovat starší a alternativní formy kanji, což podle kritiků komplikuje zpracování starověkých japonských a neobvyklých japonských jmen. To je často dáno skutečností, že Unicode kóduje spíše znaky než glyfy (vizuální reprezentace základního znaku, která se často liší od jednoho jazyka k druhému). Sjednocení glyfů vede k dojmu, že se slučují samotné jazyky, nejen základní znaková reprezentace. Došlo k několika pokusům o vytvoření alternativních kódování, které zachovávají stylistické rozdíly mezi čínskými, japonskými a korejskými znaky v opozici vůči unifické politice sjednocení Han. Příkladem je TRON (ačkoli v Japonsku není široce přijímán, existují někteří uživatelé, kteří potřebují zpracovat historický japonský text a upřednostňovat jej).

Ačkoli repertoár méně než 21 000 znaků Han v nejranější verzi Unicode byl do značné míry omezen na znaky v běžném moderním používání, Unicode nyní obsahuje více než 92 000 znaků Han a práce stále přibývají tisíce dalších historických a nářečních znaků používaných v Číně, Japonsko, Korea, Tchaj -wan a Vietnam.

Moderní technologie písem poskytuje prostředky k řešení praktického problému potřeby vykreslit jednotný znak Han ve smyslu kolekce alternativních reprezentací glyfů ve formě variačních sekvencí Unicode . Pokročilé typografické tabulky OpenType například umožňují vybrat jednu z řady alternativních reprezentací glyfů při provádění procesu mapování znaku na glyf. V tomto případě mohou být v prostém textu poskytnuty informace k určení, kterou formu alternativního znaku zvolit.

Různé azbuky zobrazené s kurzívou i bez ní

Pokud se rozdíl v příslušných glyfech pro dva znaky ve stejném skriptu liší pouze kurzívou, Unicode je obecně sjednotil, jak je vidět na srovnání mezi ruskými (označenými standardy) a srbskými znaky vpravo, což znamená, že rozdíly jsou zobrazeno pomocí technologie chytrých písem nebo ruční změnou písem.

Mapování na starší znakové sady

Unicode byl navržen tak, aby poskytoval konverzi formátu zpáteční po jednotlivých bodech po kódu do a ze všech již existujících kódování znaků, takže textové soubory ve starších znakových sadách lze převést na Unicode a poté zpět a získat stejný soubor, bez použití kontextově závislého výkladu. To znamená, že v Unicode existují nekonzistentní starší architektury, jako je kombinace diakritiky a předkomponovaných znaků , které poskytují více než jednu metodu reprezentace nějakého textu. To je nejvýraznější ve třech různých formách kódování pro korejský Hangul . Od verze 3.0 již nelze do standardu přidávat žádné předkomponované znaky, které mohou být reprezentovány kombinující sekvencí již existujících znaků, aby byla zachována interoperabilita mezi softwarem využívajícím různé verze Unicode.

Injektivní mapování musí být poskytováno mezi znaky ve stávajících starších znakových sadách a znaky v Unicode, aby se usnadnil převod na Unicode a umožnila interoperabilita se starším softwarem. Nedostatek konzistence v různých mapováních mezi dřívějšími japonskými kódováními, jako je Shift-JIS nebo EUC-JP a Unicode, vedl k neshodám převodu ve formátu round-trip , zejména k mapování znaku JIS X 0208 '~' (1-33, WAVE DASH) , silně používaný ve starších databázových datech, k U+FF5E FULLWIDTH TILDE (v systému Microsoft Windows ) nebo U+301C WAVE DASH (ostatní dodavatelé).

Někteří japonští počítačoví programátoři vznesli námitky proti Unicode, protože vyžaduje, aby oddělily použití U+005C \ REVERSE SOLIDUS (zpětné lomítko) a U+00A5 ¥ YEN SIGN , který byl mapován na 0x5C v JIS X 0201, a existuje mnoho starších kódů s tímto použitím. (Toto kódování také nahrazuje vlnovku „~“ 0x7E macronem „¯“, nyní 0xAF.) Oddělení těchto znaků existuje v ISO 8859-1 , tedy dávno před Unicode.

Indické skripty

Indickým skriptům, jako jsou Tamil a Devanagari, je přiděleno pouze 128 kódových bodů, odpovídajících standardu ISCII . Správné vykreslení textu Unicode Indic vyžaduje transformaci uložených znaků logického pořadí do vizuálního pořadí a vytváření ligatur (alias spojek) z komponent. Někteří místní učenci argumentovali ve prospěch přiřazení bodů kódu Unicode k těmto ligaturám, což je v rozporu s praxí pro jiné systémy psaní, ačkoli Unicode obsahuje některé arabské a jiné ligatury pouze pro účely zpětné kompatibility. Kódování jakýchkoli nových ligatur v Unicode se nestane, částečně proto, že sada ligatur je závislá na fontu a Unicode je kódování nezávislé na variacích písem. Stejný problém nastal u tibetského skriptu v roce 2003, kdy Čínská normalizační správa navrhla kódování 956 předkomponovaných tibetských slabik, ale ty byly odmítnuty pro kódování příslušným výborem ISO ( ISO/IEC JTC 1/SC 2 ).

Podpora thajské abecedy byla kritizována kvůli řazení thajských znaků. Samohlásky เ, แ, โ, ใ, ไ, které jsou zapsány nalevo od předchozí souhlásky, jsou na rozdíl od reprezentací Unicode jiných indických skriptů ve vizuálním pořadí místo fonetického pořadí. Tato komplikace je způsobena tím, že Unicode zdědil thajský průmyslový standard 620 , který fungoval stejným způsobem a byl způsob, jakým se thajština vždy psala na klávesnicích. Tento problém s objednávkou mírně komplikuje proces řazení Unicode, což vyžaduje vyhledávání tabulek pro změnu pořadí thajských znaků pro řazení. I kdyby Unicode přijal kódování podle mluveného pořadí, bylo by stále problematické třídit slova ve slovníkovém pořadí. Např. Slovo แสดง [sa dɛːŋ] „provést“ začíná souhláskovým shlukem „สด“ (s inherentní samohláskou pro souhlásku „ส“), samohláska แ-v mluveném pořadí přijde za ด, ale ve slovníku je slovo seřazené tak, jak je napsáno, se samohláskou za ส.

Kombinace postav

Znaky s diakritikou lze obecně reprezentovat buď jako jeden předkomponovaný znak, nebo jako rozloženou sekvenci základního písmene plus jednu nebo více mezer bez mezer. Například, E (precomposed e s macron a akutní výše) a E (následuje kombinování macron výše a kombinuje akutní výše) by měl být vyjádřen shodně, jak se objevit jako e s pomlčkou a čárkou , ale v praxi, jejich vzhled se může lišit v závislosti na tom, jaký vykreslovací modul a písma se používají k zobrazení postav. Podobně underdots , podle potřeby v romanization z indické , bude často umístěny nesprávně .. znaky Unicode, které plánek precomposed piktogramy mohou být použity v mnoha případech, čímž se zabrání problém, ale pokud žádný precomposed postava byla kódovaná problém může být často lze vyřešit pomocí speciálního písma Unicode, jako je Charis SIL, které pro pokročilé funkce vykreslování používá technologie Graphite , OpenType nebo AAT .

Anomálie

Standard Unicode zavedl pravidla, která mají zaručit stabilitu. V závislosti na přísnosti pravidla může být změna zakázána nebo povolena. Například „název“ daný kódovému bodu se nemůže a nebude měnit. Vlastnost „skript“ je však podle vlastních pravidel Unicode flexibilnější. Ve verzi 2.0 Unicode změnil mnoho „názvů“ kódových bodů od verze 1. Ve stejné chvíli Unicode uvedl, že od té doby se přiřazené jméno ke kódovému bodu již nikdy nezmění. To znamená, že když jsou chyby publikovány, tyto chyby nelze opravit, i když jsou triviální (jak se stalo v jednom případě s hláskováním BRAKCET pro BRACKET v názvu postavy). V roce 2006 byl poprvé zveřejněn seznam anomálií ve jménech postav a v červnu 2021 bylo 104 znaků s identifikovanými problémy, například:

  • U+2118 SCRIPT CAPITAL P : Toto je malé písmeno. Hlavním městem je U + 1D4AB 𝒫 MATEMATICKÁ SCRIPT CAPITAL P .
  • U+034F ͏ KOMBINACE GRAPHEME JOINER : Nespojuje grafémy.
  • U+A015 SY YI SYLLABLE WU : Toto není slabika Yi, ale znak iterace Yi.
  • U+FE18 PREZENTAČNÍ FORMULÁŘ PRO VERTIKÁLNÍ PRAVĚ BÍLOU LENTIKULÁRNÍ BRZDU : držák je napsán nesprávně.

Pravopisné chyby jsou vyřešeny použitím aliasů a zkratek aliasů Unicode .

Viz také

Poznámky

Reference

Další čtení

  • Unicode Standard, verze 3.0 , The Unicode Consortium, Addison-Wesley Longman, Inc., duben 2000. ISBN  0-201-61633-5
  • The Unicode Standard, verze 4.0 , The Unicode Consortium, Addison-Wesley Professional, 27. srpna 2003. ISBN  0-321-18578-1
  • The Unicode Standard, verze 5.0, Fifth Edition , The Unicode Consortium , Addison-Wesley Professional, 27. října 2006. ISBN  0-321-48091-0
  • Julie D. Allen. Standard Unicode, verze 6.0 , The Unicode Consortium , Mountain View, 2011, ISBN  9781936213016 , ( [1] ).
  • The Complete Manual of Typography , James Felici, Adobe Press; 1. vydání, 2002. ISBN  0-321-12730-7
  • Unicode: Primer , Tony Graham, M&T books, 2000. ISBN  0-7645-4625-2 .
  • Unicode Demystified: Praktický průvodce programátora standardu kódování , Richard Gillam, Addison-Wesley Professional; 1. vydání, 2002. ISBN  0-201-70052-2
  • Vysvětlen Unicode , Jukka K. Korpela, O'Reilly; 1. vydání, 2006. ISBN  0-596-10121-X

externí odkazy