Monday, February 11, 2019

Textual description of firstImageUrl

Unicode - Wikipedia


Zeichencodierungsstandard



Unicode ist ein Industriestandard für die Datenverarbeitung, der die konsistente Codierung, Darstellung und Handhabung von Text berücksichtigt, der in den meisten Schreibsystemen der Welt zum Ausdruck kommt. Der Standard wird vom Unicode-Konsortium beibehalten. Ab Juni 2018 enthält die neueste Version Unicode 11.0 ein Repertoire von 137.439 Zeichen, das 146 moderne und historische Schriften sowie mehrere Symbolsätze umfasst und Emoji. Das Zeichenrepertoire des Unicode-Standards ist mit ISO / IEC 10646 synchronisiert, und beide sind Code-für-Code-identisch.

Der Unicode-Standard besteht aus einer Reihe von Codediagrammen für die visuelle Referenz, einer Kodierungsmethode und einer Reihe von Standardzeichenkodierungen, einer Reihe von Referenzdatendateien und einer Reihe verwandter Elemente, z zur Normalisierung, Zerlegung, Sortierung, Wiedergabe und bidirektionalen Anzeigereihenfolge (für die korrekte Anzeige von Text, der sowohl Skripts von rechts nach links wie Arabisch und Hebräisch als auch von links nach rechts enthält). [1]

Erfolg von Unicode bei Die Vereinheitlichung von Zeichensätzen hat zu einer weit verbreiteten und vorherrschenden Verwendung bei der Internationalisierung und Lokalisierung von Computersoftware geführt. Der Standard wurde in vielen neuen Technologien implementiert, darunter moderne Betriebssysteme, XML, Java (und andere Programmiersprachen) und .NET Framework.

Unicode kann durch verschiedene Zeichencodierungen implementiert werden. Der Unicode-Standard definiert UTF-8, UTF-16 und UTF-32, und es werden mehrere andere Kodierungen verwendet. Die am häufigsten verwendeten Kodierungen sind UTF-8, UTF-16 und UCS-2, ein Vorläufer von UTF-16.

UTF-8, die dominante Codierung im World Wide Web (in über 92% der Websites verwendet), [2] verwendet ein Byte für die ersten 128 Codepunkte und bis zu 4 Byte für andere Zeichen. [3] Die ersten 128 Unicode-Codepunkte sind die ASCII-Zeichen. Dies bedeutet, dass jeder ASCII-Text auch ein UTF-8-Text ist.

UCS-2 verwendet zwei Bytes (16 Bit) für jedes Zeichen, kann jedoch nur die ersten 65.536 Codepunkte, die sogenannte Basic Multilingual Plane (BMP), kodieren. Mit 1.114.112 Codepunkten auf 17 Ebenen und mit über 137.000 definierten Codepunkten kann UCS-2 nur weniger als die Hälfte aller codierten Unicode-Zeichen darstellen. Daher ist UCS-2 veraltet, obwohl es in Software noch weit verbreitet ist. UTF-16 erweitert UCS-2 um dieselbe 16-Bit-Kodierung wie UCS-2 für die mehrsprachige Basisebene und eine 4-Byte-Kodierung für die anderen Ebenen. Solange er keine Code-Punkte im reservierten Bereich U + D800 – U + DFFF enthält, ist ein UCS-2-Text ein gültiger UTF-16-Text.

UTF-32 (auch als UCS-4 bezeichnet) verwendet vier Bytes für jedes Zeichen. Wie beim UCS-2 ist die Anzahl der Bytes pro Zeichen festgelegt, wodurch die Indexierung von Zeichen erleichtert wird. Im Gegensatz zu UCS-2 kann UTF-32 jedoch alle Unicode-Codepunkte kodieren. Da jedes Zeichen vier Bytes benötigt, benötigt UTF-32 jedoch deutlich mehr Speicherplatz als andere Kodierungen und wird nicht häufig verwendet.




Ursprung und Entwicklung [ edit ]


Unicode hat das explizite Ziel, die Einschränkungen herkömmlicher Zeichencodierungen, wie sie im ISO 8859-Standard definiert sind, zu überwinden verschiedenen Ländern der Welt sind jedoch weitgehend unvereinbar. Viele traditionelle Zeichenkodierungen haben ein gemeinsames Problem, da sie die zweisprachige Computerverarbeitung (normalerweise unter Verwendung von lateinischen Zeichen und das lokale Skript) ermöglichen, nicht jedoch die mehrsprachige Computerverarbeitung (Computerverarbeitung beliebiger miteinander vermischter Skripts).

Unicode codiert absichtlich die zugrunde liegenden Zeichen - Grapheme und Graphem-ähnliche Einheiten - und nicht die variablen Glyphen (Renderings) für solche Zeichen. Bei chinesischen Schriftzeichen führt dies manchmal zu Kontroversen darüber, ob der zugrunde liegende Buchstabe von seinen abweichenden Glyphen unterschieden wird (siehe Han-Vereinigung).

In der Textverarbeitung übernimmt Unicode die Aufgabe, einen eindeutigen Codepunkt - eine Zahl, keine Glyphe - für jedes Zeichen bereitzustellen. Mit anderen Worten, Unicode stellt ein Zeichen auf abstrakte Weise dar und überlässt das visuelle Rendern (Größe, Form, Schriftart oder Stil) einer anderen Software, beispielsweise einem Webbrowser oder einer Textverarbeitung. Dieses einfache Ziel wird jedoch aufgrund von Zugeständnissen der Designer von Unicode in der Hoffnung, eine schnellere Einführung von Unicode zu fördern, kompliziert.

Die ersten 256 Codepunkte wurden mit dem Inhalt von ISO-8859-1 identisch gemacht, um die Konvertierung vorhandener westlicher Texte zu vereinfachen. Viele im Wesentlichen identische Zeichen wurden mehrmals an verschiedenen Codepunkten codiert, um die Unterscheidungsmerkmale älterer Codierungen zu erhalten und die Konvertierung von diesen Codierungen in Unicode (und zurück) zu ermöglichen, ohne dass dabei Informationen verloren gehen. Beispielsweise umfasst der Abschnitt "Formulare mit voller Breite" von Codepunkten ein vollständiges lateinisches Alphabet, das vom Hauptabschnitt des lateinischen Alphabets getrennt ist, da diese lateinischen Zeichen in chinesischen, japanischen und koreanischen (CJK) Schriften mit der gleichen Breite wie CJK gerendert werden Zeichen, statt auf halber Breite. Weitere Beispiele finden Sie unter doppelte Zeichen in Unicode.


Geschichte [ edit ]


Basierend auf Erfahrungen mit dem Xerox Character Code Standard (XCCS) seit 1980 [4] stammen die Anfänge von Unicode bis 1987, als Joe Becker von Xerox Mit Lee Collins und Mark Davis von Apple begann die Untersuchung der praktischen Möglichkeiten der Erstellung eines universellen Zeichensatzes. [5] Mit zusätzlichen Eingaben von Peter Fenwick und Dave Opstad [4] veröffentlichte Joe Becker einen Entwurf für einen "internationalen / mehrsprachigen Textcharakter" Kodierungssystem im August 1988, vorläufig als Unicode bezeichnet. Er erklärte, dass "


Unicode soll der Notwendigkeit einer funktionsfähigen, zuverlässigen Textcodierung in der Welt Rechnung tragen. Unicode kann grob als "Wide-Body-ASCII" beschrieben werden, das auf 16 Bit ausgedehnt wurde, um die Zeichen aller lebenden Sprachen der Welt zu erfassen. In einem technisch ausgereiften Design sind 16 Bits pro Zeichen für diesen Zweck mehr als ausreichend.



Sein ursprüngliches 16-Bit-Design basierte auf der Annahme, dass nur die modernen Skripte und Zeichen codiert werden müssten: [4]



Unicode räumt der Sicherung des Nutzens für die Zukunft eine höhere Priorität ein als der Bewahrung der vergangenen Antiquitäten. Unicode zielt in erster Linie auf die in modernen Texten veröffentlichten Zeichen (z. B. in der Vereinigung aller 1988 in der Welt gedruckten Zeitungen und Zeitschriften), deren Zahl zweifellos weit unter 2 14 = 16.384 liegt. Über diese modernen Charaktere hinaus können alle anderen als veraltet oder selten definiert werden. Dies sind bessere Kandidaten für die private Registrierung als für die Überlastung der öffentlichen Liste allgemein nützlicher Unicodes.



