Unicode

internationaler Standard zur Definition aller Schriftzeichen mit einem digitalen Code
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 13. April 2008 um 21:36 Uhr durch Liliana-60 (Diskussion | Beiträge) (Gliederung in Ebenen und Blöcke: ausgelagerte Tabelle entfernt, neu geschrieben). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Unicode [ˈjuːnɪkoʊd] ist ein internationaler Standard, in dem langfristig für jedes sinntragende Zeichen bzw. Textelement aller bekannten Schriftkulturen und Zeichensysteme ein digitaler Code festgelegt wird. Ziel ist es, das Problem unterschiedlicher, inkompatibler Kodierungen in unterschiedlichen Ländern oder Kulturkreisen zu beseitigen.

Datei:Unicode logo.jpg
Logo von Unicode

Unicode wird laufend um Zeichen weiterer Schriftsysteme ergänzt.

ISO 10646 ist die von ISO verwendete praktisch bedeutungsgleiche Bezeichnung des Unicode-Zeichensatzes; er wird dort als Universal Character Set (UCS) bezeichnet.

Hintergrund

Herkömmliche Computer-Zeichencodes umfassen einen Zeichenvorrat von entweder 128 (7 Bit) Codepositionen wie der sehr bekannte ASCII-Standard oder 256 (8 Bit) Positionen, wie z. B. ISO 8859-1 (auch als Latin-1 bekannt), wovon nach Abzug der Steuerzeichen 96 Elemente bei ASCII und 192 bis 224 Elemente bei den 8-Bit ISO-Zeichensätzen als Schrift- und Sonderzeichen darstellbar sind. Diese Zeichenkodierungen erlauben die gleichzeitige Darstellung nur weniger Sprachen im selben Text, wenn man sich nicht damit behilft, in einem Text verschiedene Schriften mit unterschiedlichen Zeichensätzen zu verwenden. Dies behinderte den internationalen Datenaustausch in den 1980er und 1990er Jahren erheblich.

Daraufhin wurde 1990 nach mehrjähriger Entwicklungszeit die erste Version des Unicode-Standards veröffentlicht, das damals gerade mal die europäischen, nahöstlichen und indischen Schriften kodierte.[1] Erst mit der nächsten Version, nachdem die Han-Vereinheitlichung abgeschlossen war, wurden auch chinesische Zeichen in Unicode aufgenommen und damit der Standard mit ISO 10646 synchronisiert.

Codes, Speicherung und Übertragung

Die Codes von Unicode-Zeichen – auch „Codepoint“ genannt – werden hexadezimal mit vorangestelltem „U+“ dargestellt. Hierbei kann „x“ als Platzhalter verwendet werden, wenn zusammenhängende Bereiche gemeint sind, wie „U+01Fx“ für den Codebereich U+01F0 bis U+01FF.

Der Coderaum von Unicode umfasste ursprünglich 65.536 Zeichen (UCS-2, 16 Bit). Bald aber stellte sich dieses als unzureichend heraus. In Version 2.0 wurde das Konzept der Planes (Ebenen) eingeführt. Sie bilden ein Präfix zu den bisherigen, 16 Bit langen Codepoints und vervielfachen so die Menge der unterscheidbaren Codepoints. Mit Version 3.1 des Unicode-Standards wurde die Zahl der benutzten Planes außer der BMP auf 16 festgelegt, somit sind nun maximal 1.114.112 (17 · 216) Codepoints im Codebereich von U+000000 bis U+10FFFF vorgesehen (UCS-4, 32 Bit). Bislang, in Unicode 5.1, sind 100.713 Codes individuellen Zeichen zugeordnet.

Die Codebereiche (Blöcke), in die die Unicode-Ebenen untergliedert werden, sind in der Liste der Unicode-Blöcke vollständig aufgeführt. Neben den gültig kodierten Zeichen ist auch sehr langfristig, z. T. noch recht vage Geplantes aufgeführt.

Die Speicherung und Übertragung von Unicode erfolgt in unterschiedlichen Formaten (auch „Encodings“ genannt). Zu den bekanntesten Formaten zählt das Unicode Transformation Format (UTF), wobei UTF-8 das gebräuchlichste ist, z. B. im Internet und in fast allen Betriebssystemen. Neben UTF-8 hat UTF-16 eine große Bedeutung, so z. B. als Zeichenkodierung in Java, der dem Unicode UCS-4 für alle UCS-2 Codepoints entspricht, und alle anderen Codepoints als Zweiersequenzen, die sogenannten Surrogate Pairs, abbildet. Basierend auf dem proprietären EBCDIC-Format von IBM-Großrechnern ist die UTF-EBCDIC-Kodierung. Punycode dient dazu, Domainnamen mit nicht-ASCII-Zeichen zu kodieren. Andere Formate zur Kodierung des Unicode-Standards sind CESU-8 und GB18030.

