So wird Unicode aktuell genutzt
Während im Oktober 1991 die Unicode-Version 1.0.0, mit 7.129 Code Points, veröffentlicht wurde, ist die aktuelle Version 14.0 im September 2021 erschienen und definiert ein Vielfaches an Code Points im Standard.
Dabei sind von Version zu Version immer wieder neue Zeichen hinzugekommen. Der Unicode-Standard legt fest, dass einmal eingebrachte Zeichen nie wieder aus dem Standard entfernt werden dürfen. Das bedeutet, dass gut überlegt werden muss, ob ein Zeichen wirklich dem Standard zugeschlagen wird.
Allerdings ist dies nicht immer so gewesen. In der Frühzeit des Standards bis einschließlich Version 2.0, erschienen im Juli 1996, wurde unter anderem das koreanische Alphabet in Version 2.0 entfernt und durch neue Zeichen an einer anderen Stelle in der Codeplane ersetzt. Auch in den vorherigen Versionen 1.1 und 1.0.1 wurden Zeichen entfernt.
Ab der Version 2.1 des Standards wurde sich von dieser Praxis gelöst und seitdem wird der Standard nur noch erweitert. Wird nun von der Nutzung eines Zeichens abgeraten, wird dieses im Unicode-Standard als "deprecated" gekennzeichnet.
Im Oktober 2010 wurden mit dem Unicode-Standard 5.2 nicht nur Symbole für Spielkarten und weitere Schriftsysteme hinzugefügt, auch Emojis kamen hinzu. Gab es ursprünglich 722 definierte Emojis, sind diese mittlerweile angewachsen und verfügen auch über die Unterstützung, unterschiedliche Hautfarben anzeigen zu können.
Mit Version 1.40 sind 144.697 Code Points definiert. Damit ist in etwa ein Siebtel des Codespaces belegt. Dass das klingonische Schriftsystem darunter sei, ist im Übrigen ein Gerücht. Allerdings werden klingonische Zeichen über die privaten Bereiche des Unicode-Codespaces genutzt. Für diese privaten Bereiche innerhalb des Codespace gibt es mit der Under-ConScript Unicode Registry eine Art informelle Registry.
Umsetzung in der IT
Standards und damit auch der Unicode-Standard sind nur dann sinnvoll, wenn sie umgesetzt und genutzt werden. Aktuelle Windows-Versionen und Mac-OS-Versionen nutzen für die interne Repräsentation von Unicode UTF-16, bei Linux ist es UTF-8. Damit ist die grundlegende Nutzung in den entsprechenden Betriebssystemen gegeben.
In den Betriebssystemen selbst gibt es für Nutzer unterschiedliche Möglichkeiten, Unicode-Zeichen einzusetzen. Viele Varianten arbeiten mit der Eingabe der entsprechenden ID des Code Points in dezimaler oder hexadezimaler Repräsentation in Verbindung mit einer Taste. Unter Windows kann die Alt-Taste in Verbindung mit der entsprechenden ID zur Eingabe genutzt werden. Auch unter Linux und Mac OS sind solche Eingaben möglich, wobei sie unter Mac OS explizit aktiviert werden müssen.
Daneben existieren in den Betriebssystemen auch entsprechende Applikationen, etwa die Zeichentabelle unter Windows, mit der Unicode-Zeichen über ein entsprechendes Interface herausgesucht und genutzt werden können.
Bei Programmiersprachen wie Java oder den auf .NET basierenden Sprachen wird intern ebenfalls mit UTF-16 gearbeitet. Unter Rust kann der primitive Typ einen Unicode scalar value speichern. Dieser entspricht einem Code Point; allerdings sind die sogenannten Low- und High-Surrogate, die für UTF-16 benötigt werden, hier nicht eingeschlossen.
Interessant ist auch die Betrachtung von Fonts in Bezug auf Unicode. Die erste Frage, die sich hier vielleicht stellt, ist, ob ein Font existiert, der alle Unicode-Zeichen unterstützt.
Schon aus technischen Gründen ist dies nicht möglich. So kann eine Truetype-Schriftart maximal 65.535 Glyphen enthalten. Auch im Opentype-Format ist eine solche Beschränkung enthalten.
Allerdings gibt es Font-Familien wie Noto, die von Google beauftragt wurde und mittlerweile über 77.000 Code Points des Unicode-Standards abdeckt. Daneben gibt es eine Reihe weiterer Fonts wie GNU Unifont oder WenQuanYi, die ebenfalls eine Vielzahl an Zeichen aus dem Unicode-Zeichensatz unterstützen.
Der Name der Schriftart-Familie Noto steht für No Tofu und spielt auf das Kästchen an, das angezeigt wird, wenn ein Font ein entsprechendes Unicode-Zeichen nicht enthält. Früher wurde hierbei häufig der Replacement Character, der sich in der Basic Multilingual Plane befindet, genutzt. Er zeigt eigentlich an, dass ein Zeichen nicht als valides Unicode-Zeichen erkannt werden konnte, also ein Kodierungsfehler vorliegt. Heutzutage wird für den Fall, dass ein valides Unicode-Zeichen vom Font nicht dargestellt werden kann, die .notdef-Glyphe des entsprechenden Fonts angezeigt.
Auch bei der softwareseitigen Unterstützung von Unicode gibt es hier und da Probleme. So wurden bis in die 2000er-Jahre hauptsächlich die Code Points aus der Basic Multilingual Plane unterstützt. Andere Planes waren nicht wirklich zugänglich.
Auch die Zusammensetzung von Zeichen aus mehreren Code Points wird von vielen Anwendungen nicht richtig beherrscht. Gebessert hat sich dies unter anderem durch den Standard GB 18030 der chinesischen Regierung, der ebenfalls die entsprechenden Zeichen aus der Codeplane unterstützt und damit ein Unicode Transformation Format darstellt. Dieser Standard definiert, welche Zeichen zwingend in entsprechenden Betriebssystemen und Anwendungen unterstützt werden müssen und brachte damit die Unicode-Unterstützung jenseits der Basic Multilingual Plane voran.
Bei Domainnamen hat sich Punycode durchgesetzt
Auch in anderen Anwendungen, wie zum Beispiel E-Mail, kann Unicode dank des MIME-Standards seit vielen Jahren genutzt werden. Für die Codierungen von Domainnamen mit Nicht-ASCII-Zeichen waren ebenfalls Unicode Transformation Formate in der Entwicklung (UTF-5, UTF-6), allerdings hat sich hier Punycode durchgesetzt.
Trotz der weiten Verbreitung der Unicode-Standards, kommt es immer wieder zu kleineren und größeren Problemen. So akzeptierte Outlook 2016 keine Passwörter mit Unicode-Zeichen und ein Schriftzeichen der Sprache Telugu führte zu Problemen unter iOS und Mac OS.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
- ohne Werbung
- mit ausgeschaltetem Javascript
- mit RSS-Volltext-Feed
Altlasten im Unicode | Kritik an Unicode und Ausblick |
Aach.. hier hat doch niemand Pointer auf Integer gecastet... sowas würden wir nie tun...
Ich muss deinen Titel korrigieren: Nicht Unicode ist kompliziert, die menschliche Sprache...
Wenn ich den Artikel richtig verstanden habe, dann sind die Planes Exx und Fxx für...
Das konnten Platten von Seagate* schon seit Jahrzehnten. "Sie geht, oder sie geht...
Kommentieren