Unicode - Unicode

Unicode
Ny Unicode logo.svg
Alias Universal kodad teckenuppsättning (UCS)
Språk) Internationell
Standard Unicode Standard
Kodningsformat
Föregås av ISO/IEC 8859 , olika andra

Unicode , formellt Unicode Standard , är en informationsteknisk standard för konsekvent kodning , representation och hantering av text uttryckt i de flesta av världens skrivsystem . Standarden, som upprätthålls av Unicode Consortium , definierar 144 697 tecken som täcker 159 moderna och historiska skript , liksom symboler, emoji och icke-visuella kontroll- och formateringskoder.

Unicode-teckenrepertoaren är synkroniserad med ISO/IEC 10646 , var och en är kod-för-kod identisk med den andra. Unicode -standarden innehåller dock mer än bara baskoden. Vid sidan av teckenkodningarna innehåller konsortiets officiella publikation en mängd olika detaljer om skripten och hur de ska visas: normaliseringsregler , sönderdelning, sortering , återgivning och dubbelriktad textvisning för flerspråkiga texter och så vidare. I Standard ingår även referens datafiler och visuella diagram för att hjälpa utvecklare och designers korrekt genomföra repertoaren.

Unicode framgång vid förenande teckenuppsättningar har lett till dess utbredda och dominerande användning i internationalisering och lokalisering av dator programvara . Standarden har implementerats i många nya tekniker, inklusive moderna operativsystem , XML , Java (och andra programmeringsspråk ) och .NET Framework .

Unicode kan implementeras med olika teckenkodningar. Unicode-standarden definierar Unicode Transformation Formats (UTF): UTF-8 , UTF-16 och UTF-32 och flera andra kodningar. De vanligaste kodningarna är UTF-8, UTF-16 och den föråldrade UCS-2 (en föregångare till UTF-16 utan fullt stöd för Unicode); GB18030 , även om det inte är en officiell Unicode -standard, är standardiserad i Kina och implementerar Unicode fullt ut.

UTF-8, den dominerande kodningen på World Wide Web (används på över 95% av webbplatserna från och med 2020, och upp till 100% för vissa språk) och på de flesta Unix-liknande operativsystem, använder en byte (8  bitar ) för de första 128 kodpunkterna och upp till 4 byte för andra tecken. De första 128 Unicode-kodpunkterna representerar ASCII- tecknen, vilket innebär att en ASCII-text också är en UTF-8-text.

UCS-2 använder två byte (16 bitar) för varje tecken men kan bara koda de första 65 536 kodpunkterna , det så kallade Basic Multilingual Plane (BMP). Med 1 112 064 möjliga Unicode-kodpunkter motsvarande tecken (se nedan ) på 17 plan och med över 144 000 kodpunkter definierade från version 14.0 kan UCS-2 bara representera mindre än hälften av alla kodade Unicode-tecken. Därför är UCS-2 föråldrad, men används fortfarande i programvara. UTF-16 utökar UCS-2 genom att använda samma 16-bitars kodning som UCS-2 för det grundläggande flerspråkiga planet och en 4-byte-kodning för de andra planen. Så länge den inte innehåller några kodpunkter i det reserverade intervallet U+D800 – U+DFFF, är en UCS-2-text giltig UTF-16-text.

UTF-32 (även kallad UCS-4) använder fyra byte för att koda en given kodpunkt, men inte nödvändigtvis någon given användaruppfattad karaktär (löst sett ett grafem ), eftersom ett användaruppfattat tecken kan representeras av en grafemkluster (en sekvens med flera kodpunkter). Precis som UCS-2 är antalet byte per kodpunkt fast, vilket underlättar kodpunktsindexering; men till skillnad från UCS-2 kan UTF-32 koda alla Unicode-kodpunkter. Eftersom varje kodpunkt använder fyra byte tar UTF-32 dock betydligt mer plats än andra kodningar och används inte i stor utsträckning. Även om UTF-32 har en fast storlek för varje kodpunkt, är den också variabel längd med avseende på användaruppfattade tecken. Exempel inkluderar: Devanagari kshi , som kodas av 4 kodpunkter, och nationella flagg emojis, som består av två kodpunkter. Alla kombinerade teckensekvenser är grafem, men det finns också andra sekvenser av kodpunkter, till exempel \ r \ n .

Ursprung och utveckling

Unicode har det uttryckliga syftet att överskrida begränsningarna för traditionella teckenkodningar, till exempel de som definieras av ISO/IEC 8859 -standarden, som har stor användning i olika länder i världen men fortfarande är i stort sett oförenliga med varandra. Många traditionella teckenkodningar delar ett vanligt problem genom att de tillåter tvåspråkig datorbehandling (vanligtvis med latinska tecken och det lokala skriptet), men inte flerspråkig datorbehandling (datorbehandling av godtyckliga skript blandade med varandra).

Unicode kodar i avsikt de underliggande tecknen- grafem och grafemliknande enheter-snarare än variantglyferna (återgivningarna) för sådana tecken. När det gäller kinesiska tecken leder detta ibland till kontroverser om att skilja den underliggande karaktären från dess variantglyfer (se Han -förening ).

Vid textbehandling tar Unicode rollen som att tillhandahålla en unik kodpunkt - ett tal , inte ett tecken - för varje tecken. Med andra ord representerar Unicode ett tecken på ett abstrakt sätt och lämnar den visuella återgivningen (storlek, form, typsnitt eller stil) till annan programvara, till exempel en webbläsare eller ordbehandlare . Detta enkla mål blir dock komplicerat på grund av eftergifter från Unicodes designers i hopp om att uppmuntra ett snabbare införande av Unicode.

De första 256 kodpunkterna gjordes identiska med innehållet i ISO/IEC 8859-1 för att göra det trivialt att konvertera befintlig västerländsk text. Många väsentligen identiska tecken kodades flera gånger vid olika kodpunkter för att bevara distinktioner som används av äldre kodningar och därför tillåta konvertering från dessa kodningar till Unicode (och tillbaka) utan att förlora någon information. Till exempel omfattar avsnittet " fullbreddsformer " av kodpunkter en fullständig kopia av det latinska alfabetet eftersom kinesiska, japanska och koreanska ( CJK ) teckensnitt innehåller två versioner av dessa bokstäver, "fullbredd" som matchar bredden på CJK -tecknen, och normal bredd. För andra exempel, se dubblettecken i Unicode .

Unicode Bulldog Award -mottagare inkluderar många namn som har inflytande i utvecklingen av Unicode och inkluderar Tatsuo Kobayashi , Thomas Milo, Roozbeh Pournader , Ken Lunde och Michael Everson

Historia

Baserat på erfarenheter av Xerox Character Code Standard (XCCS) sedan 1980, ursprunget till Unicode dateras till 1987, då Joe Becker från Xerox med Lee Collins och Mark Davis från Apple började undersöka det praktiska med att skapa en universell karaktärsuppsättning. Med ytterligare input från Peter Fenwick och Dave Opstad publicerade Joe Becker ett förslag till ett "internationellt/flerspråkigt system för kodning av tecken i augusti 1988, som preliminärt kallas Unicode". Han förklarade att "[namnet" Unicode "är avsett att föreslå en unik, enhetlig, universell kodning".

I detta dokument, med titeln Unicode 88 , skisserade Becker en 16-bitars teckenmodell:

Unicode är avsett att tillgodose behovet av en fungerande, pålitlig världstekstkodning. Unicode kan ungefär beskrivas som "wide-body ASCII" som har sträckts till 16 bitar för att omfatta karaktärerna i alla världens levande språk. I en korrekt konstruerad design är 16 bitar per tecken mer än tillräckligt för detta ändamål.

Hans ursprungliga 16-bitars design baserades på antagandet att endast dessa skript och tecken i modern användning skulle behöva kodas:

Unicode prioriterar högre nytta för framtiden än att bevara tidigare antikviteter. Unicode riktar sig i första hand till de karaktärer som publiceras i modern text (t.ex. i sammanslutningen av alla tidningar och tidskrifter tryckta i världen 1988), vars antal utan tvekan ligger långt under 2 14 = 16 384. Utöver dessa moderna tecken kan alla andra definieras som föråldrade eller sällsynta; dessa är bättre kandidater för privatanvändning än för att överbelasta den offentliga listan över allmänt användbara Unicodes.

I början av 1989 expanderade Unicode-arbetsgruppen till att omfatta Ken Whistler och Mike Kernaghan från Metaphor, Karen Smith-Yoshimura och Joan Aliprand från RLG och Glenn Wright från Sun Microsystems , och 1990 Michel Suignard och Asmus Freytag från Microsoft och Rick McGowan av NeXT gick med i gruppen. I slutet av 1990 hade det mesta av arbetet med att kartlägga befintliga teckenkodningsstandarder slutförts och ett slutgiltigt granskningsutkast av Unicode var klart.