Normierungsinstitutionen

Das gemeinnützige Unicode Consortium wurde 1991 gegründet und ist für den Industriestandard Unicode verantwortlich. Von der ISO (Internationale Organisation für Normung) wird die internationale Norm ISO 10646 herausgegeben. Beide Institutionen arbeiten eng zusammen. Seit 1993 sind Unicode und ISO 10646 bezüglich der Zeichenkodierung identisch. Während ISO 10646 lediglich die eigentliche Zeichenkodierung festlegt, gehört zum Unicode ein umfassendes Regelwerk, das u. A. 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.[2]

Bezüglich der Codepoints ist Unicode eine Untermenge von ISO 10646: Während ISO 10646 Zeichencodes mit bis zu 31 Bit zulässt, sind bei Unicode maximal 21 Bit erlaubt.

Kodierungskriterien

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.[3] 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 „abstrakte Zeichen“ (engl.: characters) kodiert, nicht Glyphen. Letzteres ist die grafische Darstellung abstrakter Zeichen, die extrem unterschiedlich ausfallen kann, beim lateinischen Alphabet beispielsweise in Fraktur, Antiqua, im Irischen und in Handschriften.[4] Für Glyphenvarianten, deren Normierung als sinnvoll und notwendig nachgewiesen wird, sind vorsorglich 256 „Variation Selectors“ vorgesehen, die ggf. dem eigentlichen Code nachgestellt werden können.

Andererseits haben Schriften, die sowohl das lateinische als auch das griechische Alphabet enthalten, doppelt kodierte identische Glyphen für die folgenden mehrdeutigen Buchstaben: Α Β Ε Ζ Η Ι Κ Μ Ν Ο Ρ Τ Υ Χ. Von vielen Zeichen gibt es nicht nur durch die Schriftart bedingte Varianten, sondern auch innerhalb einer Schriftart mehr oder minder notwendige sprach-, schrift- oder kontextabhängige Glyphenvarianten und Ligaturen, zu deren Darstellung es sogenannter Smartfonttechniken wie OpenType, nicht aber einer Unicode-Kodierung bedarf.

In Grenzfällen wird hart um die Entscheidung gerungen, ob es sich um Glyphenvarianten oder kodierungswürdige Zeichen, d. h. unterschiedliche (Grapheme) handelt. Beispielsweise sind nicht wenige Fachleute der Meinung, man könne das phönizische Alphabet als Glyphenvarianten des hebräischen betrachten, da der gesamte Zeichenvorrat des Phönizischen dort eindeutige Entsprechungen hat, und auch die beiden Sprachen sehr eng verwandt sind. Die Auffassung, es handele sich um ein separates Zeichensystem, in der Unicode-Terminologie „script“, hat sich letztlich durchgesetzt. Anders verhält es sich bei CJK (Chinesisch, Japanisch und Koreanisch): Hier haben sich in den letzten Jahrhunderten die Formen vieler gleichbedeutender Schriftzeichen auseinanderentwickelt. Dennoch teilen sich die sprachspezifischen Glyphen dieselben Codes im Unicode (die Reformen Mitte des 20. Jahrhunderts – chinesische Kurzzeichen und japanische Shinjitai – sind dagegen durch unterschiedliche Codes repräsentiert). In der Praxis werden hier wohl überwiegend sprachspezifische Schriftarten verwendet, und die zeichnen sich schon durch außergewöhnliche Dateigrößen aus. 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 der Grundstein für Unicode gelegt wurde, musste berücksichtigt werden, dass bereits eine Vielzahl unterschiedlicher Kodierungen in verbreitetem Einsatz waren. Unicode-basierte Systeme sollten herkömmlich kodierte Daten mit geringem Aufwand handhaben können. Hierzu wurde für die unteren 256 Zeichen die weit verbreitete ISO 8859-1-Kodierung (Latin1) beibehalten ebenso wie die Kodierungsarten verschiedener nationaler Normen, z. B. TIS-620 für Thailändisch (fast identisch mit ISO 8859-11) oder ISCII für indische Schriften, die in der ursprünglichen Reihenfolge lediglich in höhere Codebereiche 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 mit diakritischen 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.