Anfang 1989 erweiterte sich die Unicode-Arbeitsgruppe um Ken Whistler und Mike Kernaghan von Metaphor, Karen Smith-Yoshimura und Joan Aliprand von RLG sowie Glenn Wright von Sun Microsystems und 1990 um Michel Suignard und Asmus Freytag von Microsoft und Rick McGowan von NeXT trat der Gruppe bei. Bis Ende 1990 waren die meisten Arbeiten zur Abbildung vorhandener Zeichencodierungsstandards abgeschlossen, und ein endgültiger Entwurf für eine Überprüfung von Unicode war fertig.

Das Unicode-Konsortium wurde am 3. Januar 1991 in Kalifornien gegründet, [6] und im Oktober 1991 wurde der erste Band des Unicode-Standards veröffentlicht. Der zweite Band über Han-Ideographen wurde im Juni 1992 veröffentlicht.

1996 wurde in Unicode 2.0 ein Ersatzzeichenmechanismus implementiert, so dass Unicode nicht mehr auf 16 Bit beschränkt war. Dies erhöhte den Unicode-Codebereich auf über eine Million Codepunkte, was die Codierung vieler historischer Skripte (z. B. ägyptischer Hieroglyphen) und Tausende von selten verwendeten oder veralteten Zeichen ermöglichte, von denen nicht erwartet wurde, dass sie eine Codierung erfordern. Zu den Zeichen, die ursprünglich nicht für Unicode vorgesehen waren, gehören selten Kanji-Zeichen oder chinesische Schriftzeichen, von denen viele zu Personen- und Ortsnamen gehören, weshalb sie selten verwendet werden, jedoch wesentlich wichtiger sind als in der ursprünglichen Architektur von Unicode vorgesehen. [19459442

Die Microsoft TrueType-Spezifikation Version 1.0 von 1992 verwendete den Namen Apple Unicode anstelle von Unicode für die Plattform-ID in der Namenstabelle.


Architektur und Terminologie [ edit ]



Unicode definiert einen Codebereich von 1.114.112 Codepunkten im Bereich von 0 hex bis 10FFFF hex . [8] Normalerweise wird ein Unicode-Codepunkt durch Schreiben von "U +" gefolgt von seiner hexadezimalen Zahl bezeichnet . Für Codepunkte in der Basic Multilingual Plane (BMP) werden vier Ziffern verwendet (z. B. U + 0058 für das Zeichen LATIN CAPITAL LETTER X); für Codepunkte außerhalb des BMP werden nach Bedarf fünf oder sechs Ziffern verwendet (z. B. U + E0001 für das Zeichen LANGUAGE TAG und U + 10FFFD für das Zeichen PRIVATE USE CHARACTER-10FFFD). [9]


Codepunktebenen und Blöcke [19659013] [ edit ]



Der Unicode-Codespace ist in siebzehn Flugzeuge unterteilt, die von 0 bis 16 nummeriert sind:


Auf alle Codepunkte im BMP wird in UTF-16-Codierung als eine einzige Codeeinheit zugegriffen und sie können in einem, zwei oder drei Bytes in UTF-8 codiert werden. Codepunkte in den Ebenen 1 bis 16 ( ergänzende Ebenen ) werden als Ersatzpaare in UTF-16 aufgerufen und in vier Bytes in UTF-8 codiert.

Innerhalb jeder Ebene werden Zeichen in benannten Blöcken von verwandten Zeichen zugeordnet. Obwohl Blöcke eine beliebige Größe haben, sind sie immer ein Vielfaches von 16 Codepunkten und oft ein Vielfaches von 128 Codepunkten. Zeichen, die für ein bestimmtes Skript erforderlich sind, können auf mehrere Blöcke verteilt sein.


General Category-Eigenschaft [ edit ]


Jeder Codepunkt weist eine einzige General Category-Eigenschaft auf. Die Hauptkategorien sind gekennzeichnet: Buchstaben, Marken, Zahlen, Satzzeichen, Symbol, Trennzeichen und Andere. Innerhalb dieser Kategorien gibt es Unterteilungen. In den meisten Fällen müssen andere Eigenschaften verwendet werden, um die Eigenschaften eines Codepunkts ausreichend zu spezifizieren. Die möglichen allgemeinen Kategorien sind:





































































































































































Codepunkte im Bereich U + D800 – U + DBFF (1.024 Codepunkte) sind als Hoch- bekannt. Surrogate -Codepunkte und Codepunkte im Bereich U + DC00 – U + DFFF (1.024 Codepunkte) werden als Codepunkte mit niedrigem Ersatzcode bezeichnet. Ein Code mit hohem Ersatzcode, gefolgt von einem Code mit niedrigem Ersatzcode, bildet ein Ersatzpaar in UTF-16, um Codepunkte darzustellen, die größer als U + FFFF sind. Diese Codepunkte können ansonsten nicht verwendet werden (diese Regel wird in der Praxis häufig ignoriert, insbesondere wenn UTF-16 nicht verwendet wird).

Es wird garantiert, dass ein kleiner Satz von Codepunkten niemals zum Codieren von Zeichen verwendet wird, obwohl Anwendungen diese Codepunkte intern verwenden können, wenn sie dies wünschen. Es gibt sechsundsechzig Nicht-Zeichen : U + FDD0 – U + FDEF und einen beliebigen Codepunkt, der auf den Wert FFFE oder FFFF endet (dh U + FFFE, U + FFFF, U + 1FFFE, U +) 1FFFF,… U + 10FFFE, U + 10FFFF). Die Menge der Nicht-Zeichen ist stabil, und es werden keine neuen Nicht-Zeichen definiert. [14] Wie bei den Surrogaten wird die Regel, dass diese nicht verwendet werden können, häufig ignoriert, obwohl der Betrieb der Byte-Reihenfolge-Marke davon ausgeht, dass U + FFFE niemals die ist erster Codepunkt in einem Text.

Wenn Sie Surrogate und Nicht-Zeichen ausschließen, bleiben 1.111.998 Codepunkte verfügbar.

Codepunkte für den privaten Gebrauch werden als zugewiesene Zeichen betrachtet, sie haben jedoch keine vom Unicode-Standard festgelegte Interpretation [15] so dass jeder Austausch solcher Zeichen eine Vereinbarung zwischen Sender und Empfänger über ihre Interpretation erfordert . Der Unicode-Codebereich enthält drei Bereiche für den privaten Gebrauch:


  • Bereich für privaten Gebrauch: U + E000 – U + F8FF (6.400 Zeichen)

  • Zusätzlicher Bereich für privaten Gebrauch-A: U + F0000 – U + FFFFD (65,534 Zeichen)

  • Zusätzlicher Bereich für privaten Gebrauch: B: U + 100000 – U + 10FFFD (65.534 Zeichen).

Grafikzeichen sind Zeichen, die von Unicode als bestimmte Semantik definiert werden und entweder eine sichtbare Glyphenform haben oder ein sichtbares Leerzeichen darstellen. Ab Unicode 11.0 gibt es 137.220 Grafikzeichen.

Format Zeichen sind Zeichen, die nicht sichtbar erscheinen, sich jedoch auf das Aussehen oder Verhalten benachbarter Zeichen auswirken können. Beispielsweise können U + 200C NULL-WIDTH-NON-JOINER und U + 200D NULL-WIDTH-JOINER verwendet werden, um das Standardformungsverhalten benachbarter Zeichen zu ändern (z , um Ligaturen zu hemmen oder Ligaturbildung anzufordern). In Unicode 11.0 gibt es 154 Zeichen im Format.

Fünfundsechzig Codepunkte (U + 0000 – U + 001F und U + 007F – U + 009F) sind als -Control -Codes reserviert und entsprechen den in ISO / C definierten C0- und C1-Kontrollcodes. IEC 6429. U + 0009 (Tab), U + 000A (Zeilenvorschub) und U + 000D (Carriage Return) werden in Unicode-kodierten Texten häufig verwendet. In der Praxis handelt es sich bei den C1-Codepunkten oft um nicht ordnungsgemäß übersetzte (Mojibake) ältere CP-1252-Zeichen, die von englischen und westeuropäischen Texten mit Windows-Technologien verwendet werden.