Den Unicode Consortium bildades i Kalifornien den 3 januari 1991 och i oktober 1991, den första volymen av Unicode-standarden publiceras. Den andra volymen, som täcker Han ideografer, publicerades i juni 1992.

1996 implementerades en surrogat -teckenmekanism i Unicode 2.0, så att Unicode inte längre begränsades till 16 bitar. Detta ökade Unicode -kodutrymmet till över en miljon kodpunkter, vilket möjliggjorde kodning av många historiska skript (t.ex. egyptiska hieroglyfer ) och tusentals sällan använda eller föråldrade tecken som inte hade förväntats behöva kodas. Bland karaktärerna som inte ursprungligen var avsedda för Unicode används sällan Kanji eller kinesiska tecken, varav många är en del av person- och ortnamn, vilket gör dem sällan använda, men mycket mer väsentliga än tänkt i Unicodes ursprungliga arkitektur.

Microsoft TrueType -specifikation version 1.0 från 1992 använde namnet 'Apple Unicode' istället för 'Unicode' för plattforms -ID i namngivningstabellen.

Unicode Consortium

Unicode Consortium är en ideell organisation som samordnar Unicodes utveckling. Fullständiga medlemmar inkluderar de flesta av de viktigaste datorprogram- och hårdvaruföretagen med intresse för textbehandlingsstandarder, inklusive Adobe , Apple , Facebook , Google , IBM , Microsoft , Netflix och SAP SE .

Under åren har flera länder eller statliga myndigheter varit medlemmar i Unicode Consortium. För närvarande är endast ministeriet för kapital och religiösa frågor (Oman) en fullvärdig medlem med rösträtt.

Konsortiet har det ambitiösa målet att så småningom ersätta befintliga teckenkodningssystem med Unicode och dess standard Unicode Transformation Format (UTF) -scheman, eftersom många av de befintliga systemen är begränsade i storlek och omfattning och inte är kompatibla med flerspråkiga miljöer.

Manus omfattas

Många moderna applikationer kan återge en betydande delmängd av de många skripten i Unicode , vilket visas av den här skärmdumpen från OpenOffice.org -applikationen.

Unicode täcker nästan alla skript ( skrivsystem ) i aktuell användning idag.

Från och med 2021 ingår totalt 159 skript i den senaste versionen av Unicode (som täcker alfabet , abugidas och kursplaner ), även om det fortfarande finns skript som ännu inte är kodade, särskilt de som främst används i historiska, liturgiska och akademiska sammanhang. Ytterligare tillägg av tecken till de redan kodade skripten, liksom symboler, särskilt för matematik och musik (i form av noter och rytmiska symboler), förekommer också.

Unicode Roadmap Committee ( Michael Everson , Rick McGowan, Ken Whistler, VS Umamaheswaran) upprätthåller listan över skript som är kandidater eller potentiella kandidater för kodning och deras preliminära kodblockuppgifter på Unicode Roadmap -sidan på Unicode Consortium -webbplatsen. För vissa skript på färdplanen, till exempel Jurchen och Khitan small script , har kodningsförslag gjorts och de arbetar sig igenom godkännandeprocessen. För andra manus, som Mayan (förutom siffror) och Rongorongo , har inget förslag ännu lagts fram, och de väntar på enighet om karaktärsrepertoar och andra detaljer från de berörda användargrupperna.

Vissa moderna uppfunna skript som ännu inte har inkluderats i Unicode (t.ex. Tengwar ) eller som inte kvalificerar sig för att inkluderas i Unicode på grund av bristande användning i verkliga världen (t.ex. Klingon ) listas i ConScript Unicode-registret , tillsammans med inofficiella men allmänt använda privata användningsområden kodtilldelningar .

Det finns också ett medeltida Unicode -teckensnittsinitiativ med fokus på speciella latinska medeltida karaktärer. En del av dessa förslag har redan inkluderats i Unicode.

Script Encoding Initiative

Script Encoding Initiative, ett projekt som drivs av Deborah Anderson vid University of California, Berkeley grundades 2002 med målet att finansiera förslag för manus som ännu inte är kodade i standarden. Projektet har blivit en viktig källa till föreslagna tillägg till standarden under de senaste åren.

Versioner

Unicode Consortium och International Organization for Standardization (ISO) har tillsammans utvecklat en gemensam repertoar efter den första publiceringen av The Unicode Standard 1991; Unicode och ISO: s Universal Coded Character Set (UCS) använder identiska teckennamn och kodpunkter. Unicode -versionerna skiljer sig dock från sina ISO -ekvivalenter på två betydande sätt.

Även om UCS är en enkel teckenkarta, anger Unicode de regler, algoritmer och egenskaper som är nödvändiga för att uppnå driftskompatibilitet mellan olika plattformar och språk. Således innehåller Unicode Standard mer information som omfattar - på djupet - ämnen som bitvis kodning, sortering och återgivning. Det ger också en omfattande katalog över karaktärsegenskaper, inklusive de som behövs för att stödja dubbelriktad text , samt visuella diagram och referensdatauppsättningar för att hjälpa implementatörer. Tidigare såldes Unicode Standard som en utskriftsvolym som innehåller den fullständiga kärnspecifikationen, standardbilagor och koddiagram. Unicode 5.0, som publicerades 2006, var dock den senaste versionen som skrevs ut på detta sätt. Från och med version 5.2 får endast köpspecifikationen, publicerad som utskrift på begäran, köpas. Hela texten, å andra sidan, publiceras som en gratis PDF på Unicode -webbplatsen.

Ett praktiskt skäl för denna publikationsmetod belyser den andra signifikanta skillnaden mellan UCS och Unicode - hur ofta uppdaterade versioner släpps och nya tecken läggs till. Unicode Standard har regelbundet släppt årliga utökade versioner, ibland med mer än en version släppt under ett kalenderår och med sällsynta fall där den schemalagda utgåvan måste skjutas upp. Till exempel, i april 2020, bara en månad efter att version 13.0 publicerades, meddelade Unicode Consortium att de hade ändrat det avsedda utgivningsdatumet för version 14.0, vilket pressade tillbaka det sex månader från mars 2021 till september 2021 på grund av COVID-19-pandemin .

Hittills har följande större och mindre versioner av Unicode -standarden publicerats. Uppdateringsversioner, som inte innehåller några ändringar i teckenrepertoaren, betecknas med det tredje numret (t.ex. "version 4.0.1") och utelämnas i tabellen nedan.

Version Datum bok Motsvarande ISO/IEC 10646 -utgåva Skript Tecken
Total Anmärkningsvärda tillägg
1.0.0 Oktober 1991 ISBN  0-201-56788-1 (volym 1) 24 7 129 Den inledande repertoaren täcker dessa skript: arabiska , armeniska , bengaliska , Bopomofo , kyrilliska , Devanagari , georgiska , grekiska och koptiska , gujarati , Gurmukhi , Hangul , hebreiska , Hiragana , Kannada , Katakana , Lao , Latin , Malayalam , Oriya , Tamil , Telugu , Thailändska och tibetanska .
1.0.1 Juni 1992 ISBN  0-201-60845-6 (volym 2) 25 28 327
(21 204 tillagda;
6 borttagna)
Den inledande uppsättningen 20 902 CJK Unified Ideographs är definierad.
1.1 Juni 1993 ISO/IEC 10646-1: 1993 24 34168
(5 963 tillagda;
89 borttagna;
33 omklassificerade
som kontrolltecken
)
4 306 fler Hangul -stavelser tillagda i originaluppsättningen med 2 350 tecken. Tibetan borttagen.
2.0 Juli 1996 ISBN  0-201-48345-9 ISO/IEC 10646-1: 1993 plus ändringarna 5, 6 och 7 25 38.885
(11.373 tillagda;
6.656 borttagna)
Original uppsättning Hangul -stavelser har tagits bort och en ny uppsättning 11 172 Hangul -stavelser har lagts till på en ny plats. Tibetanska tillkom igen på en ny plats och med en annan karaktärsrepertoar. Surrogatkaraktärsmekanism definierad och plan 15 och plan 16 privata användningsområden tilldelas.
2.1 Maj 1998 ISO/IEC 10646-1: 1993 plus ändringarna 5, 6 och 7, samt två tecken från ändring 18 25 38 887
(2 tillagda)
Eurotecken och objektbytes -tecken tillagt.
3.0 September 1999 ISBN  0-201-61633-5 ISO/IEC 10646-1: 2000 38 49.194
(10.307 tillagda)
Cherokee , Ethiopic , Khmer , Mongolian , Burmese , Ogham , Runic , Sinhala , Syriac , Thaana , Unified Canadian Aboriginal Syllabics och Yi -stavelser har lagts till, liksom en uppsättning punktskriftsmönster .
3.1 Mars 2001 ISO/IEC 10646-1: 2000