Vielen Unicode-Zeichen ist keine Glyphe zugeordnet. Auch sie gelten als „characters“. Neben den Steuerzeichen wie Zeilenvorschub (U+000A), Tabulator (U+0009) usw. sind allein 19 Zeichen explizit als Leerzeichen definiert, sogar solche ohne Breite, die u. a. als Worttrenner eingesetzt werden für Sprachen wie Thai oder Tibetisch, die ohne Wortzwischenraum geschrieben werden. Für bidirektionalen Text, z. B. Arabisch mit Lateinisch, sind sieben Formatierungszeichen notwendig.

Beispiel: Combining Grapheme Joiner (CGJ)

Der CGJ ist ein unsichtbares Sonderzeichen, das normalerweise von den Anwendungsprogrammen völlig ignoriert wird (engl.: „default ignorable“). Es soll ausdrücklich nicht zur Kennzeichnung von Glyphenvarianten o. Ä. verwendet werden. Sein Gebrauch ist wie folgt definiert:

In manchen Sprachen gibt es Digraphen und Trigraphen, die grundsätzlich als eigenständige Buchstaben behandelt, d. h. gesondert sortiert werden. Im Ungarischen beispielsweise betrifft das: cs, dz, dzs, gy, ly, ny, sz, ty und zs. Um Ausnahmen hiervon bei Bedarf zu kennzeichnen, wurde der „Combining Grapheme Joiner“ CGJ (U+034F) eingeführt. Der Name bedeutet eigentlich das Gegenteil.

Trägt ein Buchstabe mehrere Diakritika darüber oder darunter, werden diese normalerweise vertikal gestapelt. Für Ausnahmefälle, in denen zwei Diakritika nebeneinander stehen müssen, sieht Unicode vor, dass ein CGJ dazwischengestellt wird. Es obliegt dem Schriftentwickler, die Erscheinungform der Zeichenfolgen „Diakritikon1 CGJ Diakritikon2“ festzulegen, auf die dann mittels einer Schrifttechnik wie OpenType zugegriffen werden kann.

Die im Standard festgelegte Eigenschaft „default ignorable“ qualifiziert den CGJ, in Sonderfällen auch andere sonst unnötige feine Unterschiede zu markieren. So kann die Datenverarbeitung deutscher Bibliotheken die Unterscheidung von Umlaut und Trema erfordern; meistens für fremdsprachige Namen. Hier empfiehlt Unicode, dem Trema (U+0308) den CGJ voranzustellen, um es vom Umlaut zu unterscheiden. Die ursprünglich vom DIN vorgeschlagene nachträgliche gesonderte Kodierung der Umlaut-Punkte hätte zu einer kaum vertretbaren Inkonsistenz großer Datenmengen geführt.

Versionen von Unicode

In den letzten Jahren erschienen neue Versionen jeweils im Frühjahr, wobei in der letzten Zeit jährlich etwa 1000 Zeichen neu aufgenommen wurden.

  • DP 10646 1989 (Vorschlag für den Entwurf von ISO 10646, unabhängig von Unicode)
  • DIS-1 10646 1990 (Erster Entwurf für ISO 10646, unabhängig von Unicode)
  • Unicode 1.0.0 Oktober 1991
  • Unicode 1.0.1 Juni 1992 (Modifikationen um eine Zusammenführung mit ISO 10646 zu ermöglichen)
  • Unicode 1.1.0 Juni 1993 (Unicode und ISO-Norm erstmals vereinigt: Codes identisch mit ISO 10646-1: 1993)
  • Unicode 1.1.5 Juli 1995
  • Unicode 2.0.0 Juli 1996 (Abgleich mit ISO 10646 Erweiterungen)
  • Unicode 2.1.2 Mai 1998 (unter anderem Einführung des Eurozeichens)
  • Unicode 2.1.5 August 1998
  • Unicode 2.1.8 Dezember 1998
  • Unicode 2.1.9 April 1999
  • Unicode 3.0.0 September 1999 (Abgleich mit ISO 10646-1: 2000)
  • Unicode 3.0.1 August 2000
  • Unicode 3.1.0 März 2001 (Abgleich mit ISO 10646-2: 2001)
  • Unicode 3.1.1 August 2001
  • Unicode 3.2.0 März 2002
  • Unicode 4.0.0 April 2003 (Abgleich mit ISO 10646: 2003)
  • Unicode 4.0.1 März 2004
  • Unicode 4.1.0 März 2005
  • Unicode 5.0.0 Juli 2006 mit nunmehr 99.000 Zeichen
  • Unicode 5.1.0 April 2008 mit 100.000 Zeichen