Grafikzeichen, Formatzeichen, Steuercodezeichen und Zeichen für den privaten Gebrauch sind zusammen als zugewiesene Zeichen bekannt. Reserved Codepunkte sind die Codepunkte, die zur Verwendung verfügbar sind, aber noch nicht zugewiesen wurden. Ab Unicode 11.0 gibt es 837.091 reservierte Codepunkte.


Abstrakte Zeichen [ edit ]


Die durch Unicode definierte Gruppe von Grafik- und Formatzeichen entspricht nicht direkt dem Repertoire von abstrakten Zeichen das unter darstellbar ist Unicode. Unicode codiert Zeichen durch Zuordnen eines abstrakten Zeichens zu einem bestimmten Codepunkt. [16] Allerdings werden nicht alle abstrakten Zeichen als ein einzelnes Unicode-Zeichen codiert, und einige abstrakte Zeichen können in Unicode durch eine Folge von zwei oder mehr Zeichen dargestellt werden. Beispielsweise wird ein lateinischer Kleinbuchstabe "i" mit einem ogonek, einem Punkt oben und einem Akutakzent, der auf Litauisch erforderlich ist, durch die Zeichenfolge U + 012F, U + 0307, ​​U + 0301 dargestellt. Unicode führt eine Liste eindeutig benannter Zeichenfolgen für abstrakte Zeichen, die nicht direkt in Unicode codiert sind. [17]

Alle Grafik-, Format- und Zeichen für den privaten Gebrauch haben einen eindeutigen und unveränderlichen Namen kann identifiziert werden. Diese Unveränderbarkeit ist seit der Unicode-Version 2.0 durch die Richtlinie zur Namensstabilität gewährleistet. [14] In Fällen, in denen der Name schwerwiegend fehlerhaft und irreführend ist oder einen schwerwiegenden Tippfehler aufweist, kann ein formaler Alias ​​definiert werden, und Anwendungen werden zur Verwendung des Befehls aufgefordert Formaler Alias ​​anstelle des offiziellen Zeichennamens. Beispielsweise hat U + A015 92 YI SYLLABLE WU den formalen Alias ​​eine Silben-Iterationsmarke und U + FE18 PRÄSENTATIONSFORMULAR FÜR VERTIKAL RECHTWEISS-LENTICULAR BRA KC ET (sic) hat den formalen Alias ​​ für die Form der vertikalen rechten weißen Lentikularklammer . [18]


Unicode Consortium edit ]



Das Unicode-Konsortium ist eine gemeinnützige Organisation, die die Entwicklung von Unicode koordiniert. Vollmitglieder sind die meisten der wichtigsten Computer-Software- und Hardware-Unternehmen, die an Textverarbeitungsstandards interessiert sind, darunter Adobe, Apple, Google, IBM, Microsoft und Oracle Corporation. [19]

Over the Seit Jahren sind mehrere Länder oder Regierungsbehörden Mitglieder des Unicode-Konsortiums. Gegenwärtig ist nur das Ministerium für Awqaf und religiöse Angelegenheiten des Sultanats Oman ein volles stimmberechtigtes Mitglied. [19]

Das Konsortium hat das ehrgeizige Ziel, die bestehenden Zeichenkodierungsschemata schließlich durch Unicode und zu ersetzen UTF-Schemata (Unicode Transformation Format) verwendet, da viele der vorhandenen Schemata in Größe und Umfang begrenzt sind und mit mehrsprachigen Umgebungen nicht kompatibel sind.


Versionen [ edit ]


Unicode wurde in Zusammenarbeit mit der International Organization for Standardization entwickelt und teilt das Zeichenrepertoire mit ISO / IEC 10646: dem universellen Zeichensatz. Unicode und ISO / IEC 10646 funktionieren äquivalent als Zeichencodierungen, Der Unicode-Standard enthält jedoch viel mehr Informationen für Implementierer, die sich ausführlich mit Themen wie bitweise Codierung, Sortierung und Rendern befassen. Der Unicode-Standard zählt eine Vielzahl von Zeicheneigenschaften auf, einschließlich der Eigenschaften, die zur Unterstützung von bidirektionalem Text erforderlich sind. Die beiden Standards verwenden eine leicht unterschiedliche Terminologie.

Das Unicode-Konsortium wurde erstmals Der Unicode-Standard im Jahr 1991 (Version 1.0) veröffentlicht und hat seitdem regelmäßig neue Versionen veröffentlicht. Die neueste Version des Unicode-Standards, Version 11.0, wurde im Juni 2018 veröffentlicht und ist in elektronischer Form auf der Website des Konsortiums verfügbar. Die letzte Version des Standards, die vollständig in Buchform (einschließlich der Codediagramme) veröffentlicht wurde, war 2006 die Version 5.0. Seit Version 5.2 (2009) wurde die Kernspezifikation des Standards jedoch als Print-on-Demand-Taschenbuch veröffentlicht. [20] Der gesamte Text jeder Version der Norm einschließlich der Kernspezifikation, der Standardanhänge und der Codetabellen ist auf der Unicode-Website im PDF-Format frei verfügbar.

Bisher wurden die folgenden Haupt- und Nebenversionen des Unicode-Standards veröffentlicht. Aktualisierungsversionen, die keine Änderungen am Zeichenrepertoire enthalten, werden durch die dritte Nummer (z. B. "Version 4.0.1") bezeichnet und in der folgenden Tabelle weggelassen. [21]













































































































































Unicode-Versionen
Version
Datum
Buch
Entsprechende ISO / IEC 10646-Ausgabe
Skripte
Zeichen
Insgesamt [tablenote 1] Bemerkenswerte Ergänzungen
1.0.0
Oktober 1991
ISBN 0-201-56788-1 (Vol. 1)

24
7,161
Das anfängliche Repertoire umfasst folgende Drehbücher: Arabisch, Armenisch, Bengali, Bopomofo, Kyrillisch, Devanagari, Georgisch, Griechisch und Koptisch, Gujarati, Gurmukhi, Hangul, Hebräisch, Hiragana, Kannada, Katakana, Lao, Latein, Malayalam, Oriya, Tamil , Telugu, Thai und Tibetaner. [22]
1.0.1
Juni 1992
ISBN 0-201-60845-6 (Band 2)

25
28,359
Die anfängliche Menge von 20.902 CJK Unified Ideographs ist definiert. [23]
1.1
Juni 1993

ISO / IEC 10646-1: 1993
24
34.233
4.306 weitere Hangul-Silben zum ursprünglichen Satz von 2.350 Zeichen hinzugefügt. Tibetaner entfernt. [24]
2.0
Juli 1996
ISBN 0-201-48345-9
ISO / IEC 10646-1: 1993 plus Änderungen 5, 6 und 7
25
38,950
Ursprünglicher Satz von Hangul-Silben wurde entfernt, und ein neuer Satz von 11.172 Hangul-Silben wurde an einem neuen Ort hinzugefügt. Tibeter fügten sich an einem neuen Ort und mit einem anderen Charakterrepertoire hinzu. Ersatzmechanismen definiert und die Bereiche 15 und 16 für den privaten Gebrauch zugewiesen. [25]
2.1
Mai 1998

ISO / IEC 10646-1: 1993 plus Änderungen 5, 6 und 7 sowie zwei Zeichen aus Änderungsantrag 18
25
38,952
Eurozeichen und Objektersatzzeichen hinzugefügt. [26]
3.0
September 1999
ISBN 0-201-61633-5
ISO / IEC 10646-1: 2000
38
49,259
Cherokee, Ethiopic, Khmer, Mongolian, Burmese, Ogham, Runich, Singhalesisch, Syrisch, Thaana, vereinheitlichte kanadische Ureinwohner-Syllabics und Yi Syllables sowie eine Reihe von Braille-Mustern. [27]
3.1
März 2001

ISO / IEC 10646-1: 2000

ISO / IEC 10646-2: 2001


