Unicode muss für die Verarbeitung im Computer in Nullen und Einsen (Binärcode) übersetzt werden. Eine solche Umwandlung wird alsUnicode Transformation Format (UTF) bezeichnet. Durchgesetzt hat sich dabeiUTF-8. In einigen Fällen ist auch nochUTF-16 anzutreffen, speziell bei Betriebssystemen und Programmiersprachen, für die eine Verwendung von UTF-8 nicht so einfach ist.
HerkömmlicheComputer-Zeichensätze umfassen nur einen begrenzten Vorrat an Zeichen, bei westlichen Zeichenkodierungen liegt diese Grenze meistens bei 128 (7 Bit) Codepositionen – wie bei dem sehr bekanntenASCII-Standard – oder 256 (8 Bit) Positionen, wie z. B. beiISO 8859-1 (auch alsLatin-1 bekannt) oderEBCDIC. Davon sind nach Abzug derSteuerzeichen 95 Elemente bei ASCII und 191 Elemente bei den 8-Bit ISO-Zeichensätzen als Schrift- undSonderzeichen darstellbar. DieseZeichenkodierungen erlauben die gleichzeitige Darstellung nur weniger Sprachen im selben Text, wenn man sich nicht damit behilft, in einem Text verschiedene Schriften mit unterschiedlichenZeichensätzen zu verwenden. Das behinderte den internationalenDatenaustausch in den 1980er und 1990er Jahren erheblich.
ISO 2022[2] war ein erster Versuch, mehrere Sprachen mit nur einer Zeichenkodierung darstellen zu können. Die Kodierung benutztEscape-Sequenzen, um zwischen verschiedenen Zeichensätzen (z. B. zwischen Latin-1 und Latin-2) wechseln zu können. Das System setzte sich jedoch nur in Ostasien durch.[3]
Joseph D. Becker vonXerox schrieb 1988 den ersten Entwurf für einen universalen Zeichensatz. Dieser 16-Bit-Zeichensatz sollte nach den ursprünglichen Plänen lediglich die Zeichen moderner Sprachen kodieren:
“Unicode gives higher priority to ensuring utility for the future than to preserving past antiquities. Unicode aims in the first instance at the characters published in modern text (e.g. in the union of all newspapers and magazines printed in the world in 1988), whose number is undoubtedly far below 214 = 16,384. Beyond those modern-use characters, all others may be defined to be obsolete or rare, these are better candidates for private-use registration than for congesting the public list of generally-useful Unicodes.”
„Unicode legt größeren Wert darauf, die Verwendbarkeit für die Zukunft sicherzustellen, als vergangene Altertümlichkeiten zu erhalten. Unicode zielt in erster Linie auf alle Zeichen, die in modernen Texten veröffentlicht werden (etwa in allen Zeitungen und Zeitschriften der Welt des Jahres 1988), deren Anzahl zweifelsfrei weit unter 214 = 16.384 liegt. Weitere Zeichen, die über diese heutigen Zeichen hinausgehen, können als veraltet oder selten erachtet werden, diese sollten besser über einen privaten Modus registriert werden, statt die öffentliche Liste der allgemein nützlichen Unicodes zu überfüllen.“
Im Oktober 1991[5] wurde nach mehrjähriger Entwicklungszeit die Version 1.0.0 desUnicode-Standards veröffentlicht, die damals nur die europäischen, nahöstlichen und indischen Schriften kodierte.[6] Erst acht Monate später, nachdem dieHan-Vereinheitlichung abgeschlossen war, erschien Version 1.0.1, die erstmals ostasiatische Zeichen kodierte. Mit der Veröffentlichung von Unicode 2.0 im Juli 1996 wurde der Standard von ursprünglich 65.536 auf die heutigen 1.114.112 Codepunkte, vonU+0000 bisU+10FFFF erweitert.[7]
7 neue Schriften, 3995ägyptische Hieroglyphen, über 700 Zeichen aus Zeichensätzen historischer Computer.
Die Veröffentlichung neuer Versionen nimmt teilweise einen längeren Zeitraum in Anspruch, sodass zum Veröffentlichungszeitpunkt zunächst nur die Zeichentabellen und einzelne Teile der Spezifikation fertiggestellt sind, während die endgültige Veröffentlichung der Hauptspezifikation erst einige Zeit später erfolgt.
Das Unicode-Konsortium stellt mehrere Dokumente zur Unterstützung von Unicode bereit. Neben dem eigentlichen Zeichensatz sind dies weitere Dokumente, die zwar nicht zwingend notwendig, aber dennoch hilfreich zur Interpretation des Unicode-Standards sind.
Im Gegensatz zu früheren Zeichenkodierungen, die meist nur ein bestimmtes Schriftsystem kodierten, ist es das Ziel von Unicode, alle in Gebrauch befindlichen Schriftsysteme und Zeichen zu kodieren.[38] Der Zeichenumfang ist dazu in 17Ebenen (englischplanes) gegliedert, welche jeweils 216 = 65.536 Codepoints umfassen.[39] Sieben dieser Ebenen werden bereits verwendet, die restlichen sind für spätere Nutzung reserviert.
Innerhalb dieser Ebenen werden zusammengehörende Zeichen in Blöcken (engl.blocks) zusammengefasst. Meist behandelt ein Unicodeblock ein Schriftsystem, aus historischen Gründen hat sich allerdings ein gewisses Maß anFragmentierung eingestellt. Oft wurden später noch Zeichen hinzugefügt und in anderen Blöcken als Ergänzung untergebracht.[40]
DieBasic Multilingual Plane (BMP;deutschMehrsprachige Basis-Ebene, auch alsPlane 0 bezeichnet) enthält hauptsächlich Schriftsysteme, die aktuell in Gebrauch sind, Satzzeichen und Symbole, Steuerzeichen undUTF-16-Surrogate-Paare, und einen privat nutzbaren Bereich(PUA).[39] Die Ebene ist stark fragmentiert und weitgehend belegt, sodass neu zu codierende Schriftsysteme hier keinen Platz mehr finden. Der Zugriff auf andere Ebenen als der BMP ist in manchen Programmen noch nicht oder nur eingeschränkt möglich.
DieSupplementary Multilingual Plane (SMP; dt.Ergänzende mehrsprachige Ebene, auch alsPlane 1 bezeichnet) wurde mit Unicode 3.1 eingeführt. Sie enthält vor allem historische Schriftsysteme, aber auch größere Ansammlungen an Zeichen, die selten in Gebrauch sind, wie z. B.Domino- undMah-Jonggsteine undEmoji. Mittlerweile werden auch Schriftsysteme in der SMP codiert, die noch in Benutzung sind, aber in der BMP keinen Platz mehr finden.[39]
DieSupplementary Ideographic Plane (SIP; dt.Ergänzende ideographische Ebene, auch alsPlane 2 bezeichnet), die ebenfalls mit Unicode 3.1 eingeführt wurde, enthält ausschließlichCJK-Schriftzeichen, die selten benutzt werden, dazu zählen unter anderem auch dieChữ Nôm, die früher inVietnam benutzt wurden.[39]
DieSupplementary Special-purpose Plane (SSP; dt.Ergänzende Ebene für spezielle Verwendungen, auch alsPlane 14 bezeichnet) enthält einige wenige Steuerzeichen zur Sprachmarkierung.[39]
Die letzten beiden Ebenen, jeweilsSupplementary Private Use Area-A und-B (PUA; auchPlane 15 undPlane 16), stehen als privat nutzbare Bereiche(PUA) zur Verfügung.[40] Sie werden teilweise auch alsPrivate Use Planes[42] (PUP) bezeichnet.
Jedes im Unicode-Standard codierte elementare Zeichen ist einemCodepunkt (engl.code points) zugeordnet. Diese werden üblicherweisehexadezimal (mindestens vierstellig, d. h. ggf. mit führenden Nullen) und mit einem vorangestelltenU+ dargestellt, z. B.U+00DF für das ß.[43]
Der gesamte vom Unicode-Standard beschriebene Bereich umfasst 1.114.112 Codepunkte (U+0000 … U+10FFFF, 17 Ebenen zu je 216, d. h. 65536 Zeichen). Davon lässt der Standard jedoch einige Bereiche zur Zeichenkodierung nicht zu:
2048 Codepunkte im Bereich U+D800 … U+DFFF werden als Teile von Surrogate-Paaren im KodierungsschemaUTF-16 zur Darstellung von Codepunkten oberhalb der BMP (also im Bereich U+10000 … U+10FFFF) verwendet und stehen deshalb nicht selbst als Codepunkt für einzelne Zeichen zur Verfügung.
66 Codepunkte, 32 im Bereich U+FDD0 … U+FDEF sowie je 2 am Ende jeder der 17 Ebenen (also U+FFFE, U+FFFF, U+1FFFE, U+1FFFF, …, U+10FFFE, U+10FFFF) sind fürprocess-internal uses reserviert und nicht für die Verwendung als einzelne Zeichen vorgesehen.
Somit stehen für die Zeichencodierung insgesamt 1.111.998 Codepunkte zur Verfügung. Die Anzahl der tatsächlich zugewiesenen Codepunkte ist jedoch deutlich geringer; eine Übersicht, wie viele Codepunkte in den verschiedenen Versionen jeweils zugewiesen sind und wofür sie genutzt werden, bieten die Tabellen D-2 und D-3 im Anhang D des Unicode-Standards.[44]
Spezielle Bereiche sind für private Nutzung reserviert, d. h. in diesen werden niemals Codepunkte für in Unicode standardisierte Zeichen zugewiesen. Diese können fürprivat definierte Zeichen verwendet werden, die zwischen den Erzeugern und Verwendern der Texte, die sie enthalten, individuell abgesprochen sein müssen. Diese Bereiche sind:
in der BMP: U+E000 … U+F8FF
in anderen Ebenen: U+F0000 … U+FFFFD und U+100000 … U+10FFFD
Es haben sich für verschiedene Anwendungen spezielle Konventionen entwickelt, die speziell für den PUA-Bereich der BMP Zeichenbelegungen vorgeben. Zum einen finden sich hier häufigprecomposed characters aus Grundzeichen unddiakritischen Zeichen, da in vielen (speziell älteren) Software-Anwendungen nicht davon ausgegangen werden kann, dass solche Zeichen gemäß den Unicode-Regeln bei Eingabe als Folge aus Grundzeichen und diakritischem Zeichen korrekt dargestellt werden. Zum anderen finden sich Zeichen, die nicht den Regeln für eine Aufnahme in Unicode entsprechen, oder deren Beantragung zur Aufnahme in Unicode aus anderen Gründen erfolglos war oder unterblieb. So findet sich in vielen Fonts auf der Position U+F000 ein Hersteller-Logo (Logos werden in Unicode prinzipiell nicht codiert).
Neben dem eigentlichen Zeichensatz, der jedem Zeichen eine Nummer zuordnet, definiert Unicode auch mehrere Verfahren, um Zeichen in Computern zu speichern. Sie werdenUnicode Transformation Format (kurzUTF) genannt. Die verbreitetsten Varianten sind:
UTF-16, das die Codepunkte als Folgen von 16-Bit-Zahlen kodiert. Es wird als interne Zeichendarstellung von einigen Betriebssystemen (Windows,[49] OS X) und Softwareentwicklungs-Frameworks (Java,[50].NET[51]) verwendet.
UTF-8, das die Codepunkte als Folgen von 8-Bit-Zahlen (Byte) kodiert. Es wird in Betriebssystemen (GNU/Linux, Unix) sowie in verschiedenen Internetdiensten (E-Mail, WWW) verwendet.
Neben den von Unicode standardisierten Verfahren gibt es noch:
Punycode, das die Codepunkte als Zeichenfolgen kodiert, die nur aus den Zeichen a bis z, 0 bis 9 und dem Bindestrich bestehen. Durch diese Kodierung könnenDomainnamen mit Nicht-ASCII-Zeichen verwendet werden.
Viele Zeichen, die im Unicode-Standard enthalten sind, sind sogenannte Kompatibilitätszeichen, die aus Unicode-Sicht bereits mit anderen in Unicode kodierten Zeichen bzw. Zeichensequenzen dargestellt werden können, so z. B. die deutschen Umlaute, die theoretisch mit einer Sequenz aus dem Basisbuchstaben und einem kombinierendenTrema (horizontaler Doppelpunkt) dargestellt werden können. Bei derUnicode-Normalisierung werden die Kompatibilitätszeichen automatisch durch die in Unicode vorgesehenen Sequenzen ersetzt. Dies erleichtert die Verarbeitung von Unicode-Texten erheblich, da so nur eine mögliche Kombination für ein bestimmtes Zeichen steht, und nicht mehrere verschiedene.
Für viele Schriftsysteme sind die Zeichen in Unicode nicht in einer Reihenfolge codiert, die einer bei den Anwendern dieses Schriftsystems üblichen Sortierung entspricht. Deshalb kann bei einer Sortierung z. B. in einerDatenbankanwendung üblicherweise nicht die Reihenfolge der Codepunkte verwendet werden. Außerdem sind die Sortierungen in vielen Schriftsystemen von komplexen, kontextabhängigen Regelungen geprägt. Hier definiert derUnicode Collation Algorithm, wie Zeichenfolgen innerhalb eines bestimmten Schriftsystems oder auch schriftsystemübergreifend sortiert werden können.
In vielen Fällen ist jedoch die tatsächlich anzuwendende Reihenfolge von anderen Faktoren (z. B. der verwendeten Sprache) abhängig (z. B. sortiert „ä“ im Deutschen anwendungsabhängig wie „ae“ oder „a“, imSchwedischen jedoch hinter „z“ und „å“), sodass der Unicode-Sortierungsalgorithmus dann anzuwenden ist, wenn die Sortierung nicht von spezielleren Rahmenbedingungen bestimmt wird.
Dasgemeinnützige Unicode-Konsortium wurde 1991 gegründet und ist für denIndustriestandard Unicode verantwortlich. Von der ISO (Internationale Organisation für Normung) wird in Zusammenarbeit mitIEC die internationaleNormISO 10646 herausgegeben. Beide Institutionen arbeiten eng zusammen. Seit 1993 sind Unicode und ISO 10646 bezüglich der Zeichenkodierung praktisch identisch. Während ISO 10646 lediglich die eigentliche Zeichenkodierung festlegt, gehört zum Unicode ein umfassendes Regelwerk, das unter anderem für alle Zeichen weitere zur konkreten Anwendung wichtige Eigenschaften (sogenannte Properties) eindeutig festlegt wie Sortierreihenfolge, Leserichtung und Regeln für das Kombinieren von Zeichen.[52]
Seit einiger Zeit entspricht der Codeumfang von ISO 10646 exakt dem von Unicode, da auch dort der Codebereich auf 17 Ebenen, darstellbar mit 21 Bit, beschränkt wurde.[53]
Gegenüber anderen Normen gibt es bei Unicode die Besonderheit, dass einmal kodierte Zeichen niemals wieder entfernt werden, um die Langlebigkeit digitaler Daten zu gewährleisten.[54] Sollte sich die Normierung eines Zeichens nachträglich als Fehler erweisen, wird allenfalls von seiner Verwendung abgeraten. Daher bedarf die Aufnahme eines Zeichens in den Standard einer äußerst sorgfältigen Prüfung, die sich über Jahre hinziehen kann.
Im Unicode werden lediglich „abstrakte Zeichen“ (englisch:characters) kodiert, nicht dagegen die grafische Darstellung (Glyphen) dieser Zeichen, die von Schriftart zu Schriftart extrem unterschiedlich ausfallen kann, beim lateinischen Alphabet etwa in Form derAntiqua,Fraktur, deririschen Schrift oder der verschiedenenHandschriften.[55] Für Glyphenvarianten, deren Normierung als sinnvoll und notwendig nachgewiesen wird, sind dabei allerdings vorsorglich 256 „Variation Selectors“ reserviert, die ggf. dem eigentlichen Code nachgestellt werden können. In vielen Schriftsystemen können Zeichen außerdem je nach Position unterschiedliche Formen annehmen oder Ligaturen bilden. Von Ausnahmen abgesehen (z. B. Arabisch) werden solche Varianten ebenfalls nicht in den Unicode-Standard übernommen, sondern es wird eine sogenannte Smartfont-Technik wieOpenType vorausgesetzt, die die Formen angemessen ersetzen kann.
Andererseits werden identische Glyphen, wenn sie verschiedene Bedeutungen haben, auch mehrfach kodiert, etwa die Glyphen А, В, Е, K, М, Н, О, Р, Т und Х, die – mit zum Teil unterschiedlicher Bedeutung – sowohl im lateinischen als auch im griechischen und kyrillischen Alphabet vorkommen.
In Grenzfällen wird hart um die Entscheidung gerungen, ob es sich um Glyphenvarianten oder tatsächlich unterschiedliche, einer eigenen Kodierung würdige Zeichen (Grapheme) handelt. Beispielsweise sind nicht wenige Fachleute der Meinung, man könne dasphönizische Alphabet als Glyphenvarianten deshebräischen Alphabets betrachten, da der gesamte Zeichenvorrat desPhönizischen dort eindeutige Entsprechungen hat und auch beideSprachen sehr eng miteinander verwandt sind. Letztlich durchgesetzt hat sich allerdings schließlich die Auffassung, es handele sich um separateZeichensysteme, in der Unicode-Terminologie „scripts“ genannt.[56]
Anders verhält es sich beiCJK (Chinesisch,Japanisch undKoreanisch): Hier haben sich in den letzten Jahrhunderten die Formen vieler gleichbedeutender Schriftzeichen auseinanderentwickelt. Dennoch teilen sich die sprachspezifischen Glyphen dieselben Codes im Unicode (mit Ausnahme einiger Zeichen aus Kompatibilitätsgründen). In der Praxis werden hier überwiegend sprachspezifischeSchriftarten verwendet, wodurch der Platzbedarf der Schriften zusammen hoch ist. Die einheitliche Kodierung der CJK-Schriftzeichen (Han Unification) war eine der wichtigsten und umfangreichsten Vorarbeiten für die Entwicklung von Unicode. Besonders in Japan ist sie durchaus umstritten.
Als derGrundstein für Unicode gelegt wurde, musste berücksichtigt werden, dass bereits eine Vielzahl unterschiedlicher Kodierungen im Einsatz waren. Unicode-basierte Systeme sollten herkömmlich kodierte Daten mit geringem Aufwand handhaben können. Dazu wurde für die unteren 256 Zeichen die weit verbreiteteISO-8859-1-Kodierung (Latin1) ebenso wie die Kodierungsarten verschiedener nationaler Normen beibehalten, z. B.TIS-620 für Thailändisch (fast identisch mitISO 8859-11) oderISCII fürindische Schriften, die in der ursprünglichen Reihenfolge lediglich in höhere Bereiche verschoben wurden.
Jedes Zeichen maßgeblicher überkommener Kodierungen wurde in den Standard übernommen, auch wenn es den normalerweise angelegten Maßstäben nicht gerecht wird. Hierbei handelt es sich zu einem großen Teil um Zeichen, die aus zwei oder mehr Zeichen zusammengesetzt sind, wie Buchstaben mitdiakritischen Zeichen. Im Übrigen verfügt auch heute noch ein großer Teil der Software nicht über die Möglichkeit, Zeichen mit Diakritika ordentlich zusammenzusetzen. Die exakte Festlegung von äquivalenten Kodierungen ist Teil des zum Unicode gehörenden umfangreichen Regelwerks.
Darüber hinaus gibt es viele Unicode-Zeichen, denen keine Glyphe zugeordnet ist und die trotzdem als „characters“ behandelt werden. So sind nebenSteuerzeichen wie demTabulatorzeichen (U+0009), dem Zeilenvorschub (U+000A) usw. allein 19 verschiedene Zeichen explizit als Leerzeichen definiert, sogar solche ohne Breite, die u. a. für Sprachen wieThai, die ohne Wortzwischenraum geschrieben werden, als Worttrenner eingesetzt werden. Fürbidirektionalen Text, z. B.Arabisch mitLateinisch, sind sieben Formatierungszeichen kodiert. Darüber hinaus gibt es weitere unsichtbare Zeichen, die nur unter bestimmten Umständen ausgewertet werden sollen, etwa derCombining Grapheme Joiner.
DieDIN 91379 definiert eine Teilmenge der Unicode-Buchstaben, Sonderzeichen und Sequenzen von Grundbuchstaben und diakritischen Zeichen,um eine korrekte Darstellung von Namen zu gewährleisten und den Datenaustausch in Europa zu vereinfachen. Sie unterstützt alle Amtssprachen der Länder der Europäischen Union, Islands, Liechtensteins, Norwegens und der Schweiz sowie die deutschen Minderheitensprachen. Um die Transliteration von Namen in anderen Schriftsystemen in die lateinische Schrift gemäß den einschlägigen ISO-Normen zu ermöglichen, werden alle notwendigen Kombinationen von Grundbuchstaben und diakritischen Zeichen bereitgestellt.[57]
UnterWindows (abWindows 2000) kann in einigen Programmen (genauer in RichEdit-Feldern) der Code dezimal alsAlt+<dezimales Unicode> (bei eingeschaltetemNum-Lock) auf dem numerischen Tastaturfeld eingegeben werden. Dabei ist jedoch zu beachten, dass Zeichennummern kleiner als 1000 um eine führende Null zu ergänzen sind (z. B.Alt+0234 für Codepoint 23410 [ê]). Diese Maßnahme ist notwendig, da die (immer noch in Windows verfügbare) EingabemethodeAlt+<ein- bis dreistellige dezimale Zeichennummer ohne führende Null> bereits inMS-DOS-Zeiten genutzt wurde, um die Zeichen derCodepage 850 (vor allem bei früheren MS-DOS-Versionen auchCodepage 437) einzugeben.
Eine weitere Eingabemethode setzt voraus, dass in derRegistrierungsdatenbank im SchlüsselHKEY_CURRENT_USER\Control Panel\Input Method ein Eintrag (Wert) vom Typ REG_SZ („Zeichenfolge“) namensEnableHexNumpad existiert und ihm der Wert (das Datum)1 zugewiesen ist. Nach dem Editieren der Registry müssen Benutzer sich unter Windows 8.1, Windows 8, Windows 7 und Vista vom Windows-Benutzerkonto ab- und wieder anmelden, bei früheren Windows-Versionen ist ein Neustart des Rechners notwendig, damit die Änderungen in der Registry wirksam werden.Danach können Unicode-Zeichen wie folgt eingegeben werden: Zuerst die (linke) Alt-Taste drücken und halten, dann auf demZiffernblock die Plus-Taste drücken und wieder loslassen und anschließend denhexadezimalen Code des Zeichens eingeben, wobei für Ziffern der Ziffernblock verwendet werden muss. Abschließend die Alt-Taste wieder loslassen.
Zwar funktioniert diese Eingabemethode prinzipiell in jedem Eingabefeld jedes Windows-Programms, allerdings kann es vorkommen, dassSchnellzugriffstasten für Menüfunktionen die Eingabe hexadezimaler Codepunkte verhindern: Will man beispielsweise den BuchstabenØ (U+00D8) eingeben, so führt die KombinationAlt+D in vielen Programmen dazu, dass stattdessen das MenüDatei geöffnet wird.
Ein weiterer Nachteil besteht darin, dass Windows hier die explizite Angabe der (intern in Windows verwendeten)UTF-16-Codierung statt der Unicode-Kodierung selbst verlangt[58] und daher nur die Eingabe vierstelliger Codewerte zulässt; für Zeichen, die oberhalb derBMP liegen und über Codepunkte mit fünf- oder sechsstelliger Hexadezimaldarstellung verfügen, sind stattdessen sogenannteSurrogate Pairs zu verwenden, bei denen ein fünf- oder sechsstelliger Codepunkt auf zwei je vierstellige Ersatzcodepunkte abgebildet wird. So ist etwa derViolinschlüssel 𝄞 (U+1D11E) als hexadezimales UTF-16-Wertpaar D834 und DD1E einzugeben; eine direkte Eingabe fünf- oder sechsstelliger Codepunkte ist hier also nicht möglich.
BeiApplemacOS muss die Eingabe von Unicode-Zeichen als Sonderfall zuerst über die Systemeinstellungen „Tastatur“ aktiviert werden.[59] Hierzu ist im Dialog Registerkarte „Eingabequellen“ über das Plus-Symbol die „Unicode-Hex-Eingabe“ hinzuzufügen. Diese befindet sich unter dem Oberpunkt „Andere“. Danach kann der Unicode-Wert bei gedrückter⌥Option-Taste mit dem vierstelligen Hex-Code des Unicode-Zeichens eingegeben werden; sollte der Hexcode kleiner als vierstellig sein, so müssen führende Nullen eingegeben werden.[59] Sollte der Hexcode fünfstellig sein, so ist keine unmittelbare Eingabe per Tastatur möglich und es muss über den Dialog „Zeichenübersicht“ ausgewählt werden.[60] Wenn die Unicode-Hex-Eingabe aktiviert ist, dann liegt keine deutschsprachige Tastaturbelegung vor (u. a. für Umlaute), so dass zwischen beiden Tastatur-Modi gewechselt werden muss. Der jeweilige Status der Tastaturbelegung lässt sich per Zusatzoption in der Menüzeile einblenden.[60]
Alternativ kann durch die Kombination⌃ctrl+⌘cmd+␣Leertaste (in den Tastatureinstellungen kann auch die🌐Fn-Taste damit belegt werden) unabhängig von der Tastaturbelegung das Fenster „Emoji & Symbol“ geöffnet werden, in dessen Suchfeld mit vorangestelltem „u+“ nach dem entsprechenden Hexcode gesucht werden kann.[61] Von dort gelangt man durch Klick auf das Fenster-Symbol auch auf die „Erweiterte Zeichenübersicht“, die die eine nach Kategorien geordnete Auswahl von Zeichen bietet und das gezielte Suchen und Einfügen seltener Zeichen ermöglicht.
UnterMicrosoft Office (ab Office XP) kann Unicode auch hexadezimal eingegeben werden, indem im Dokument <Unicode> oder U+<Unicode> eingetippt wird und anschließend die TastenkombinationAlt+c, bzw. in DialogfeldernAlt+x, gedrückt wird. Diese Tastenkombination kann auch benutzt werden, um den Code des vor dem Cursor stehenden Zeichens anzuzeigen.[62] (LibreOffice hat eine ähnliche Funktion mit der TastenkombinationAlt+c oderAlt+x.[63]) Eine alternative Möglichkeit, welche auch in älteren Versionen funktioniert, ist, mit „Einfügen“ – „Sonderzeichen“ eine Tabelle mit Unicode-Zeichen aufzurufen, darin mit dem Cursor ein gewünschtes auszusuchen und in den Text einzufügen. Das Programm ermöglicht auch, für häufiger benötigte Zeichen Makros festzulegen, die dann mit einer Tastenkombination abgerufen werden können.
GTK,Qt und alle darauf basierenden Programme und Umgebungen (wie beispielsweise dieDesktop-UmgebungGnome) unterstützen die Eingabe über die KombinationStrg+Umschalttaste bzw. in neueren VersionenStrg+U bzw.Strg+Umschalttaste+u. Nach dem Drücken der Tasten erscheint ein unterstrichenes kleines u. Danach kann der Unicode in hexadezimaler Form eingegeben werden und wird auch unterstrichen, damit man erkennen kann, was zum Unicode gehört. Nach einem Druck derLeer- oderEingabetaste erscheint dann das entsprechende Zeichen. In Desktop-Umgebungen, welche nicht auf GTK basieren, beispielsweiseKDE, wird diese Funktionalität durch Installation desIBus-Frameworks ermöglicht.
Screenshot der freien Zeicheneingabe-Software BabelMap
SeitWindows NT 4.0 ist das Programmcharmap.exe, genanntZeichentabelle, in Windows integriert. Mit diesem Programm ist über eine grafische Benutzeroberfläche möglich, Unicode-Zeichen einzufügen. Außerdem bietet es ein Eingabefeld für den Hexadezimalcode.
UntermacOS steht unterEinfügen →Sonderzeichen ebenfalls eine systemweite Zeichenpalette bereit.
Diefreien Programmegucharmap (fürWindows undLinux/Unix) undkcharselect (für Linux/UNIX) stellen den Unicode-Zeichensatz auf dem Bildschirm dar und bieten zusätzliche Informationen zu den einzelnen Zeichen.
Ein komfortables Zeicheneingabeprogramm für Microsoft Windows ist das kostenfrei verfügbareBabelMap[64] in der Zeichenfolgen durch Klicks zusammengestellt und anschließend zum Einfügen in andere Programme kopiert werden können. Es bietet auch Suche nach dem Unicode-Codewert oder dem Unicode-Zeichennamen und kann zuCJK-Zeichen erweiterte Information anzeigen.
HTML undXML unterstützen Unicode mit Zeichencodes, die unabhängig vom eingestellten Zeichensatz das Unicode-Zeichen darstellen. Die Notation lautet� für dezimale Notation bzw.� für hexadezimale Notation, wobei das 0000 die Unicode-Nummer des Zeichens darstellt. Für bestimmte Zeichen sind auchbenannte Zeichen (engl.named entities) definiert, so z. B. stelltä das ä dar,[65] das gilt allerdings nur für HTML; XML und das davon abgeleiteteXHTML definieren benannte Notationen nur für die Zeichen, die bei normalem Gebrauch als Teile der Auszeichnungssprache interpretiert würden, also< als<,> als>,& als& und" als".
Unicode wird vor allem aus den Reihen der Wissenschaftler und in ostasiatischen Ländern kritisiert. Einer der Kritikpunkte ist hierbei dieHan-Vereinheitlichung; aus ostasiatischer Sicht werden bei diesem Vorgehen Schriftzeichen verschiedener nicht verwandter Sprachen vereinigt.[66] Unter anderem wird kritisiert, dass antike Texte in Unicode aufgrund dieser Vereinheitlichung ähnlicher CJK-Schriftzeichen nicht originalgetreu wiedergegeben werden können.[67] Aufgrund dessen wurden in Japan zahlreiche Alternativen zu Unicode entwickelt, wie etwa derMojikyō-Standard.
Die Kodierung derthailändischen Schrift wird teilweise kritisiert, weil sie anders als alle anderen Schriftsysteme in Unicode nicht auf logischer, sondern visueller Reihenfolge basiert, was unter anderem die Sortierung thailändischer Wörter erheblich erschwert.[66] Die Unicode-Kodierung basiert auf dem thailändischen StandardTIS-620, der ebenfalls die visuelle Reihenfolge verwendet.[68] Umgekehrt wird die Kodierung der indischen Schriften manchmal als „zu kompliziert“ bezeichnet, vor allem von Vertretern derTamil-Schrift. Das Modell separater Konsonanten- und Vokalzeichen, welches Unicode vom indischen StandardISCII übernommen hat,[69] wird von jenen abgelehnt, die separate Codepunkte für alle möglichen Konsonant-Vokal-Verbindungen bevorzugen.[70] Die Regierung derVolksrepublik China machte einen ähnlichen Vorschlag, die tibetische Schrift als Silbenfolgen anstatt als einzelne Konsonanten und Vokale zu kodieren.[71]
Ob das entsprechende Unicode-Zeichen auch tatsächlich auf dem Bildschirm erscheint, hängt davon ab, ob die verwendeteSchriftart eineGlyphe für das gewünschte Zeichen (also eine Grafik für die gewünschte Zeichennummer) enthält. Oftmals, z. B. unter Windows, wird, falls die verwendete Schrift ein Zeichen nicht enthält, nach Möglichkeit ein Zeichen aus einer anderen Schrift eingefügt.
Mittlerweile hat der Coderaum von Unicode/ISO einen Umfang angenommen (mehr als 100.000 Schriftzeichen), der sich nicht mehr vollständig in einer Schriftdatei unterbringen lässt. Die heute gängigsten Schriftdateiformate,TrueType undOpenType, können maximal 65.536 Glyphen enthalten. Unicode/ISO-Konformität einer Schrift bedeutet also nicht, dass der komplette Zeichensatz enthalten ist, sondern lediglich, dass die darin enthaltenen Zeichen normgerecht kodiert sind.
Spätestens seit Beginn der 2020er Jahre liefern aktuelleBetriebssysteme (wieLinux,Microsoft Windows,MacOS)Schriftarten mit, die einen Großteil der Zeichen der jeweils aktuellen Unicode-Version unterstützen. Spezielle zusätzliche Fonts sind dann nur noch für eher selten verwendeteSchriftsysteme oder Sonderzeichenkollektionen notwendig; eine Auswahl solcher Fonts bietet beispielsweiseGoogle mit seinerNoto-Fonts-Sammlung zur kostenfreien Nutzung.[72]
Eine Ersatzschriftart dient der Ersatzdarstellung für Zeichen, für die kein Font mit korrekter Darstellung zur Verfügung steht.
Hier gibt z. B. folgende Fonts:
Unicode BMP Fallback SIL, eine von SIL International erstellte Ersatzschriftart, welche alle in Version 6.1 definierten Zeichen der Ebene null (BasicMultilingualPlane) als Quadrat mit einbeschriebenem Hex-Code darstellt. Zu finden untersil.org.
LastResort, designt vonMichael Everson, eine inMac OS 8.5 und höher enthaltene Ersatzschriftart, welche die erste Glyphe eines Blocks für alle Zeichen des Blocks verwendet. Frei herunterladbar vonunicode.org.
Johannes Bergerhausen, Siri Poarangan:decodeunicode: Die Schriftzeichen der Welt. Hermann Schmidt, Mainz 2011,ISBN 978-3-87439-813-8 (Alle 109.242 Unicode-Zeichen in einem Buch.).
Julie D. Allen:The Unicode Standard, version 6.0. The Unicode Consortium. The Unicode Consortium, Mountain View 2011,ISBN 978-1-936213-01-6 (Online-Version).
Richard Gillam:Unicode Demystified: a practical programmer’s guide to the encoding standard. Addison-Wesley, Boston 2003,ISBN 0-201-70052-2.
The World’s Writing Systems. worldswritingsystems.org, 2022, abgerufen am 21. September 2025 (alle 293 laut dieser Website bekannten Schriftsysteme mit je einer Referenz-Glyphe, darunter die (mit Stand Unicode-Version 15.0 vom September 2022) 128 noch nicht in Unicode kodierten).
↑Unicode 6.3 Kapitel 2.8, Seite 34, erster Absatz (da die Core-Spezifikation für Version 6.3 nicht verändert und auch nicht neu veröffentlicht wurde, gelten die Dateien von Version 6.2 für 6.3 unverändert weiter.)
↑Unicode 6.3 Anhang D, Seite 602, Tabellen D-2 und D-3 (da die Core-Spezifikation für Version 6.3 nicht verändert und auch nicht neu veröffentlicht wurde, gelten die Dateien von Version 6.2 für 6.3 unverändert weiter.)
↑abSuzanne Topping: The secret life of Unicode. IBM DeveloperWorks, 1. Mai 2001, archiviert vom Original am 14. November 2007; abgerufen am 7. November 2015 (englisch).
↑Otfried Cheong: Han Unification in Unicode. 12. Oktober 1999, archiviert vom Original am 28. März 2010; abgerufen am 7. November 2015 (englisch).