Gliederung in Ebenen und Blöcke

Siehe auch: Liste der Unicode-Blöcke
 
Grafische Darstellung der Basic Multilingual Plane

Unicode ist untergliedert in Codebereiche zu jeweils 16 Bit bzw. 65.536 Zeichen, sogenannte Ebenen (englisch Planes). Die wichtigste Ebene ist die erste Ebene, die Basic Multilingual Plane (BMP), auch Plane 0 genannt.

Innerhalb der Ebenen werden zusammengehörende Zeichen in Blöcken (englisch Blocks) zusammengefasst. Meist behandelt ein Unicode-Block ein Schriftsystem, aus historischen Gründen hat sich allerdings ein gewisses Maß an Fragmentierung eingestellt. Oft wurden später noch Zeichen hinzugefügt und in anderen Blocks als Ergänzung untergebracht.

Der erste Bereich ist die Basic Multilingual Plane (BMP, deutsch Grundlegender mehrsprachiger Codebereich, auch als Plane 0 bezeichnet). Dieser Block enthält hauptsächlich Schriftsysteme, die aktuell in Gebrauch sind, Satzzeichen und Symbole, Kontrollzeichen und Surrogate-Paare, und einen Bereich für private Nutzung. Der Block ist stark fragmentiert und größtenteils belegt, sodass umfangreichere Schriftsysteme nicht mehr Platz finden. Der Zugriff auf andere Planes als Plane 0 ist in manchen Anwendungsprogrammen noch nicht oder nur eingeschränkt möglich.

Darauf folgt die Supplementary Multilingual Plane (SMP, deutsch Ergänzender mehrsprachiger Bereich, auch als Plane 1 bezeichnet), die mit Unicode 3.1 eingeführt wurde. Sie enthält vor allem historische Schriftsysteme, aber auch größere Ansammlungen an Zeichen, die selten in Gebrauch sind, wie z. B. Domino- und Mahjonggsteine. Zur Kodierung geplant sind auch Schriftsysteme, die zwar noch in Benutzung sind, aber zu groß für die BMP sind.

Die Supplementary Ideographic Plane (SIP, deutsch Ergänzender ideographischer Bereich, auch als Plane 2 bezeichnet), die ebenfalls mit Unicode 3.1 eingeführt wurde, enthält ausschließlich CJK-Schriftzeichen, die selten benutzt werden, dazu zählen unter anderem auch die Chữ nôm, die früher in Vietnam benutzt wurden.

Die Supplementary Special-purpose Plane (SSP, deutsch Ergänzender Bereich für spezielle Verwendungen, auch als Plane 14 bezeichnet) enthält einige wenige Kontrollzeichen zur Sprachmarkierung.

Die beiden letzten Codebereiche, jeweils Supplementary Private Use Area-A und -B, sind für private Nutzung reserviert.

Darstellung auf dem Computer

Eingabemethoden

HTML und XML 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 auch benannte Zeichen (englisch named entities) definiert, so z. B. stellt ä das ä dar.[5]

Im Vi Improved (ab Version 6) kann man Unicode-Zeichen (Voraussetzung: Unicode-basierte Locale oder als Unicode, zum Beispiel UTF-8, erkannte Datei) eingeben, indem man Strg+V U und dann die hexadezimale Zeichennummer drückt, also zum Beispiel Strg+V U 2 0 A C für das Euro-Zeichen. Eine alternative Eingabemöglichkeit ist die Benutzung der Digraph-Methode des Vim.

In Emacs (ab Version 21.4) kann man Unicode-Zeichen eingeben, indem man Meta+X ucs-insert und dann die hexadezimale Zeichennummer eingibt.

GNOME unterstützt die Eingabe über die Kombination Strg+Umschalttaste+<unicode> bzw. in neueren Versionen Strg+U+<unicode> bzw. Strg+Umschalttaste+U+<unicode>. Auch hier erfolgt die Eingabe in hexadezimaler Form.