41
94,205
Deseret, Gothic und Old Italic hinzugefügt, sowie Symbolsätze für westliche und byzantinische Musik und 42.711 zusätzliche CJK Unified Ideographs. [28]
3.2
März 2002

ISO / IEC 10646-1: 2000 plus Änderung 1

ISO / IEC 10646-2: 2001


45
95,221
Philippinische Schriften Buhid, Hanunó'o, Tagalog und Tagbanwa hinzugefügt. [29]
4.0
April 2003
ISBN 0-321-18578-1
ISO / IEC 10646: 2003
52
96.447
Zypriotische Silbenschrift, Limbu, Linear B, Osmanya, Shavian, Tai Le und Ugaritic sowie Hexagramm-Symbole hinzugefügt. [30]
4.1
März 2005

ISO / IEC 10646: 2003 plus Änderung 1
59
97.720
Buginese, Glagolitic, Kharoshthi, New Tai Lue, Alter Perser, Syloti Nagri und Tifinagh wurden hinzugefügt, und Koptisch wurde vom Griechischen getrennt. Antike griechische Zahlen und musikalische Symbole wurden ebenfalls hinzugefügt. [31]
5.0
Juli 2006
ISBN 0-321-48091-0
ISO / IEC 10646: 2003 plus Änderungen 1 und 2 sowie vier Zeichen aus Änderungsantrag 3
64
99,089
Balinese, Cuneiform, N'Ko, Phags-pa und Phönizier hinzugefügt. [32]
5.1
April 2008

ISO / IEC 10646: 2003 sowie Änderungen 1, 2, 3 und 4
75
100,713
Carian, Cham, Kayah Li, Lepcha, Lycian, Lydian, Ol Chiki, Rejang, Saurashtra, Sundanesisch und Vai sowie Symbole für die Phaistos-Disc, Mahjong-Fliesen und Domino-Kacheln hinzugefügt. Es gab auch wichtige Ergänzungen für Birmanisch, Ergänzungen von Buchstaben und Abkürzungen von Scribal, die in mittelalterlichen Manuskripten verwendet wurden, und die Hinzufügung von Kapital. [33]
5.2
Oktober 2009
ISBN 978-1-936213-00-9
ISO / IEC 10646: 2003 plus Änderungen 1, 2, 3, 4, 5 und 6
90
107,361
Avestan, Bamum, ägyptische Hieroglyphen (das Gardiner Set, bestehend aus 1.071 Zeichen), kaiserliches Aramäisch, Inschriftional Pahlavi, Inschriftional Parthian, Javanisch, Kaithi, Lisu, Meetei Mayek, Alt-Süd-Araber, Alt-Turkisch, Samaritan, Tai Tham und Tai Viet fügte hinzu. 4.149 zusätzliche CJK Unified Ideographs (CJK-C) sowie erweiterter Jamo für Old Hangul und Zeichen für Vedic Sanskrit. [34]
6.0
Oktober 2010
ISBN 978-1-936213-01-6
ISO / IEC 10646: 2010 sowie das indische Rupiezeichen
93
109,449
Batak, Brahmi, Mandaic, Spielkartensymbole, Transport- und Kartensymbole, alchemistische Symbole, Emoticons und Emoji. 222 weitere CJK Unified Ideographs (CJK-D) hinzugefügt. [35]
6.1
Januar 2012
ISBN 978-1-936213-02-3
ISO / IEC 10646: 2012
100
110.181
Chakma, Meroitic Cursive, Meroitic Hieroglyphen, Miao, Sharada, Sora Sompeng und Takri. [36]
6.2
September 2012
ISBN 978-1-936213-07-8
ISO / IEC 10646: 2012 sowie das türkische Lira-Zeichen
100
110,182
Zeichen der türkischen Lira. [37]
6.3
September 2013
ISBN 978-1-936213-08-5
ISO / IEC 10646: 2012 plus sechs Zeichen
100
110, 187
5 bidirektionale Formatierungszeichen. [38]
7.0
Juni 2014
ISBN 978-1-936213-09-2
ISO / IEC 10646: 2012 sowie Änderungen 1 und 2 sowie das Rubel-Zeichen
123
113.021
Bassa Vah, kaukasischer Albaner, Duployan, Elbasan, Grantha, Khojki, Khudawadi, Linear A, Mahajani, Manichäer, Mende Kikakui, Modi, Mro, Nabatäer, Alt-Nordaraber, Alt-Permic, Pahawh Hmong, Palmyrene, Pau Cin Hau Psalter Pahlavi, Siddham, Tirhuta, Warang Citi und Dingbats. [39]
8.0
Juni 2015
ISBN 978-1-936213-10-8
ISO / IEC 10646: 2014 plus Abänderung 1 sowie das Lari-Zeichen, neun vereinheitlichte CJK-Ideographen und 41 Emoji-Zeichen [40] 129
120, 737
Ahom, anatolische Hieroglyphen, Hatran, Multani, Alt-Ungarisch, SignWriting, 5,771 CJK vereinheitlichte Ideographen, eine Reihe von Kleinbuchstaben für Cherokee und fünf Emoji-Hauttonmodifikatoren
Juni 2016
ISBN 978-1-936213-13-9
ISO / IEC 10646: 2014 plus Änderungen 1 und 2 sowie Adlam, Newa, japanische Fernsehsymbole und 74 Emoji und Symbole [42] 135
128,237
Adlam, Bhaiksuki, Marchen, Newa, Osage, Tangut und 72 Emoji [43][44]
10.0
Juni 2017
ISBN 978-1-936213-16-0
ISO / IEC 10646: 2017 plus 56 Emoji-Zeichen, 285 Hentaigana-Zeichen und 3 Zanabazar Square-Zeichen [45] 139
136,755
Zanabazar Square, Soyombo, Masaram Gondi, Nüshu, Hentaigana (nicht standardisiertes Hiragana), 7.494 CJK vereinheitlichte Ideographen und 56 Emoji
11,0
Juni 2018
ISBN 978-1-936213-19-1
ISO / IEC 10646: 2017 plus Änderung 1 sowie 46 georgische Großbuchstaben von Mtavruli, 5 vereinheitlichte CJK-Ideographen und 66 Emoji-Zeichen. [46] 146
137,439
Dogra, Georgian Mtavruli capital letters, Gunjala Gondi, Hanifi Rohingya, Indic Siyaq numbers, Makasar, Medefaidrin, Old Sogdian and Sogdian, Mayan numerals, 5 urgently needed CJK unified ideographs, symbols for xiangqi (Chinese chess) and star ratings, and 145 emoji[47]

  1. ^ The number of characters listed for each version of Unicode is the total number of graphic, format and control characters (i.e., excluding private-use characters, noncharacters and surrogate code points).


Scripts covered[edit]



Many modern applications can render a substantial subset of the many scripts in Unicode, as demonstrated by this screenshot from the OpenOffice.org application.

Unicode covers almost all scripts (writing systems) in current use today.[48][not in citation given]

A total of 146 scripts are included in the latest version of Unicode (covering alphabets, abugidas and syllabaries), although there are still scripts that are not yet encoded, particularly those mainly used in historical, liturgical, and academic contexts. Further additions of characters to the already encoded scripts, as well as symbols, in particular for mathematics and music (in the form of notes and rhythmic symbols), also occur.

The Unicode Roadmap Committee (Michael Everson, Rick McGowan, Ken Whistler, V.S. Umamaheswaran[49]) maintain the list of scripts that are candidates or potential candidates for encoding and their tentative code block assignments on the Unicode Roadmap page of the Unicode Consortium Web site. For some scripts on the Roadmap, such as Jurchen and Khitan small script, encoding proposals have been made and they are working their way through the approval process. For others scripts, such as Mayan (besides numbers) and Rongorongo, no proposal has yet been made, and they await agreement on character repertoire and other details from the user communities involved.

Some modern invented scripts which have not yet been included in Unicode (e.g., Tengwar) or which do not qualify for inclusion in Unicode due to lack of real-world use (e.g., Klingon) are listed in the ConScript Unicode Registry, along with unofficial but widely used Private Use Area code assignments.

There is also a Medieval Unicode Font Initiative focused on special Latin medieval characters. Part of these proposals have been already included into Unicode.