ISO/IEC 10646-2: 2001

41 94,140
(44 946 tillagda)
Deseret , gotisk och gammal kursiv tillagd, liksom uppsättningar av symboler för västerländsk musik och bysantinsk musik , och 42.711 ytterligare CJK Unified Ideographs .
3.2 Mars 2002 ISO/IEC 10646-1: 2000 plus ändring 1

ISO/IEC 10646-2: 2001

45 95156
(1 016 tillagda)
Filippinska skript Buhid , Hanunó'o , Tagalog och Tagbanwa tillagda.
4.0 April 2003 ISBN  0-321-18578-1 ISO/IEC 10646: 2003 52 96382
(1 226 tillagda)
Cypriotisk kursplan , Limbu , Linear B , Osmanya , Shavian , Tai Le och Ugaritic tillagd, liksom Hexagram -symboler .
4.1 Mars 2005 ISO/IEC 10646: 2003 plus ändring 1 59 97655
(1 273 tillagda)
Buginese , Glagolitic , Kharoshthi , New Tai Lue , Old Persian , Syloti Nagri och Tifinagh tillagda, och koptiska avvecklades från grekiska . Forntida grekiska nummer och musikalsymboler tillkom också.
5.0 Juli 2006 ISBN  0-321-48091-0 ISO/IEC 10646: 2003 plus ändringsförslag 1 och 2, samt fyra tecken från ändring 3 64 99 024
(1 369 tillagda)
Balinesiska , Cuneiform , N'Ko , Phags-pa och feniciska tillagda.
5.1 April 2008 ISO/IEC 10646: 2003 plus ändringar 1, 2, 3 och 4 75 100 648
(1 624 tillagda)
Carian , Cham , Kayah Li , Lepcha , Lycian , Lydian , Ol Chiki , Rejang , Saurashtra , Sundaneser och Vai tillagda, liksom uppsättningar av symboler för Phaistos Disc , Mahjong brickor och Domino brickor . Det fanns också viktiga tillägg för burmesiska , tillägg av bokstäver och skriftförkortningar som användes i medeltida manuskript och tillägg av Capital ẞ .
5.2 Oktober 2009 ISBN  978-1-936213-00-9 ISO/IEC 10646: 2003 plus ändringar 1, 2, 3, 4, 5 och 6 90 107 296
(6 648 tillagda)
Avestan , Bamum , egyptiska hieroglyfer ( Gardiner -uppsättningen , omfattande 1 071 tecken), kejserliga arameiska , Inscriptional Pahlavi , Inscriptional Parthian , Javanese , Kaithi , Lisu , Meetei Mayek , Old South Arabian , Old Turkic , Samaritan , Tai Tham och Tai Viet tillagda. 4 149 ytterligare CJK Unified Ideographs (CJK-C), liksom utökad Jamo för Old Hangul , och karaktärer för vediskt sanskrit .
6,0 Oktober 2010 ISBN  978-1-936213-01-6 ISO/IEC 10646: 2010 plus det indiska rupietecknet 93 109 384
(2 088 tillagda)
Batak , Brahmi , Mandaic , spela kort symboler, transport- och kartsymboler, alkemiska symboler , uttryckssymboler och emoji . 222 ytterligare CJK Unified Ideographs (CJK-D) tillagda.
6.1 Januari 2012 ISBN  978-1-936213-02-3 ISO/IEC 10646: 2012 100 110,116
(732 tillagda)
Chakma , meroitisk kursiv , meroitisk hieroglyf , Miao , Sharada , Sora Sompeng och Takri .
6.2 September 2012 ISBN  978-1-936213-07-8 ISO/IEC 10646: 2012 plus den turkiska liran 100 110,117
(1 tillagd)
Turkisk lira tecken .
6.3 September 2013 ISBN  978-1-936213-08-5 ISO/IEC 10646: 2012 plus sex tecken 100 110,122
(5 tillagda)
5 dubbelriktade formateringstecken.
7,0 Juni 2014 ISBN  978-1-936213-09-2 ISO/IEC 10646: 2012 plus ändringsförslag 1 och 2, samt rubelskylten 123 112 956
(2 834 tillagda)
Bassa Vah , kaukasisk albanska , Duployan , Elbasan , Grantha , Khojki , Khudawadi , Linear A , Mahajani , Manichaean , Mende Kikakui , Modi , Mro , Nabataean , Old North Arabian , Old Permic , Pahawh Hmong , Palmyrene , Pau Cin Hau , Psalter Pahli , Siddham , Tirhuta , Warang Citi och Dingbats .
8.0 Juni 2015 ISBN  978-1-936213-10-8 ISO/IEC 10646: 2014 plus ändring 1, liksom Lari -tecknet , nio CJK -enhetliga ideografer och 41 emoji -tecken 129 120672
(7 716 tillagda)
Ahom , Anatolian hieroglyfer , Hatran , Multani , Gamla ungerska , SignWriting , 5771 CJK enat ideographs en uppsättning gemener för Cherokee och fem emoji hudton modifierare.
9,0 Juni 2016 ISBN  978-1-936213-13-9 ISO/IEC 10646: 2014 plus ändringsförslag 1 och 2, samt Adlam, Newa, japanska tv -symboler och 74 emoji och symboler 135 128,172
(7500 tillagda)
Adlam , Bhaiksuki , Marchen , Newa , Osage , Tangut och 72 emoji .
10,0 Juni 2017 ISBN  978-1-936213-16-0 ISO/IEC 10646: 2017 plus 56 emoji -tecken, 285 hentaigana -tecken och 3 Zanabazar Square -tecken 139 136 690
(8518 tillagda)
Zanabazar Square , Soyombo , Masaram Gondi , Nüshu , hentaigana (icke-standard hiragana ), 7 494 CJK-enhetliga ideografer , 56 emoji och bitcoin- symbol.
11,0 Juni 2018 ISBN  978-1-936213-19-1 ISO/IEC 10646: 2017 plus ändringsförslag 1, samt 46 Mtavruli georgiska versaler, 5 enhetliga ideografier från CJK och 66 emoji -tecken. 146 137 374
(684 tillagda)
Dogra , georgiska Mtavruli versaler, Gunjala Gondi , Hanifi Rohingya , Indic Siyaq -nummer , Makasar , Medefaidrin , Old Sogdian och Sogdian , Maya -siffror , 5 akut nödvändiga CJK -enhetliga ideografer , symboler för xiangqi (kinesiskt schack) och stjärnbetyg , och 145 emoji .
12,0 Mars 2019 ISBN  978-1-936213-22-1 ISO/IEC 10646: 2017 plus ändringsförslag 1 och 2, samt 62 ytterligare tecken. 150 137,928
(554 tillagda)
Elymaic , Nandinagari , Nyiakeng Puachue Hmong , Wancho , Miao manus tillägg för flera Miao och Yi dialekter i Kina, hiragana och katakana små bokstäver för att skriva arkaiska japanska, tamilska historiska fraktioner och symboler, lao bokstäver för Pali , latinska bokstäver för egyptologisk och ugaritisk transliteration , hieroglyfformatkontroller och 61 emoji .
12.1 Maj 2019 ISBN  978-1-936213-25-2 150 137,929
(1 tillagd)
Lägger till ett enda tecken vid U+32FF för den fyrkantiga ligaturformen av namnet på Reiwa -eran .
13,0 Mars 2020 ISBN  978-1-936213-26-9 ISO/IEC 10646: 2020 154 143 859
(5 930 tillagda)
Chorasmian , Dives Akuru , Khitan small script , Yezidi , 4 969 CJK unified ideographs added (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 Pakistan, Bopomofo -tillägg som används för kantonesiska, Creative Commons -licenssymboler, grafiska tecken för kompatibilitet med text -TV och hemdatorsystem från 1970- och 1980 -talen och 55 emoji.
14,0 September 2021 ISBN  978-1-936213-29-0 159 144.697
(838 tillagda)
Toto , Cypro-Minoan , Vithkuqi , Old Uyghur , Tangsa , Latinsk tillägg på SMP-block (Ext-F, Ext-G) för användning i utökad IPA , arabiska skript tillägg för användning på språk i hela Afrika och i Iran, Pakistan, Malaysia , Indonesien, Java och Bosnien, och för att skriva hedersbetygelser, tillägg för Korananvändning, andra tillägg för att stödja språk i Nordamerika, Filippinerna, Indien och Mongoliet, tillägg av Kirgizistan som valutasymbol, stöd för musiknamn Znamenny , och 37 emoji.

Arkitektur och terminologi

Unicode -standarden definierar ett kodutrymme, en uppsättning numeriska värden som sträcker sig från 0 till 10FFFF 16 , kallade kodpunkter och betecknas som U+0000 till U+10FFFF ("U+" plus kodpunktsvärdet i hexadecimala , förberedda med ledande nollor vid behov att resultera i minst fyra siffror, t ex U+00F7 för delningstecknet ÷ men U+13254 för den egyptiska hieroglyfen som Hiero O4.png anger ett vassskydd eller en slingrande vägg . Av dessa 2 16 +2 20 definierade kodpunkter, kodpunkterna från U + D800 genom U + DFFF, vilka används för att koda surrogatparen i UTF-16 , är reserverade genom Standard och kan inte användas för att koda för giltiga tecken, vilket resulterar i en netto totalt 2 16 - 2 11 + 2 20 = 1 112 064 möjliga kodpunkter som motsvarar giltiga Unicode -tecken. Alla dessa kodpunkter motsvarar inte nödvändigtvis synliga tecken; flera till exempel tilldelas kontrollkoder som vagnretur .

Kod plan och block

Unicode -kodutrymmet är uppdelat i sjutton plan , numrerade 0 till 16:

Alla kodpunkter i BMP nås som en enda kodenhet i UTF-16- kodning och kan kodas i en, två eller tre byte i UTF-8 . Kodpunkter i plan 1 till 16 ( kompletterande plan ) nås som surrogatpar i UTF-16 och kodas i fyra byte i UTF-8.

Inom varje plan tilldelas tecken inom namngivna block av relaterade tecken. Även om block är en godtycklig storlek, är de alltid en multipel av 16 kodpunkter och ofta en multipel av 128 kodpunkter. Tecken som krävs för ett visst skript kan spridas över flera olika block.

Allmän kategori egendom

Varje kodpunkt har en enda egenskap för allmän kategori . De stora kategorierna betecknas: Bokstav, Märke, Siffra, Skiljetecken, Symbol, Separator och Annat. Inom dessa kategorier finns det indelningar. I de flesta fall måste andra egenskaper användas för att tillräckligt specificera egenskaperna hos en kodpunkt. De möjliga allmänna kategorierna är:

Allmän kategori (Unicode Character Property )
Värde Kategori Major, minor Grundtyp Tecken tilldelat Antal
(från och med 14.0)
Anmärkningar
 
L, bokstav; LC, Cased Letter (endast Lu, Ll och Lt)
Lu Bokstav, versaler Grafisk Karaktär 1 831
Ll Bokstav, gemener Grafisk Karaktär 2 227
Lt Brev, titelfall Grafisk Karaktär 31 Ligaturer som innehåller versaler följt av gemener (t.ex. Dž , Lj , Nj och Dz )
Lm Brev, modifierare Grafisk Karaktär 334 Ett modifieringsbrev
Lo Brev, annat Grafisk Karaktär 127 333 En ideograf eller en bokstav i ett enkla alfabet
M, Mark
Mn Mark, utan avstånd Grafisk Karaktär 1 950
Mc Märke, mellanrum kombinerar Grafisk Karaktär 445
Mig Mark, bifogar Grafisk Karaktär 13
N, nummer
Nd Tal, decimal Grafisk Karaktär 660 Alla dessa, och bara dessa, har Numeric Type = De
Nl Nummer, bokstav Grafisk Karaktär 236 Siffror bestående av bokstäver eller bokstavsliknande symboler (t.ex. romerska siffror )
Nej Nummer, annat Grafisk Karaktär 895 Exempelvis vulgära fraktioner , superscript och subscript -siffror
P, skiljetecken
Pc Skiljetecken, kontakt Grafisk Karaktär 10 Inkluderar "_" understrykning
Pd Skiljetecken, streck Grafisk Karaktär 26 Innehåller flera bindestreck tecken
Ps Skiljetecken, öppen Grafisk Karaktär 79 Tecken som öppnar parentes
Pe Skiljetecken, nära Grafisk Karaktär 77 Avslutande parenteser
Pi Skiljetecken, inledande citat Grafisk Karaktär 12 Öppnande citattecken . Inkluderar inte ASCII "neutralt" citattecken. Kan bete sig som Ps eller Pe beroende på användning
Pf Skiljetecken, sista citatet Grafisk Karaktär 10 Stäng citattecken. Kan bete sig som Ps eller Pe beroende på användning
Po Skiljetecken, annat Grafisk Karaktär 605
S, symbol
Sm Symbol, matte Grafisk Karaktär 948 Matematiska symboler (t.ex. + , - , = , × , ÷ , , , ). Inkluderar inte parenteser och parenteser, som är i kategorierna Ps och Pe. Inkluderar inte heller ! , * , - , eller / som trots frekvent användning som matematiska operatorer i första hand anses vara "skiljetecken".
Sc Symbol, valuta Grafisk Karaktär 63 Valutasymboler
Sk Symbol, modifierare Grafisk Karaktär 125
Symbol, annat Grafisk Karaktär 6 605
Z, Separator
Zs Separator, utrymme Grafisk Karaktär 17 Inkluderar utrymmet, men inte TAB , CR eller LF , som är Cc
Zl Separator, rad Formatera Karaktär 1 Endast U+2028 LINE SEPARATOR (LSEP)
Z P Separator, stycke Formatera Karaktär 1 Endast U+2029 PARAGRAPH SEPARATOR (PSEP)
C, Annat
Cc Annat, kontroll Kontrollera Karaktär 65 (kommer aldrig att ändras) Inget namn, <kontroll>
Jfr Annat, format Formatera Karaktär 163 Inkluderar mjuka bindestreck , gå styrtecken ( zwnj och ZWJ till), styrtecken stödja dubbelriktad text , och språk tag tecken
Cs Övrigt, surrogat Surrogat Inte (används endast i UTF-16 ) 2048 (kommer aldrig att ändras) Inget namn, <surrogat>
Co Annan, privat bruk Privat användning Karaktär (men ingen tolkning specificerad) 137 468 totalt (kommer aldrig att ändras) ( 6400 i BMP , 131068 i plan 15–16 ) Inget namn, <private-use>
Cn Annat, inte tilldelat Icke -karaktär Inte 66 (kommer aldrig att ändras) Inget namn, <noncharacter>
Reserverad Inte 829 768 Inget namn, <förbehållet>

Kodpunkter i intervallet U+D800 – U+DBFF (1 024 kodpunkter) är kända som höga surrogatkodpunkter , och kodpunkter i intervallet U+DC00 – U+DFFF (1 024 kodpunkter) är kända som lågsurrogatkodpunkter kodpunkter. En hög surrogatkodpunkt följt av en låg surrogatkodpunkt bildar ett surrogatpar i UTF-16 för att representera kodpunkter som är större än U+FFFF. Dessa kodpunkter kan annars inte användas (denna regel ignoreras ofta i praktiken, särskilt när man inte använder UTF-16).

En liten uppsättning kodpunkter kommer garanterat aldrig att användas för kodning av tecken, även om applikationer kan använda dessa kodpunkter internt om de vill. Det finns sextiosex av dessa icke-tecken : U+FDD0 – U+FDEF och alla kodpunkter som slutar med värdet FFFE eller FFFF (dvs U+FFFE, U+FFFF, U+1FFFE, U+1FFFF, ... U +10FFFE, U+10FFFF). Uppsättningen av icke -tecken är stabil och inga nya icke -tecken kommer aldrig att definieras. Precis som surrogater ignoreras regeln att dessa inte kan användas, även om byteordermarkeringen fungerar förutsätter att U+FFFE aldrig kommer att vara den första kodpunkten i en text.

Exklusive surrogater och icke -karaktärer lämnar 1 111 998 kodpunkter tillgängliga för användning.

Kodpunkter för privat användning anses vara tilldelade tecken, men de har ingen tolkning som anges av Unicode-standarden, så varje utbyte av sådana tecken kräver ett avtal mellan avsändare och mottagare om deras tolkning. Det finns tre områden för privat användning i Unicode-kodutrymmet:

  • Privat användningsområde: U+E000 – U+F8FF (6400 tecken),
  • Kompletterande område för privat användning-A: U+F0000 – U+FFFFD (65 534 tecken),
  • Kompletterande privat användningsområde-B: U+100000 – U+10FFFD (65 534 tecken).

Grafiska tecken är tecken som definieras av Unicode för att ha särskild semantik och antingen har en synlig glyfform eller representerar ett synligt utrymme. Från Unicode 14.0 finns det 144 532 grafiska tecken.

Formattecken är tecken som inte har ett synligt utseende, men som kan påverka utseende eller beteende hos angränsande tecken. Till exempel kan U+200C ZERO WIDTH NON-JOINER och U+200D ZERO WIDTH JOINER användas för att ändra standardformningsbeteende för angränsande tecken (t.ex. för att hämma ligaturer eller begära ligaturbildning). Det finns 165 tecken i formatet i Unicode 14.0.

Sextiofem kodpunkter (U+0000 – U+001F och U+007F – U+009F) är reserverade som kontrollkoder och motsvarar C0- och C1-kontrollkoder som definieras i ISO/IEC 6429 . U+0009 (Tab), U+000A (Line Feed) och U+000D (Carriage Return) används ofta i Unicode-kodade texter. I praktiken översätts C1-kodpunkterna ofta felaktigt ( mojibake ) som de gamla Windows-1252- tecknen som används av vissa engelska och västeuropeiska texter.

Grafiska tecken, formateringstecken, kontrollkodstecken och tecken för privat bruk är gemensamt kända som tilldelade tecken . Reserverade kodpunkter är de kodpunkter som är tillgängliga för användning, men som ännu inte har tilldelats. Från Unicode 14.0 finns det 829 768 reserverade kodpunkter.

Abstrakta karaktärer

Uppsättningen med grafiska och formattecken som definieras av Unicode motsvarar inte direkt den repertoar av abstrakta tecken som kan representeras under Unicode. Unicode kodar tecken genom att associera ett abstrakt tecken med en viss kodpunkt. Alla abstrakta tecken är dock inte kodade som ett enda Unicode -tecken, och vissa abstrakta tecken kan representeras i Unicode med en sekvens av två eller flera tecken. Till exempel representeras en latinsk liten bokstav "i" med en ogonek , en punkt ovanför och en akut accent , som krävs på litauiska , med teckensekvensen U+012F, U+0307, ​​U+0301. Unicode har en lista med unikt namngivna teckensekvenser för abstrakta tecken som inte är direktkodade i Unicode.

Alla grafiska, format- och privata tecken har ett unikt och oföränderligt namn som de kan identifieras med. Denna oföränderlighet har garanterats sedan Unicode version 2.0 av namnstabilitetspolicyn. I fall där namnet är allvarligt defekt och vilseledande eller har ett allvarligt tryckfel kan ett formellt alias definieras och ansökningar uppmuntras att använda det formella aliaset istället för det officiella karaktärsnamnet. Till exempel, U + A015 YI STAVELSE WU har formell alias YI STAVELSE ITERATION MARK , och U + FE18 PRESENTATION FORM FÖR VERTIKAL HÖGER WHITE LINSFORMAD BRA KC ET ( sic ) har den formella alias PRESENTATION FORM FÖR VERTIKAL HÖGER WHITE LINSFORMAD BRA CK ET .

Färdiga kontra sammansatta tecken

Unicode innehåller en mekanism för att ändra tecken som kraftigt utökar den glyfrepertoar som stöds. Detta täcker användningen av att kombinera diakritiska märken som kan läggas till efter grundtecknet av användaren. Flera kombinerande diakritik kan appliceras samtidigt på samma karaktär. Unicode innehåller också förkomponerade versioner av de flesta bokstäver/diakritiska kombinationer vid normal användning. Dessa gör konvertering till och från äldre kodningar enklare och gör att applikationer kan använda Unicode som ett internt textformat utan att behöva implementera kombinationstecken. Till exempel kan é representeras i Unicode som U+ 0065 ( LATIN SMALL LETTER E ) följt av U+0301 ( COMBINING ACUTE ACCENT ), men det kan också representeras som det förkomponerade tecknet U+00E9 ( LATIN SMALL LETTER E WITH ACUTE ) . Således har användarna i många fall flera sätt att koda samma tecken. För att hantera detta tillhandahåller Unicode mekanismen för kanonisk ekvivalens .

Ett exempel på detta uppstår med Hangul , det koreanska alfabetet. Unicode tillhandahåller en mekanism för att komponera Hangul -stavelser med sina individuella delkomponenter, känd som Hangul Jamo . Det ger dock också 11 172 kombinationer av förkomponerade stavelser gjorda av den vanligaste jamon.

De Cjk närvarande koder bara för deras förkomponerat form. Ändå innehåller de flesta av dessa karaktärer enklare element (kallade radikaler ), så i princip kunde Unicode ha sönderdelat dem som med Hangul. Detta skulle ha avsevärt minskat antalet nödvändiga kodpunkter, samtidigt som man hade kunnat visa i stort sett alla tänkbara tecken (vilket kan avlägsna några av problemen som orsakas av Han -enande ). En liknande idé används av vissa inmatningsmetoder , som Cangjie och Wubi . Försök att göra detta för teckenkodning har dock snubblat över det faktum att kinesiska tecken inte sönderfaller så enkelt eller så regelbundet som Hangul gör.

En uppsättning radikaler tillhandahålls i Unicode 3.0 (CJK -radikaler mellan U+2E80 och U+2EFF, KangXi -radikaler i U+2F00 till U+2FDF och ideografiska beskrivningstecken från U+2FF0 till U+2FFB), men Unicode -standarden (kap. 12.2 i Unicode 5.2) varnar för att använda ideografiska beskrivningssekvenser som en alternativ representation för tidigare kodade tecken:

Denna process skiljer sig från en formell kodning av en ideograf. Det finns ingen kanonisk beskrivning av okodade ideografer; det finns ingen semantik tilldelad beskrivna ideografer; det finns ingen likvärdighet definierad för beskrivna ideografer. Begreppsmässigt är ideografiska beskrivningar mer besläktade med den engelska frasen "ett 'e' med en akut accent på det" än karaktärssekvensen <U+0065, U+0301>.

Ligaturer

Många skript, inklusive arabiska och Devanāgarī , har speciella ortografiska regler som kräver att vissa kombinationer av bokstavsformer kombineras till speciella ligaturformer . Reglerna för ligaturbildning kan vara ganska komplexa och kräver speciell skriptformande teknik som ACE (Arabic Calligraphic Engine by DecoType på 1980-talet och används för att generera alla arabiska exempel i de tryckta utgåvorna av Unicode Standard), vilket blev beviset koncept för OpenType (av Adobe och Microsoft), Graphite (av SIL International ) eller AAT (av Apple).

Instruktioner finns också inbäddade i teckensnitt för att berätta för operativsystemet hur man korrekt matar ut olika teckensekvenser. En enkel lösning på placeringen av kombinerade märken eller diakritiska är att tilldela märkena en bredd på noll och placera själva tecknet till vänster eller höger om det vänstra sidopaketet (beroende på riktningen på manuset de är avsedda att användas med). Ett märke som hanteras på detta sätt kommer att visas över vilket tecken som föregår det, men det justerar inte dess position i förhållande till bredden eller höjden på basglyfen; det kan vara visuellt besvärligt och det kan överlappa vissa glyfer. Verklig stapling är omöjlig, men kan approximeras i begränsade fall (till exempel kan thailändska toppkombinerande vokaler och tonmärken bara vara på olika höjder till att börja med). I allmänhet är detta tillvägagångssätt endast effektivt i teckensnitt med enstaka mellanrum, men kan användas som en återgivningsmetod när mer komplexa metoder misslyckas.

Standardiserade delmängder

Flera delmängder av Unicode är standardiserade: Microsoft Windows eftersom Windows NT 4.0 stöder WGL-4 med 657 tecken, vilket anses stödja alla samtida europeiska språk med latin, grekiska eller kyrilliska skript. Andra standardiserade delmängder av Unicode inkluderar de flerspråkiga europeiska delmängderna:

MES-1 (endast latinska skript, 335 tecken), MES-2 (latin, grekiska och kyrilliska 1062 tecken) och MES-3A & MES-3B (två större delmängder, visas inte här). Observera att MES-2 inkluderar alla tecken i MES-1 och WGL-4.

WGL-4 , MES-1 och MES-2
Rad Celler Område
00 20–7E Grundläggande latin (00–7F)
A0 – FF Latin-1-tillägg (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 IPA -tillägg (50 – AF)
BB – BD, C6, C7, C9, D6, D8 – DB, DC, DD, DF, EE Avståndsmodifieringsbokstäver (B0 – FF)
03 74–75, 7A, 7E, 84–8A, 8C, 8E – A1, A3 – CE, D7, DA – E1 Grekiska (70 – FF)
04 00–5F, 90–91, 92 – C4, C7 – C8, CB – CC, D0 – EB, EE – F5, F8 – F9 Kyrilliska (00 – FF)
1E 02–03, 0A – 0B, 1E – 1F, 40–41, 56–57, 60–61, 6A – 6B, 80–85, 9B, F2 – F3 Latin Extended Extra (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 Greek Extended (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 Allmän skiljetecken (00–6F)
7F , 82 Överskrifter och prenumerationer (70–9F)
A3 – A4, A7, AC, AF Valutasymboler (A0 – CF)
21 05, 13, 16, 22, 26, 2E Bokstavsliknande symboler (00–4F)
5B – 5E Siffer Forms (50-8F)
90–93, 94–95, A8 Pilar (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 Matematiska operatörer (00 – FF)
23 02, 0A, 20–21, 29–2A Diverse tekniska (00 – FF)
25 00, 02, 0C, 10, 14, 18, 1C, 24, 2C, 34, 3C, 50–6C Box Ritning (00-7F)
80, 84, 88, 8C, 90–93 Blockelement (80–9F)
A0 – A1, AA – AC, B2, BA, BC, C4, CA – CB, CF, D8 – D9, E6 Geometriska former (A0 – FF)
26 3A – 3C, 40, 42, 60, 63, 65–66, 6A, 6B Diverse symboler (00 – FF)
F0 (01–02) Privat användningsområde (00 – FF ...)
FB 01–02 Alfabetiska presentationsformulär (00–4F)
FF FD Specialerbjudanden

Återgivningsprogramvara som inte kan behandla ett Unicode -tecken på lämpligt sätt visar det ofta som en öppen rektangel, eller Unicode " ersättningstecken " (U+FFFD, ), för att ange positionen för det okända tecknet. Vissa system har gjort försök att ge mer information om sådana tecken. Apples Last Resort teckensnitt visar ett substitut tecknet anger Unicode utbud av karaktären och SIL International är Unicode Reserv teckensnitt kommer att visa en ruta som visar hexadecimal skalära värdet av tecknet.

Kartläggning och kodningar

Flera mekanismer har specificerats för att lagra en serie kodpunkter som en serie byte.

Unicode definierar två mappningsmetoder: Unicode Transformation Format (UTF) -kodningarna och Universal Coded Character Set (UCS) -kodningarna. En kodning kartlägger (möjligen en delmängd av) intervallet för Unicode- kod pekar på sekvenser av värden i vissa intervall med fast storlek, benämnda kodenheter . Alla UTF -kodningar kartkod pekar på en unik sekvens av byte. Siffrorna i namnen på kodningarna anger antalet bitar per kodenhet (för UTF-kodningar) eller antalet byte per kodenhet (för UCS-kodningar och UTF-1 ). UTF-8 och UTF-16 är de vanligaste kodningarna. UCS-2 är en föråldrad delmängd av UTF-16; UCS-4 och UTF-32 är funktionellt ekvivalenta.

UTF -kodningar inkluderar:

  • UTF-8 , använder en till fyra byte för varje kodpunkt, maximerar kompatibiliteten med ASCII
  • UTF-EBCDIC , liknande UTF-8 men utformad för kompatibilitet med EBCDIC (ingår inte i Unicode Standard )
  • UTF-16 , använder en eller två 16-bitars kodenheter per kodpunkt, kan inte koda surrogater
  • UTF-32 , använder en 32-bitars kodenhet per kodpunkt

UTF-8 använder en till fyra byte per kodpunkt och är kompakt för latinska skript och ASCII-kompatibla och erbjuder de facto standardkodning för utbyte av Unicode-text. Det används av FreeBSD och de senaste Linux -distributionerna som en direkt ersättning för äldre kodningar i allmän texthantering.

UCS-2 och UTF-16-kodningarna specificerar Unicode Byte Order Mark (BOM) för användning i början av textfiler, som kan användas för detektering av byte (eller byte endianness detection). BOM, kodpunkt U+FEFF, har den viktiga egenskapen otvetydighet vid byteordning, oavsett vilken Unicode -kodning som används; U+FFFE (resultatet av byte-byte U+FEFF) motsvarar inte ett juridiskt tecken, och U+FEFF på andra platser än början av texten förmedlar det nollbredda non-break-utrymmet (ett tecken utan utseende och ingen annan effekt än att förhindra bildning av ligaturer ).

Samma tecken som konverteras till UTF-8 blir bytesekvensen EF BB BF. Unicode-standarden gör att BOM "kan fungera som signatur för UTF-8-kodad text där teckenuppsättningen är avmarkerad". Vissa programutvecklare har antagit det för andra kodningar, inklusive UTF-8, i ett försök att skilja UTF-8 från lokala 8-bitars kodsidor . Emellertid RFC  3629 , standard UTF-8, rekommenderar att byte order mark förbjudas i protokoll med användning av UTF-8, men diskuteras de fall där detta kanske inte möjligt. Dessutom innebär den stora begränsningen för möjliga mönster i UTF-8 (till exempel kan det inte finnas några ensamma byte med den höga bituppsättningen) att det ska vara möjligt att skilja UTF-8 från andra teckenkodningar utan att förlita sig på BOM.

I UTF-32 och UCS-4 fungerar en 32-bitars kodenhet som en ganska direkt representation av vilken karaktärs kodpunkt som helst (även om slutligheten, som varierar mellan olika plattformar, påverkar hur kodenheten manifesteras som en bytesekvens). I de andra kodningarna kan varje kodpunkt representeras av ett variabelt antal kodenheter. UTF-32 används i stor utsträckning som en intern representation av text i program (i motsats till lagrad eller överförd text), eftersom varje Unix-operativsystem som använder gcc- kompilatorer för att generera programvara använder det som standardkodning med " bred karaktär ". Vissa programmeringsspråk, till exempel Seed7 , använder UTF-32 som intern representation för strängar och tecken. De senaste versionerna av Python- programmeringsspråket (som börjar med 2.2) kan också konfigureras för att använda UTF-32 som representation för Unicode-strängar, vilket effektivt sprider sådan kodning i kodad programvara på hög nivå .

Punycode , en annan kodningsform, möjliggör kodning av Unicode -strängar i den begränsade teckenuppsättning som stöds av det ASCII -baserade Domain Name System (DNS). Kodningen används som en del av IDNA , som är ett system som möjliggör användning av internationaliserade domännamn i alla skript som stöds av Unicode. Tidigare och nu historiska förslag inkluderar UTF-5 och UTF-6 .

GB18030 är en annan kodningsform för Unicode, från Standardization Administration of China . Det är den officiella karaktärsuppsättningen för Folkrepubliken Kina (Kina). BOCU-1 och SCSU är Unicode-komprimeringsscheman. Den första april RFC 2005 anges två parodi UTF kodningar, UTF-9 och UTF-18 .

Adoption

Operativsystem

Unicode har blivit det dominerande systemet för intern behandling och lagring av text. Även om mycket text fortfarande lagras i äldre kodningar, används Unicode nästan uteslutande för att bygga nya informationsbehandlingssystem. Tidiga adopters brukade använda UCS-2 (tvåbytes föregångare till fast bredd till UTF-16) och flyttade senare till UTF-16 (den nuvarande standarden med variabel bredd), eftersom detta var det minst störande sättet att lägga till stöd för -BMP -tecken. Det mest kända systemet är Windows NT (och dess ättlingar, Windows 2000 , Windows XP , Windows Vista , Windows 7 , Windows 8 och Windows 10 ), som använder UTF-16 som enda interna teckenkodning. Den Java och .NET bytekod miljöer MacOS och KDE även använda den för intern representation. Delvis stöd för Unicode kan installeras på Windows 9x via Microsoft Layer for Unicode .

UTF-8 (ursprungligen utvecklad för Plan 9 ) har blivit huvudlagringskodningen för de flesta Unix-liknande operativsystem (även om andra också används av vissa bibliotek) eftersom det är en relativt enkel ersättning för traditionella utökade ASCII- teckenuppsättningar. UTF-8 är också den vanligaste Unicode-kodningen som används i HTML- dokument på World Wide Web .

Flerspråkiga textåtergivningsmotorer som använder Unicode inkluderar Uniscribe och DirectWrite för Microsoft Windows, ATSUI och Core Text för macOS och Pango för GTK+ och GNOME- skrivbordet.

Inmatningsmetoder

Eftersom tangentbordslayouter inte kan ha enkla tangentkombinationer för alla tecken, erbjuder flera operativsystem alternativa inmatningsmetoder som ger tillgång till hela repertoaren.

ISO/IEC 14755 , som standardiserar metoder för att ange Unicode -tecken från sina kodpunkter, specificerar flera metoder. Det finns den grundläggande metoden , där en inledande sekvens följs av den hexadecimala representationen av kodpunkten och slutsekvensen . Det finns också en inmatningsmetod för skärmval, där tecknen anges i en tabell på en skärm, till exempel med ett teckenkartprogram.

Onlineverktyg för att hitta kodpunkten för en känd karaktär inkluderar Unicode Lookup av Jonathan Hedley och Shapecatcher av Benjamin Milde. I Unicode Lookup anger man en söknyckel (t.ex. "fraktioner"), och en lista över motsvarande tecken med deras kodpunkter returneras. I Shapecatcher, baserat på Shape -kontext , ritar man tecknet i en ruta och en lista med tecken som närmar sig ritningen, med deras kodpunkter, returneras.

E-post

MIME definierar två olika mekanismer för kodning av icke-ASCII-tecken i e-post , beroende på om tecknen finns i e-postrubriker (t.ex. "Ämne:") eller i meddelandets texttext; i båda fallen identifieras den ursprungliga teckenuppsättningen samt en överföringskodning. För e-postöverföring av Unicode rekommenderas UTF-8- teckenuppsättningen och Base64 eller överföringskodningen som kan skrivas ut , beroende på om mycket av meddelandet består av ASCII- tecken. Detaljerna för de två olika mekanismerna anges i MIME -standarderna och är i allmänhet dolda för användare av e -postprogram.

Antagandet av Unicode i e -post har gått mycket långsamt. En del östasiatisk text är fortfarande kodad i kodningar som ISO-2022 , och vissa enheter, till exempel mobiltelefoner, kan fortfarande inte hantera Unicode-data korrekt. Stödet har dock förbättrats. Många stora gratis e -postleverantörer som Yahoo , Google ( Gmail ) och Microsoft ( Outlook.com ) stöder det.

webb

Alla W3C -rekommendationer har använt Unicode som dokumentteckenuppsättning sedan HTML 4.0. Webbläsare har stött Unicode, särskilt UTF-8, i många år. Det brukade finnas visningsproblem som främst berodde på teckensnittsrelaterade problem; t.ex. v 6 och äldre av Microsoft Internet Explorer gav inte många kodpunkter om det inte uttryckligen uppmanades att använda ett teckensnitt som innehåller dem.

Även om syntaxregler kan påverka ordningen i vilken tecken får visas, innehåller XML -dokument (inklusive XHTML ) per definition tecken från de flesta Unicode -kodpunkter, med undantag av:

  • de flesta av C0 -kontrollkoderna ,
  • de permanent otilldelade kodpunkterna D800 – DFFF,
  • FFFE eller FFFF.

HTML -tecken manifesteras antingen direkt som byte enligt dokumentets kodning, om kodningen stöder dem, eller så kan användarna skriva dem som numeriska teckenreferenser baserat på karaktärens Unicode -kodpunkt. Exempelvis referenserna &#916;, &#1049;, &#1511;, &#1605;, &#3671;, &#12354;, &#21494;, &#33865;, och &#47568;(eller samma numeriska värden uttryckta i hexadecimal, med &#xsom prefix) bör visa på alla webbläsare som Δ, Й, ק, م, 7,あ,叶,葉och 말.

När du anger URI , till exempel som webbadresser i HTTP- begäranden, måste icke-ASCII-tecken vara procentkodade .

Teckensnitt

Unicode handlar i princip inte om typsnitt i sig , utan ser dem som implementeringsalternativ. Varje given karaktär kan ha många allografer , från de mer vanliga fet-, kursiv- och grundbokstäverna till komplexa dekorativa stilar. Ett teckensnitt är "Unicode -kompatibelt" om teckensnittet i teckensnittet kan nås med kodpunkter som definieras i Unicode -standarden. Standarden anger inte ett minsta antal tecken som måste ingå i teckensnittet. vissa typsnitt har en ganska liten repertoar.

Gratis teckensnitt och detaljhandel baserade på Unicode är allmänt tillgängliga, eftersom TrueType och OpenType stöder Unicode. Dessa teckensnittsformat mappar Unicode -kod pekar på glyfer, men TrueType -teckensnitt är begränsat till 65 535 glyfer.

Det finns tusentals teckensnitt på marknaden, men färre än ett dussin teckensnitt-ibland beskrivna som "pan-Unicode" -teckensnitt-försöker stödja majoriteten av Unicodes karaktärsrepertoar. I stället fokuserar Unicode-baserade teckensnitt vanligtvis på att stödja endast grundläggande ASCII och särskilda skript eller uppsättningar av tecken eller symboler. Flera skäl motiverar detta tillvägagångssätt: applikationer och dokument behöver sällan återge tecken från mer än ett eller två skrivsystem; teckensnitt tenderar att kräva resurser i datormiljöer; och operativsystem och applikationer visar ökad intelligens när det gäller att erhålla glyfinformation från separata teckensnittsfiler efter behov, dvs typsnittsersättning . Att utforma en konsekvent uppsättning återgivningsinstruktioner för tiotusentals glyfer utgör dessutom en monumental uppgift; en sådan satsning klarar av att minska avkastningen för de flesta typsnitt.

Nyheter

Unicode tar delvis upp det nya radproblemet som uppstår när man försöker läsa en textfil på olika plattformar. Unicode definierar ett stort antal tecken som överensstämmande applikationer bör känna igen som linjeterminerare.

När det gäller den nya linjen introducerade Unicode U+2028 LINE SEPARATOR och U+2029 PARAGRAPH SEPARATOR . Detta var ett försök att tillhandahålla en Unicode -lösning för kodning av stycken och rader semantiskt, vilket eventuellt kan ersätta alla de olika plattformslösningarna. Genom att göra det ger Unicode en väg runt de historiska plattformsberoende lösningarna. Ändå är det få om några Unicode -lösningar som har använt dessa Unicode -rad- och styckseparatorer som de enda kanoniska radavslutningstecknen. Ett vanligt tillvägagångssätt för att lösa detta problem är dock genom normalisering av nya linjer. Detta uppnås med textsystemet Cocoa i Mac OS X och även med W3C XML- och HTML -rekommendationer. I detta tillvägagångssätt omvandlas alla möjliga nyradstecken internt till en gemensam nyrad (vilket man egentligen inte spelar någon roll eftersom det är en intern operation bara för återgivning). Med andra ord kan textsystemet korrekt behandla tecknet som en ny rad, oavsett ingångens faktiska kodning.

Frågor

Filosofisk och fullständig kritik

Han -enande (identifiering av former på de östasiatiska språken som man kan behandla som stilistiska variationer av samma historiska karaktär) har blivit en av de mest kontroversiella aspekterna av Unicode, trots närvaron av en majoritet av experter från alla tre regionerna i Ideographic Research Group (IRG), som ger konsortiet och ISO råd om tillägg till repertoaren och om Han -förening.

Unicode har kritiserats för att inte kunna koda äldre och alternativa former av kanji separat , vilket enligt kritiker försvårar bearbetningen av gamla japanska och ovanliga japanska namn. Detta beror ofta på att Unicode kodar tecken snarare än glyfer (de visuella representationerna av grundtecknet som ofta varierar från ett språk till ett annat). Förening av glyfer leder till uppfattningen att språken själva, inte bara den grundläggande karaktärsrepresentationen, slås samman. Det har gjorts flera försök att skapa alternativa kodningar som bevarar de stilistiska skillnaderna mellan kinesiska, japanska och koreanska karaktärer i motsats till Unicodes policy för Han -förening. Ett exempel på ett är TRON (även om det inte är allmänt använt i Japan, finns det några användare som behöver hantera historisk japansk text och gynna det).

Även om repertoaren med färre än 21 000 Han -karaktärer i den tidigaste versionen av Unicode till stor del var begränsad till karaktärer i vanlig modern användning, innehåller Unicode nu mer än 92 000 Han -tecken, och arbetet fortsätter att lägga till tusentals fler historiska och dialektala karaktärer som används i Kina, Japan, Korea, Taiwan och Vietnam.

Modern teckensnittsteknik ger ett sätt att ta itu med den praktiska frågan om att behöva skildra en enhetlig Han -karaktär när det gäller en samling alternativa glyfrepresentationer, i form av Unicode -variationssekvenser . Exempelvis tillåter de avancerade typografiska tabellerna i OpenType en av ett antal alternativa teckenföreställningar att välja när karaktärprocessen för tecken till tecken för mappning utförs. I detta fall kan information tillhandahållas i vanlig text för att ange vilken alternativ teckenform som ska väljas.

Olika kyrilliska tecken visas med och utan kursiv

Om skillnaden i de lämpliga glyferna för två tecken i samma skript endast skiljer sig med kursiv, har Unicode generellt förenat dem, vilket kan ses i jämförelsen mellan ryska (märkta standard) och serbiska tecken till höger, vilket betyder att skillnaderna är visas med smart teckensnittsteknik eller manuellt ändra teckensnitt.

Kartläggning till äldre teckenuppsättningar

Unicode har utformats för att tillhandahålla kod-för-kod-punkt -rundtur-format-konvertering till och från alla befintliga teckenkodningar, så att textfiler i äldre teckenuppsättningar kan konverteras till Unicode och sedan tillbaka och få tillbaka samma fil, utan att använda kontextberoende tolkning. Det har inneburit att inkonsekventa äldre arkitekturer, som att kombinera diakritik och förkomponerade karaktärer , båda finns i Unicode, vilket ger mer än en metod för att representera viss text. Detta är mest uttalat i de tre olika kodningsformerna för koreanska Hangul . Sedan version 3.0 kan alla förkomponerade tecken som kan representeras av en kombinerande sekvens av redan befintliga tecken inte längre läggas till standarden för att bevara interoperabilitet mellan programvara med olika versioner av Unicode.

Injektiva mappningar måste tillhandahållas mellan tecken i befintliga äldre teckenuppsättningar och tecken i Unicode för att underlätta konvertering till Unicode och möjliggöra interoperabilitet med äldre programvara. Brist på konsekvens i olika mappningar mellan tidigare japanska kodningar såsom skift-JIS eller EUC-JP och Unicode ledde till tur och retur-format konverterings felpamingar, särskilt kartläggningen av tecknet JIS X 0208 '~' (1-33, WAVE DASH) , som används mycket i äldre databasdata, till antingen U+FF5E FULLWIDTH TILDE (i Microsoft Windows ) eller U+301C WAVE DASH (andra leverantörer).

Vissa japanska datorprogrammerare motsatte sig Unicode eftersom det kräver att de separerar användningen av U+005C \ REVERSE SOLIDUS (backslash) och U+00A5 ¥ YEN SIGN , som har mappats till 0x5C i JIS X 0201, och det finns mycket äldre kod med denna användning. (Denna kodning ersätter också tilde '~' 0x7E med macron '¯', nu 0xAF.) Separationen av dessa tecken finns i ISO 8859-1 , från långt före Unicode.

Indikerar skript

Indiska skript som tamil och Devanagari tilldelas var och en endast 128 kodpunkter som matchar ISCII -standarden. Den korrekta återgivningen av Unicode Indic -text kräver att de lagrade logiska ordningstecknen omvandlas till visuell ordning och bildning av ligaturer (aka konjunkter) ur komponenter. Vissa lokala forskare argumenterade för tilldelning av Unicode -kodpekar till dessa ligaturer, vilket strider mot praxis för andra skrivsystem, även om Unicode innehåller några arabiska och andra ligaturer endast för bakåtkompatibilitet. Kodning av alla nya ligaturer i Unicode kommer inte att ske, delvis eftersom uppsättningen ligaturer är typsnittsberoende och Unicode är en kodning oberoende av typsnittsvariationer. Samma typ av problem uppstod för det tibetanska manuset 2003 när Standardization Administration of China föreslog kodning av 956 förkomponerade tibetanska stavelser, men dessa avvisades för kodning av den relevanta ISO -kommittén ( ISO/IEC JTC 1/SC 2 ).

Thailändskt alfabetstöd har kritiserats för sin beställning av thailändska tecken. Vokalerna เ, แ, โ, ใ, ไ som är skrivna till vänster om föregående konsonant är i visuell ordning i stället för fonetisk ordning, till skillnad från Unicode -representationerna för andra Indic -skript. Denna komplikation beror på att Unicode ärvt Thai Industrial Standard 620 , som fungerade på samma sätt, och var det sätt som thailändska alltid hade skrivits på tangentbord. Detta beställningsproblem komplicerar Unicode -sorteringsprocessen något, vilket kräver att tabelluppslagning ordnar om thailändska tecken för sortering. Även om Unicode hade antagit kodning enligt talad ordning skulle det fortfarande vara problematiskt att sortera ord i ordlistor. Exempelvis ordet แสดง [sa dɛːŋ] "perform" börjar med ett konsonantkluster "สด" (med en inneboende vokal för konsonanten "ส"), vokalen แ-, i talad ordning skulle komma efter ด, men i en ordbok är ordet sorteras som det är skrivet, med vokalen efter ส.

Kombinera karaktärer

Tecken med diakritiska tecken kan i allmänhet representeras antingen som ett enda förkomponerat tecken eller som en sönderdelad sekvens av en grundbokstav plus ett eller flera icke-avståndsmärken. Till exempel, E (förkomponerat e med macron och akut ovan) och E (e följt av kombinering macron ovan och kombinering akut ovan) skall visas identiskt, både som uppträder som ett e med en macron och akut accent , men i praktiken, deras utseende kan variera beroende på vilken återgivningsmotor och teckensnitt som används för att visa tecknen. På samma sätt kommer underdots , som behövs vid romaniseringen av Indic , ofta att placeras felaktigt. Unicode -tecken som mappar till förkomponerade glyfer kan användas i många fall och därmed undvika problemet, men där ingen förkomponerad karaktär har kodats kan problemet ofta lösas genom att använda ett specialiserat Unicode -teckensnitt som Charis SIL som använder Graphite- , OpenType- eller AAT -teknik för avancerade återgivningsfunktioner.

Anomalier

Unicode -standarden har infört regler avsedda att garantera stabilitet. Beroende på strängheten i en regel kan en ändring vara förbjuden eller tillåten. Till exempel kan och kommer inte ett "namn" som ges till en kodpunkt att ändras. Men en "script" -egenskap är mer flexibel, enligt Unicodes egna regler. I version 2.0 ändrade Unicode många kodpunktsnamn från version 1. Samtidigt uppgav Unicode att från och med nu skulle ett tilldelat namn till en kodpunkt aldrig ändras längre. Detta innebär att när misstag publiceras kan dessa misstag inte korrigeras, även om de är triviala (som det hände i ett fall med stavningen BRAKCET för BRACKET i ett teckennamn ). År 2006 publicerades först en lista över avvikelser i karaktärsnamn, och i juni 2021 fanns det 104 tecken med identifierade problem, till exempel:

  • U+2118 SCRIPT CAPITAL P : Detta är en liten bokstav. Huvudstaden är U + 1D4AB 𝒫 MATEMATISK SCRIPT CAPITAL P .
  • U+034F ͏ KOMBINERANDE GRAPHEME JOINER : Går inte med grafem.
  • U+A015 YI SYLLABLE WU : Detta är inte en Yi -stavelse, utan ett Yi -iterationsmärke.
  • U+FE18 PRESENTATIONSFORM FÖR VERTIKAL HÖGER VIT LENTIKULÄR BRAKET : fästet stavas fel.

Stavfel löses med Unicode -aliasnamn och förkortningar .

Se även

Anteckningar

Referenser

Vidare läsning

  • Unicode Standard, version 3.0 , Unicode Consortium, Addison-Wesley Longman, Inc., april 2000. ISBN  0-201-61633-5
  • Unicode Standard, version 4.0 , Unicode Consortium, Addison-Wesley Professional, 27 augusti 2003. ISBN  0-321-18578-1
  • Unicode Standard, version 5.0, femte upplagan , Unicode Consortium , Addison-Wesley Professional, 27 oktober 2006. ISBN  0-321-48091-0
  • Julie D. Allen. Unicode Standard, version 6.0 , Unicode Consortium , Mountain View, 2011, ISBN  9781936213016 , ( [1] ).
  • The Complete Manual of Typography , James Felici, Adobe Press; 1: a upplagan, 2002. ISBN  0-321-12730-7
  • Unicode: A Primer , Tony Graham, M&T books, 2000. ISBN  0-7645-4625-2 .
  • Unicode Demystified: A Practical Programmerer's Guide to the Encoding Standard , Richard Gillam, Addison-Wesley Professional; 1: a upplagan, 2002. ISBN  0-201-70052-2
  • Unicode förklaras , Jukka K. Korpela, O'Reilly; 1: a upplagan, 2006. ISBN  0-596-10121-X

externa länkar