Unter Windows (ab Windows 2000) kann in vielen Programmen der Code hexadezimal eingegeben werden. Mit nachfolgendem Alt+X − innerhalb von MS Word 2003 und MS Word 2007 aber Alt+C − wird das Zeichen erzeugt. (Das heißt, man gibt den Unicode ein, lässt den Cursor hinter dem Code und drückt Alt und C gleichzeitig.) Diese Tastenkombination kann unter Windows XP auch benutzt werden, den Code des vor dem Cursor stehenden Zeichens anzuzeigen.

Bei Apple-Computern muss die Unicode-Hex-Tastenbelegung aktiviert werden. Danach wird der Code bei gedrückter Alt-Taste eingegeben.

Ob das entsprechende Unicode-Zeichen auch tatsächlich am Bildschirm erscheint, hängt davon ab, ob die verwendete Schriftart eine Glyphe 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. In der Typografie gilt so etwas als Fehler namens Zwiebelfisch, z. B. wenn in einem lateinischen Sans-Serif-Text plötzlich ein griechisches Wort in Serifen gesetzt wird. Benutzer von Webbrowsern hingegen finden dies teilweise hässlich, teilweise nützlich.

Schriftarten

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 heutzutage gängigsten Schriftdateiformate, TrueType und OpenType, können maximal 65.536 Zeichen enthalten. So versteht es sich von selbst, dass Unicode/ISO-Konformität einer Schrift nicht bedeutet, dass der komplette Zeichensatz enthalten ist, sondern lediglich, dass die darin enthaltenen Zeichen normgerecht kodiert sind. Die derzeit umfangreichste Schrift – in drei Dateien aufgeteilt – ist Code 2000 bis Code 2002 von James Kass[6], sie ist als Shareware erhältlich, bildet jedoch auch nicht jedes Unicode-Zeichen ab.

Quellen von Unicode-Schriften siehe Weblinks.

Software

Das freie Programm gucharmap (für Linux/UNIX) stellt den Unicode-Zeichensatz auf dem Bildschirm dar und bietet zusätzliche Informationen zu den einzelnen Zeichen.

Microsoft Windows liefert entsprechend charmap.exe (Zeichentabelle) mit. Komfortabler kann man Unicode-Zeichen mit der kostenlosen Software BabelMap (für Windows)[7] suchen und eingeben. Unter Apple Mac OS X steht ebenfalls eine systemweite Zeichenpalette bereit.

Das ebenfalls freie Programm „Quick Key“ (für Windows)[8] stellt eine einfache Methode dar, häufig benötigte Unicode-Zeichen schnell einzugeben. Dazu stellt es eine frei zusammenstellbare Zeichentabelle zur Verfügung, deren Einträge per Klick in andere Programme eingefügt werden können.

Kritik

Unicode wird vor allem von Wissenschaftlern und ostasiatischen Ländern scharf kritisiert. Viel Kritik ging der Han-Vereinheitlichung zugrunde, da aus ostasiatischer Sicht Schriftzeichen verschiedener Sprachen einfach vereinigt werden.[9]Die zukünftige Kodierung ägyptischer Hieroglyphen wird ebenfalls kritisiert, da als einzige Quelle die Forschungen Alan Gardiners verwendet wurden[10].

Der Kodierung des phönizischen Alphabets ging ein langer Streit voraus, da viele Wissenschaftler das Phönizsiche nach den Kodierungsrichtlinien des Unicode-Konsortiums als eine Glyphenvariante des Hebräischen hielten und deshalb die Kodierung als separates Schriftsystem ablehnten. Der Vorschlag, Phönizisch separat zu kodieren, hat sich jedoch durchgesetzt.[11]

Siehe auch

Für Hinweise zur Darstellung ausländischer Schriften in Wikipedia-Artikeln im Browser siehe Wikipedia:UTF-8-Probleme

Einzelnachweise

  1. Chronology of Unicode Version 1.0
  2. FAQ - Unicode and ISO 10646
  3. Unicode Character Encoding Stability Policy
  4. Unicode Technical Report #17 - Character Encoding Model
  5. HTML Document Representation
  6. Unicode Support in Your Browser
  7. BabelMap (Unicode Character Map Utility)
  8. Quick Key - An Open Source Keyboard Extension
  9. The secret life of Unicode
  10. Unicode - Alle Schriften der Welt
  11. Response to the revised "Final proposal for encoding the Phoenician script in the UCS" (L2/04-141R2)

Literatur

Portal: Unicode – Übersicht zu Wikipedia-Inhalten zum Thema Unicode

Vorlage:Link FA