The Script Encoding Initiative, a project run by Deborah Anderson at the University of California, Berkeley was founded in 2002 with the goal of funding proposals for scripts not yet encoded in the standard. The project has become a major source of proposed additions to the standard in recent years.[50]


Mapping and encodings[edit]



Several mechanisms have been specified for implementing Unicode. The choice depends on available storage space, source code compatibility, and interoperability with other systems.


Unicode Transformation Format and Universal Coded Character Set[edit]


Unicode defines two mapping methods: the Unicode Transformation Format (UTF) encodings, and the Universal Coded Character Set (UCS) encodings. An encoding maps (possibly a subset of) the range of Unicode code points to sequences of values in some fixed-size range, termed code values. All UTF encodings map all code points (except surrogates) to a unique sequence of bytes.[51] The numbers in the names of the encodings indicate the number of bits per code value (for UTF encodings) or the number of bytes per code value (for UCS encodings). UTF-8 and UTF-16 are probably the most commonly used encodings. UCS-2 is an obsolete subset of UTF-16; UCS-4 and UTF-32 are functionally equivalent.

UTF encodings include:


  • UTF-1, a retired predecessor of UTF-8, maximizes compatibility with ISO 2022, no longer part of The Unicode Standard;

  • UTF-7, a 7-bit encoding sometimes used in e-mail, often considered obsolete (not part of The Unicode Standardbut only documented as an informational RFC, i.e., not on the Internet Standards Track either);

  • UTF-8, an 8-bit variable-width encoding which maximizes compatibility with ASCII;

  • UTF-EBCDIC, an 8-bit variable-width encoding similar to UTF-8, but designed for compatibility with EBCDIC (not part of The Unicode Standard);

  • UTF-16, a 16-bit, variable-width encoding;

  • UTF-32, a 32-bit, fixed-width encoding.

UTF-8 uses one to four bytes per code point and, being compact for Latin scripts and ASCII-compatible, provides the de facto standard encoding for interchange of Unicode text. It is used by FreeBSD and most recent Linux distributions as a direct replacement for legacy encodings in general text handling.

The UCS-2 and UTF-16 encodings specify the Unicode Byte Order Mark (BOM) for use at the beginnings of text files, which may be used for byte ordering detection (or byte endianness detection). The BOM, code point U+FEFF has the important property of unambiguity on byte reorder, regardless of the Unicode encoding used; U+FFFE (the result of byte-swapping U+FEFF) does not equate to a legal character, and U+FEFF in other places, other than the beginning of text, conveys the zero-width non-break space (a character with no appearance and no effect other than preventing the formation of ligatures).

The same character converted to UTF-8 becomes the byte sequence EF BB BF. The Unicode Standard allows that the BOM "can serve as signature for UTF-8 encoded text where the character set is unmarked".[52] Some software developers have adopted it for other encodings, including UTF-8, in an attempt to distinguish UTF-8 from local 8-bit code pages. However RFC 3629, the UTF-8 standard, recommends that byte order marks be forbidden in protocols using UTF-8, but discusses the cases where this may not be possible. In addition, the large restriction on possible patterns in UTF-8 (for instance there cannot be any lone bytes with the high bit set) means that it should be possible to distinguish UTF-8 from other character encodings without relying on the BOM.

In UTF-32 and UCS-4, one 32-bit code value serves as a fairly direct representation of any character's code point (although the endianness, which varies across different platforms, affects how the code value manifests as an octet sequence). In the other encodings, each code point may be represented by a variable number of code values. UTF-32 is widely used as an internal representation of text in programs (as opposed to stored or transmitted text), since every Unix operating system that uses the gcc compilers to generate software uses it as the standard "wide character" encoding. Some programming languages, such as Seed7, use UTF-32 as internal representation for strings and characters. Recent versions of the Python programming language (beginning with 2.2) may also be configured to use UTF-32 as the representation for Unicode strings, effectively disseminating such encoding in high-level coded software.

Punycode, another encoding form, enables the encoding of Unicode strings into the limited character set supported by the ASCII-based Domain Name System (DNS). The encoding is used as part of IDNA, which is a system enabling the use of Internationalized Domain Names in all scripts that are supported by Unicode. Earlier and now historical proposals include UTF-5 and UTF-6.

GB18030 is another encoding form for Unicode, from the Standardization Administration of China. It is the official character set of the People's Republic of China (PRC). BOCU-1 and SCSU are Unicode compression schemes. The April Fools' Day RFC of 2005 specified two parody UTF encodings, UTF-9 and UTF-18.


Ready-made versus composite characters[edit]


Unicode includes a mechanism for modifying character shape that greatly extends the supported glyph repertoire. This covers the use of combining diacritical marks. They are inserted after the main character. Multiple combining diacritics may be stacked over the same character. Unicode also contains precomposed versions of most letter/diacritic combinations in normal use. These make conversion to and from legacy encodings simpler, and allow applications to use Unicode as an internal text format without having to implement combining characters. For example, é can be represented in Unicode as U+0065 (LATIN SMALL LETTER E) followed by U+0301 (COMBINING ACUTE ACCENT), but it can also be represented as the precomposed character U+00E9 (LATIN SMALL LETTER E WITH ACUTE). Thus, in many cases, users have multiple ways of encoding the same character. To deal with this, Unicode provides the mechanism of canonical equivalence.

An example of this arises with Hangul, the Korean alphabet. Unicode provides a mechanism for composing Hangul syllables with their individual subcomponents, known as Hangul Jamo. However, it also provides 11,172 combinations of precomposed syllables made from the most common jamo.

The CJK characters currently have codes only for their precomposed form. Still, most of those characters comprise simpler elements (called radicals), so in principle Unicode could have decomposed them as it did with Hangul. This would have greatly reduced the number of required code points, while allowing the display of virtually every conceivable character (which might do away with some of the problems caused by Han unification). A similar idea is used by some input methods, such as Cangjie and Wubi. However, attempts to do this for character encoding have stumbled over the fact that Chinese characters do not decompose as simply or as regularly as Hangul does.

A set of radicals was provided in Unicode 3.0 (CJK radicals between U+2E80 and U+2EFF, KangXi radicals in U+2F00 to U+2FDF, and ideographic description characters from U+2FF0 to U+2FFB), but the Unicode standard (ch. 12.2 of Unicode 5.2) warns against using ideographic description sequences as an alternate representation for previously encoded characters:


This process is different from a formal encoding of an ideograph. There is no canonical description of unencoded ideographs; there is no semantic assigned to described ideographs; there is no equivalence defined for described ideographs. Conceptually, ideographic descriptions are more akin to the English phrase "an 'e' with an acute accent on it" than to the character sequence .


Ligatures[edit]


Many scripts, including Arabic and Devanagari, have special orthographic rules that require certain combinations of letterforms to be combined into special ligature forms. The rules governing ligature formation can be quite complex, requiring special script-shaping technologies such as ACE (Arabic Calligraphic Engine by DecoType in the 1980s and used to generate all the Arabic examples in the printed editions of the Unicode Standard), which became the proof of concept for OpenType (by Adobe and Microsoft), Graphite (by SIL International), or AAT (by Apple).

Instructions are also embedded in fonts to tell the operating system how to properly output different character sequences. A simple solution to the placement of combining marks or diacritics is assigning the marks a width of zero and placing the glyph itself to the left or right of the left sidebearing (depending on the direction of the script they are intended to be used with). A mark handled this way will appear over whatever character precedes it, but will not adjust its position relative to the width or height of the base glyph; it may be visually awkward and it may overlap some glyphs. Real stacking is impossible, but can be approximated in limited cases (for example, Thai top-combining vowels and tone marks can just be at different heights to start with). Generally this approach is only effective in monospaced fonts, but may be used as a fallback rendering method when more complex methods fail.


Standardized subsets[edit]


Several subsets of Unicode are standardized: Microsoft Windows since Windows NT 4.0 supports WGL-4 with 656 characters, which is considered to support all contemporary European languages using the Latin, Greek, or Cyrillic script. Other standardized subsets of Unicode include the Multilingual European Subsets:[53]

MES-1 (Latin scripts only, 335 characters), MES-2 (Latin, Greek and Cyrillic 1062 characters)[54] and MES-3A & MES-3B (two larger subsets, not shown here). Note that MES-2 includes every character in MES-1 and WGL-4.















































WGL-4MES-1 and MES-2
RowCellsRange(s)
00
20–7E
Basic Latin (00–7F)
A0–FF
Latin-1 Supplement (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 Extensions (50–AF)
BB–BD, C6, C7, C9, D6, D8–DB, DC, DD, DF, EE
Spacing Modifier Letters (B0–FF)
03
74–75, 7A, 7E, 84–8A, 8C, 8E–A1, A3–CE, D7, DA–E1
Greek (70–FF)
04
00–5F, 90–91, 92–C4, C7–C8, CB–CC, D0–EB, EE–F5, F8–F9
Cyrillic (00–FF)
1E
02–03, 0A–0B, 1E–1F, 40–41, 56–57, 60–61, 6A–6B, 80–85, 9B, F2–F3
Latin Extended Additional (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
General Punctuation (00–6F)
7F82
Superscripts and Subscripts (70–9F)
A3–A4, A7, AC, AF
Currency Symbols (A0–CF)
21
05, 13, 16, 22, 26, 2E
Letterlike Symbols (00–4F)
5B–5E
Number Forms (50–8F)
90–93, 94–95, A8
Arrows (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
Mathematical Operators (00–FF)
23
02, 0A, 20–21, 29–2A
Miscellaneous Technical (00–FF)
25
00, 02, 0C, 10, 14, 18, 1C, 24, 2C, 34, 3C, 50–6C
Box Drawing (00–7F)
80, 84, 88, 8C, 90–93
Block Elements (80–9F)
A0–A1, AA–AC, B2, BA, BC, C4, CA–CB, CF, D8–D9, E6
Geometric Shapes (A0–FF)
26
3A–3C, 40, 42, 60, 63, 65–66, 6A, 6B
Miscellaneous Symbols (00–FF)
F0
(01–02)
Private Use Area (00–FF ...)
FB
01–02
Alphabetic Presentation Forms (00–4F)
FF
FD
Specials

Rendering software which cannot process a Unicode character appropriately often displays it as an open rectangle, or the Unicode "replacement character" (U+FFFD, ), to indicate the position of the unrecognized character. Some systems have made attempts to provide more information about such characters. Apple's Last Resort font will display a substitute glyph indicating the Unicode range of the character, and the SIL International's Unicode Fallback font will display a box showing the hexadecimal scalar value of the character.


Code point lookup[edit]


Online tools for finding the code point for a known character include Unicode Lookup[55] by Jonathan Hedley and Shapecatcher[56] by Benjamin Milde. In Unicode Lookup, one enters a search key (e.g. "fractions"), and a list of corresponding characters with their code points is returned. In Shapecatcher, based on Shape context, one draws the character in a box and a list of characters approximating the drawing, with their code points, is returned.


Adoption[edit]


Operating systems[edit]


Unicode has become the dominant scheme for internal processing and storage of text. Although a great deal of text is still stored in legacy encodings, Unicode is used almost exclusively for building new information processing systems. Early adopters tended to use UCS-2 (the fixed-width two-byte precursor to UTF-16) and later moved to UTF-16 (the variable-width current standard), as this was the least disruptive way to add support for non-BMP characters. The best known such system is Windows NT (and its descendants, Windows 2000, Windows XP, Windows Vista, Windows 7, Windows 8 and Windows 10), which uses UTF-16 as the sole internal character encoding. The Java and .NET bytecode environments, macOS, and KDE also use it for internal representation. Unicode is available on Windows 9x through Microsoft Layer for Unicode.

UTF-8 (originally developed for Plan 9)[57] has become the main storage encoding on most Unix-like operating systems (though others are also used by some libraries) because it is a relatively easy replacement for traditional extended ASCII character sets. UTF-8 is also the most common Unicode encoding used in HTML documents on the World Wide Web.

Multilingual text-rendering engines which use Unicode include Uniscribe and DirectWrite for Microsoft Windows, ATSUI and Core Text for macOS, and Pango for GTK+ and the GNOME desktop.


Input methods[edit]



Because keyboard layouts cannot have simple key combinations for all characters, several operating systems provide alternative input methods that allow access to the entire repertoire.

ISO/IEC 14755,[58] which standardises methods for entering Unicode characters from their code points, specifies several methods. There is the Basic methodwhere a beginning sequence is followed by the hexadecimal representation of the code point and the ending sequence. There is also a screen-selection entry method specified, where the characters are listed in a table in a screen, such as with a character map program.


Email[edit]



MIME defines two different mechanisms for encoding non-ASCII characters in email, depending on whether the characters are in email headers (such as the "Subject:"), or in the text body of the message; in both cases, the original character set is identified as well as a transfer encoding. For email transmission of Unicode, the UTF-8 character set and the Base64 or the Quoted-printable transfer encoding are recommended, depending on whether much of the message consists of ASCII characters. The details of the two different mechanisms are specified in the MIME standards and generally are hidden from users of email software.

The adoption of Unicode in email has been very slow. Some East Asian text is still encoded in encodings such as ISO-2022, and some devices, such as mobile phones, still cannot correctly handle Unicode data. Support has been improving, however. Many major free mail providers such as Yahoo, Google (Gmail), and Microsoft (Outlook.com) support it.


Web[edit]



All W3C recommendations have used Unicode as their document character set since HTML 4.0. Web browsers have supported Unicode, especially UTF-8, for many years. There used to be display problems resulting primarily from font related issues; z.B. v 6 and older of Microsoft Internet Explorer did not render many code points unless explicitly told to use a font that contains them.[59]

Although syntax rules may affect the order in which characters are allowed to appear, XML (including XHTML) documents, by definition,[60] comprise characters from most of the Unicode code points, with the exception of:


  • most of the C0 control codes

  • the permanently unassigned code points D800–DFFF

  • FFFE or FFFF

HTML characters manifest either directly as bytes according to document's encoding, if the encoding supports them, or users may write them as numeric character references based on the character's Unicode code point. For example, the references ΔЙקم๗あ叶葉and 말 (or the same numeric values expressed in hexadecimal, with &#x as the prefix) should display on all browsers as Δ, Й, ק ,م, ๗, あ, 叶, 葉, and 말.

When specifying URIs, for example as URLs in HTTP requests, non-ASCII characters must be percent-encoded.


Fonts[edit]



Free and retail fonts based on Unicode are widely available, since TrueType and OpenType support Unicode. These font formats map Unicode code points to glyphs, but TrueType font is restricted to 65,535 glyphs.

Thousands of fonts exist on the market, but fewer than a dozen fonts—sometimes described as "pan-Unicode" fonts—attempt to support the majority of Unicode's character repertoire. Instead, Unicode-based fonts typically focus on supporting only basic ASCII and particular scripts or sets of characters or symbols. Several reasons justify this approach: applications and documents rarely need to render characters from more than one or two writing systems; fonts tend to demand resources in computing environments; and operating systems and applications show increasing intelligence in regard to obtaining glyph information from separate font files as needed, i.e., font substitution. Furthermore, designing a consistent set of rendering instructions for tens of thousands of glyphs constitutes a monumental task; such a venture passes the point of diminishing returns for most typefaces.


Newlines[edit]


Unicode partially addresses the newline problem that occurs when trying to read a text file on different platforms. Unicode defines a large number of characters that conforming applications should recognize as line terminators.

In terms of the newline, Unicode introduced U+2028 LINE SEPARATOR and U+2029 PARAGRAPH SEPARATOR. This was an attempt to provide a Unicode solution to encoding paragraphs and lines semantically, potentially replacing all of the various platform solutions. In doing so, Unicode does provide a way around the historical platform dependent solutions. Nonetheless, few if any Unicode solutions have adopted these Unicode line and paragraph separators as the sole canonical line ending characters. However, a common approach to solving this issue is through newline normalization. This is achieved with the Cocoa text system in Mac OS X and also with W3C XML and HTML recommendations. In this approach every possible newline character is converted internally to a common newline (which one does not really matter since it is an internal operation just for rendering). In other words, the text system can correctly treat the character as a newline, regardless of the input's actual encoding.



Philosophical and completeness criticisms[edit]


Han unification (the identification of forms in the East Asian languages which one can treat as stylistic variations of the same historical character) has become one of the most controversial aspects of Unicode, despite the presence of a majority of experts from all three regions in the Ideographic Rapporteur Group (IRG), which advises the Consortium and ISO on additions to the repertoire and on Han unification.[61]

Unicode has been criticized for failing to separately encode older and alternative forms of kanji which, critics argue, complicates the processing of ancient Japanese and uncommon Japanese names. This is often due to the fact that Unicode encodes characters rather than glyphs (the visual representations of the basic character that often vary from one language to another). Unification of glyphs leads to the perception that the languages themselves, not just the basic character representation, are being merged.[62][clarification needed] There have been several attempts to create alternative encodings that preserve the stylistic differences between Chinese, Japanese, and Korean characters in opposition to Unicode's policy of Han unification. An example of one is TRON (although it is not widely adopted in Japan, there are some users who need to handle historical Japanese text and favor it).

Although the repertoire of fewer than 21,000 Han characters in the earliest version of Unicode was largely limited to characters in common modern usage, Unicode now includes more than 87,000 Han characters, and work is continuing to add thousands more historic and dialectal characters used in China, Japan, Korea, Taiwan, and Vietnam.

Modern font technology provides a means to address the practical issue of needing to depict a unified Han character in terms of a collection of alternative glyph representations, in the form of Unicode variation sequences. For example, the Advanced Typographic tables of OpenType permit one of a number of alternative glyph representations to be selected when performing the character to glyph mapping process. In this case, information can be provided within plain text to designate which alternate character form to select.


Various Cyrillic characters shown with and without italics

If the difference in the appropriate glyphs for two characters in the same script differ only in the italic, Unicode has generally unified them, as can be seen in the comparison between Russian (labeled standard) and Serbian characters at right, meaning that the differences are displayed through smart font technology or manually changing fonts.


Mapping to legacy character sets[edit]


Unicode was designed to provide code-point-by-code-point round-trip format conversion to and from any preexisting character encodings, so that text files in older character sets can be converted to Unicode and then back and get back the same file, without employing context-dependent interpretation. That has meant that inconsistent legacy architectures, such as combining diacritics and precomposed characters, both exist in Unicode, giving more than one method of representing some text. This is most pronounced in the three different encoding forms for Korean Hangul. Since version 3.0, any precomposed characters that can be represented by a combining sequence of already existing characters can no longer be added to the standard in order to preserve interoperability between software using different versions of Unicode.

Injective mappings must be provided between characters in existing legacy character sets and characters in Unicode to facilitate conversion to Unicode and allow interoperability with legacy software. Lack of consistency in various mappings between earlier Japanese encodings such as Shift-JIS or EUC-JP and Unicode led to round-trip format conversion mismatches, particularly the mapping of the character JIS X 0208 '~' (1-33, WAVE DASH), heavily used in legacy database data, to either U+FF5E FULLWIDTH TILDE (in Microsoft Windows) or U+301C WAVE DASH (other vendors).[63]

Some Japanese computer programmers objected to Unicode because it requires them to separate the use of U+005C REVERSE SOLIDUS (backslash) and U+00A5 ¥ YEN SIGNwhich was mapped to 0x5C in JIS X 0201, and a lot of legacy code exists with this usage.[64] (This encoding also replaces tilde '~' 0x7E with macron '¯', now 0xAF.) The separation of these characters exists in ISO 8859-1, from long before Unicode.


Indic scripts[edit]


Indic scripts such as Tamil and Devanagari are each allocated only 128 code points, matching the ISCII standard. The correct rendering of Unicode Indic text requires transforming the stored logical order characters into visual order and the forming of ligatures (aka conjuncts) out of components. Some local scholars argued in favor of assignments of Unicode code points to these ligatures, going against the practice for other writing systems, though Unicode contains some Arabic and other ligatures for backward compatibility purposes only.[65][66][67] Encoding of any new ligatures in Unicode will not happen, in part because the set of ligatures is font-dependent, and Unicode is an encoding independent of font variations. The same kind of issue arose for the Tibetan script in 2003 when the Standardization Administration of China proposed encoding 956 precomposed Tibetan syllables,[68] but these were rejected for encoding by the relevant ISO committee (ISO/IEC JTC 1/SC 2).[69]

Thai alphabet support has been criticized for its ordering of Thai characters. The vowels เ, แ, โ, ใ, ไ that are written to the left of the preceding consonant are in visual order instead of phonetic order, unlike the Unicode representations of other Indic scripts. This complication is due to Unicode inheriting the Thai Industrial Standard 620, which worked in the same way, and was the way in which Thai had always been written on keyboards. This ordering problem complicates the Unicode collation process slightly, requiring table lookups to reorder Thai characters for collation.[62] Even if Unicode had adopted encoding according to spoken order, it would still be problematic to collate words in dictionary order. E.g., the word แสดง  [sa dɛːŋ] "perform" starts with a consonant cluster "สด" (with an inherent vowel for the consonant "ส"), the vowel แ-, in spoken order would come after the ด, but in a dictionary, the word is collated as it is written, with the vowel following the ส.


Combining characters[edit]




Characters with diacritical marks can generally be represented either as a single precomposed character or as a decomposed sequence of a base letter plus one or more non-spacing marks. For example, ḗ (precomposed e with macron and acute above) and ḗ (e followed by the combining macron above and combining acute above) should be rendered identically, both appearing as an e with a macron and acute accent, but in practice, their appearance may vary depending upon what rendering engine and fonts are being used to display the characters. Similarly, underdots, as needed in the romanization of Indic, will often be placed incorrectly[citation needed]. Unicode characters that map to precomposed glyphs can be used in many cases, thus avoiding the problem, but where no precomposed character has been encoded the problem can often be solved by using a specialist Unicode font such as Charis SIL that uses Graphite, OpenType, or AAT technologies for advanced rendering features.


Anomalies[edit]


The Unicode standard has imposed rules intended to guarantee stability.[70] Depending on the strictness of a rule, a change can be prohibited or allowed. For example, a "name" given to a code point can not and will not change. But a "script" property is more flexible, by Unicode's own rules. In version 2.0, Unicode changed many code point "names" from version 1. At the same moment, Unicode stated that from then on, an assigned name to a code point will never change anymore. This implies that when mistakes are published, these mistakes cannot be corrected, even if they are trivial (as happened in one instance with the spelling BRAKCET for BRACKET in a character name). In 2006 a list of anomalies in character names was first published, and, as of April, 2017, there were 94 characters with identified issues, for example:[71]


  • U+2118 SCRIPT CAPITAL P (HTML ℘ · ℘): it is not a capital
    The name says "capital", but it is a small letter. The true capital is U+1D4AB 𝒫 MATHEMATICAL SCRIPT CAPITAL P (HTML 𝒫)[72]

  • U+034F ͏ COMBINING GRAPHEME JOINER (HTML ͏): Does not join graphemes.[71]

  • U+A015 YI SYLLABLE WU (HTML ꀕ): This is not a Yi syllable, but a Yi iteration mark. Its name, however, cannot be changed due to the policy of the Consortium.

  • U+FE18 PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET (HTML ︘): bracket is spelled incorrectly. Since this is the fixed character name by policy, it cannot be changed.[73]

See also[edit]


References[edit]



  1. ^ "The Unicode Standard: A Technical Introduction". Retrieved 2010-03-16.

  2. ^ "Usage Survey of Character Encodings broken down by Ranking". w3techs.com. Retrieved 2018-10-30.

  3. ^ "Conformance" (PDF). The Unicode Standard. 2018-06-01. Retrieved 2018-08-04.

  4. ^ a b c d e Becker, Joseph D. (1998-09-10) [1988-08-29]. "Unicode 88" (PDF). unicode.org (10th anniversary reprint ed.). Unicode-Konsortium. Archived (PDF) from the original on 2016-11-25. Retrieved 2016-10-25. In 1978, the initial proposal for a set of "Universal Signs" was made by Bob Belleville at Xerox PARC. Many persons contributed ideas to the development of a new encoding design. Beginning in 1980, these efforts evolved into the Xerox Character Code Standard (XCCS) by the present author, a multilingual encoding which has been maintained by Xerox as an internal corporate standard since 1982, through the efforts of Ed Smura, Ron Pellar, and others.
    Unicode arose as the result of eight years of working experience with XCCS. Its fundamental differences from XCCS were proposed by Peter Fenwick and Dave Opstad (pure 16-bit codes), and by Lee Collins (ideographic character unification). Unicode retains the many features of XCCS whose utility have been proved over the years in an international line of communication multilingual system products.


  5. ^ "Summary Narrative". Retrieved 2010-03-15.

  6. ^ History of Unicode Release and Publication Dates on unicode.org. Retrieved February 28, 2017.

  7. ^ Searle, Stephen J. "Unicode Revisited". Retrieved 2013-01-18.

  8. ^ "Glossary of Unicode Terms". Retrieved 2010-03-16.

  9. ^ "Appendix A: Notational Conventions" (PDF). The Unicode Standard. Unicode-Konsortium. June 2017.

  10. ^ a b "Unicode Character Encoding Stability Policy". Retrieved 2010-03-16.

  11. ^ "Properties" (PDF). Retrieved 2010-03-16.

  12. ^ "Unicode Character Encoding Model". Retrieved 2010-03-16.

  13. ^ "Unicode Named Sequences". Retrieved 2010-03-16.

  14. ^ "Unicode Name Aliases". Retrieved 2010-03-16.

  15. ^ a b "The Unicode Consortium Members". Retrieved 2019-01-04.

  16. ^ "Unicode 6.1 Paperback Available". announcements_at_unicode.org. Retrieved 2012-05-30.

  17. ^ "Enumerated Versions of The Unicode Standard". Retrieved 2016-06-21.

  18. ^ "Unicode Data 1.0.0". Retrieved 2010-03-16.

  19. ^
    "Unicode Data 1.0.1". Retrieved 2010-03-16.

  20. ^ "Unicode Data 1995". Retrieved 2010-03-16.

  21. ^ "Unicode Data-2.0.14". Retrieved 2010-03-16.

  22. ^ "Unicode Data-2.1.2". Retrieved 2010-03-16.

  23. ^ "Unicode Data-3.0.0". Retrieved 2010-03-16.

  24. ^ "Unicode Data-3.1.0". Retrieved 2010-03-16.

  25. ^ "Unicode Data-3.2.0". Retrieved 2010-03-16.

  26. ^ "Unicode Data-4.0.0". Retrieved 2010-03-16.

  27. ^ "Unicode Data-4.1.0". Retrieved 2010-03-16.

  28. ^ "Unicode Data 5.0.0". Retrieved 2010-03-17.

  29. ^ "Unicode Data 5.1.0". Retrieved 2010-03-17.

  30. ^ "Unicode Data 5.2.0". Retrieved 2010-03-17.

  31. ^ "Unicode Data 6.0.0". Retrieved 2010-10-11.

  32. ^ "Unicode Data 6.1.0". Retrieved 2012-01-31.

  33. ^ "Unicode Data 6.2.0". Retrieved 2012-09-26.

  34. ^ "Unicode Data 6.3.0". Retrieved 2013-09-30.

  35. ^ "Unicode Data 7.0.0". Retrieved 2014-06-15.

  36. ^ "Unicode 8.0.0". Unicode Consortium. Retrieved 2015-06-17.

  37. ^ "Unicode Data 8.0.0". Retrieved 2015-06-17.

  38. ^ "Unicode 9.0.0". Unicode Consortium. Retrieved 2016-06-21.

  39. ^ "Unicode Data 9.0.0". Retrieved 2016-06-21.

  40. ^ Lobao, Martim (7 June 2016). "These Are The Two Emoji That Weren't Approved For Unicode 9 But Which Google Added To Android Anyway". Android Police. Retrieved 4 September 2016.

  41. ^ "Unicode 10.0.0". Unicode Consortium. Retrieved 2017-06-20.

  42. ^ "The Unicode Standard, Version 11.0.0 Appendix C" (PDF). Unicode Consortium. Retrieved 2018-06-11.

  43. ^ "Announcing The Unicode® Standard, Version 11.0". blog.unicode.org. Retrieved 2018-06-06.

  44. ^ "Character Code Charts". Retrieved 2010-03-17.

  45. ^ "Roadmap to the BMP". Unicode Consortium. Retrieved 30 July 2018.

  46. ^ "About The Script Encoding Initiative". The Unicode Consortium. Retrieved 2012-06-04.

  47. ^ "UTF-8, UTF-16, UTF-32 & BOM". Unicode.org FAQ. Retrieved 12 December 2016.

  48. ^ The Unicode Standard, Version 6.2. The Unicode Consortium. 2013. p. 561. ISBN 978-1-936213-08-5.

  49. ^ CWA 13873:2000 – Multilingual European Subsets in ISO/IEC 10646-1 CEN Workshop Agreement 13873

  50. ^ Multilingual European Character Set 2 (MES-2) Rationale, Markus Kuhn, 1998

  51. ^ Hedley, Jonathan (2009). "Unicode Lookup".

  52. ^ Milde, Benjamin (2011). "Unicode Character Recognition".

  53. ^ Pike, Rob (2003-04-30). "UTF-8 history".

  54. ^ "ISO/IEC JTC1/SC 18/WG 9 N" (PDF). Retrieved 2012-06-04.

  55. ^ Wood, Alan. "Setting up Windows Internet Explorer 5, 5.5 and 6 for Multilingual and Unicode Support". Alan Wood. Retrieved 2012-06-04.

  56. ^ "Extensible Markup Language (XML) 1.1 (Second Edition)". Retrieved 2013-11-01.

  57. ^ A Brief History of Character Codes, Steven J. Searle, originally written 1999, last updated 2004

  58. ^ a b The secret life of Unicode: A peek at Unicode's soft underbelly, Suzanne Topping, 1 May 2001 (Internet Archive)

  59. ^
    AFII contribution about WAVE DASH,
    Unicode vendor-specific character table for Japanese


  60. ^ ISO 646-* ProblemSection 4.4.3.5 of Introduction to I18nTomohiro KUBOTA, 2001

  61. ^ "Arabic Presentation Forms-A" (PDF). Retrieved 2010-03-20.

  62. ^ "Arabic Presentation Forms-B" (PDF). Retrieved 2010-03-20.

  63. ^ "Alphabetic Presentation Forms" (PDF). Retrieved 2010-03-20.

  64. ^ China (2 December 2002). "Proposal on Tibetan BrdaRten Characters Encoding for ISO/IEC 10646 in BMP" (PDF).

  65. ^ V. S. Umamaheswaran (7 November 2003). "Resolutions of WG 2 meeting 44" (PDF). Resolution M44.20.

  66. ^ Unicode stability policy

  67. ^ a b "Unicode Technical Note #27: Known Anomalies in Unicode Character Names". unicode.org. 10 April 2017.

  68. ^ Unicode chart: "actually this has the form of a lowercase calligraphic p, despite its name"

  69. ^ "Misspelling of BRACKET in character name is a known defect"


Further reading[edit]



  • The Unicode Standard, Version 3.0The Unicode Consortium, Addison-Wesley Longman, Inc., April 2000. ISBN 0-201-61633-5

  • The Unicode Standard, Version 4.0The Unicode Consortium, Addison-Wesley Professional, 27 August 2003. ISBN 0-321-18578-1

  • The Unicode Standard, Version 5.0, Fifth EditionThe Unicode Consortium, Addison-Wesley Professional, 27 October 2006. ISBN 0-321-48091-0

  • Julie D. Allen. The Unicode Standard, Version 6.0The Unicode Consortium, Mountain View, 2011, ISBN 9781936213016, ([1]).

  • The Complete Manual of TypographyJames Felici, Adobe Press; 1st edition, 2002. ISBN 0-321-12730-7

  • Unicode: A PrimerTony Graham, M&T books, 2000. ISBN 0-7645-4625-2.

  • Unicode Demystified: A Practical Programmer's Guide to the Encoding StandardRichard Gillam, Addison-Wesley Professional; 1st edition, 2002. ISBN 0-201-70052-2

  • Unicode ExplainedJukka K. Korpela, O'Reilly; 1st edition, 2006. ISBN 0-596-10121-X

External links[edit]











No comments:

Post a Comment