Leerraum

Leerraum (fachsprachlich auch englisch Whitespace /'waɪtspeɪs/ „Weißraum“ oder Zwischenraumzeichen) ist in der Informatik eine Bezeichnung für Zeichen in einem Text, die im Texteditor oder Textverarbeitungsprogramm normalerweise nur durch Leerflächen dargestellt werden und dennoch (Speicher-)Platz in Anspruch nehmen. Sie dienen vorrangig für Wortabstände (Leerzeichen), Zifferngruppierung, Umbruchverhinderung und -ermöglichung (unterschiedlich breite schmale Leerzeichen).

Je nach Kontext werden verschiedene Zeichen als Leerraum angesehen, fast immer zumindest Leerzeichen und Tabulatorzeichen, meist auch Zeilenumbrüche. Viele Programme bieten auch die Möglichkeit, diese Zeichen durch stellvertretende Formatierungsymbole (zum Beispiel für Zeilenumbrüche, · für Leerzeichen und oder > für Tabulatorzeichen) sicht- und unterscheidbar zu machen.

In der Programmierung kommt diesen Zeichen einerseits eine besondere Rolle zu. In verschiedenen Programmiersprachen können sie einzelne geschützte Wörter und ebenso Namen von Variablen voneinander trennen. Manche Programmiersprachen (etwa Python) verlangen eine spezielle Formatierung des Quellcodes durch Whitespace-Zeichen (Einrückung von Blöcken).

Andererseits ist es aber (abhängig von der Syntax der Programmiersprache) oftmals belanglos, ob eines oder mehrere dieser Zeichen aufeinander folgen. Deshalb bieten insbesondere Vergleichsprogramme oder Vergleichs-Funktionen in IDE eine Option „Ignore Whitespace an.

Bei der Zählung der Zeichen eines Textdokumentes wird der Leerraum manchmal nicht mitgezählt.

Reguläre Ausdrücke

Für reguläre Ausdrücke sind zwei leicht abweichende Definitionen für die in der Zeichenklasse \s bzw. [:space:] als Leerraum angesehenen Zeichen verbreitet. In Perl-kompatiblen regulären Ausdrücken (PCRE) zählen mindestens das Leerzeichen (U+0020), das Horizontal-Tabulatorzeichen (U+0009), der Zeilen- (U+000A) und Seitenvorschub (U+000C) sowie der Wagenrücklauf (U+000D) zum Leerraum.[1] In regulären Ausdrücken nach POSIX-Standard zählt zusätzlich das Vertikal-Tabulatorzeichen (U+000B) zum Leerraum.[2] In beiden Fällen kommen je nach eingestelltem Locale evtl. weitere Zeichen dazu, im Japanischen beispielsweise das ideographische Leerzeichen (U+3000).[3]

Der ECMA-Standard und damit auch JavaScript trifft eine eigene Festlegung für die als Leerraum angesehenen Zeichen in regulären Ausdrücken. Sie schließt unter anderem das geschützte Leerzeichen (U+00A0), die Byte Order Mark (U+FEFF) und alle im Unicode-Standard Version 3.0 als Leerraum definierten Zeichen ein.[4]

Unicode

In Unicode sind jedem Codepoint, das heißt jedem Unicode-Zeichen mehrere Unicode-Eigenschaften zugeordnet. Unter anderem sind die Zeichen in allgemeine Kategorien (General_Category, gc) unterteilt. Die als Leerraum angesehenen Zeichen sind hier in der Kategorie für Steuerzeichen (Cc) sowie den drei Kategorien für Zeilen-, Absatz- und sonstige Trenner (Zl, Zp und Zs) enthalten. Eine Kategorie für Leerraum existiert nicht. Daneben wird jedes Zeichen einer Bidirektionalitäts-Klasse (Bidi_Class, bc) zugeordnet. Hier existiert eine Klasse mit dem Namen White_Space (WS) für die Verwendung innerhalb des Unicode-Bidi-Algorithmus, die allerdings nur verschiedene Leerzeichen beinhaltet. Zeichen wie Tabulatorzeichen und Zeilenvorschübe zählen hier nicht als Leerraum, sondern sind eigenen Bidirektionalitäts-Klassen für allgemeine Separatoren (CS), Segment- (S) und Absatztrenner (B) zugeordnet.

Zum Leerraum werden 25 Zeichen gezählt, die mit der Eigenschaft White_Space gekennzeichnet sind.[5]

Für die Verwendung in der Softwareentwicklung und insbesondere in Programmiersprachen definiert Unicode eine zweite Eigenschaft namens Pattern_White_Space (wörtlich „Muster-Leerraum“, nach den Mustern in regulären Ausdrücken) mit nur 11 Zeichen (U+0009 bis U+000D, U+0020, U+0085, U+200E, U+200F, U+2028 und U+2029). Hier fehlen insbesondere die geschützten und sprachspezifischen Leerzeichen.

Auch diese Aufzählung gilt nur als Empfehlung und kann von den Entwicklern der Programmiersprache abgeändert werden, wobei empfohlen wird, den Unicode-Standard als Grundlage für die abweichende Definition zu verwenden.[6]

In Situationen, in denen die Gegenwart eines Leerzeichens (oder sogar mehrerer aufeinanderfolgender Leerzeichen) explizit dargestellt werden soll, werden gelegentlich Leerzeichen durch das Leerzeichensymbol „␣“ als Platzhalter ersetzt. Unicode definiert dafür das Zeichen U+2423 („Open box“/„offener Kasten“), siehe Unicodeblock Symbole für Steuerzeichen. In HTML5 und XML ist dafür die Entität ␣ definiert.[7][8]

Einzelnachweise

  1. Perl Programming Documentation: Using character classes, 2000.
  2. The Open Group: Base Specifications: Locale Definition, 2004.
  3. The Open Group: Locales (Memento desOriginals vom 29. September 2008 im Internet Archive)  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/www.opengroup.org, 2010.
  4. ECMAScript Language Specification – ECMA-262 Edition 5.1, Juni 2011.
  5. Unicode: Häufig gestellte Fragen. Darin: „All the characters that have the White_Space property, also generically known as ‚whitespace characters‘.
  6. Unicode: Unicode Standard Annex #31: Identifier and Pattern Syntax. Darin: „Each programming language can define its own whitespace characters […] relative to the Unicode Pattern_White_Space […] characters, with some specified set of additions or subtractions.
  7. HTML 5, A vocabulary and associated APIs for HTML and XHTML – 8.5 Named character references. W3C, 28. Oktober 2014, abgerufen am 16. April 2021.
  8. XML Entity Definitions for Characters (2nd Edition) – 2.2 Legacy Entity sets – ISOPUB. W3C, 10. April 2014, abgerufen am 16. April 2021.

Auf dieser Seite verwendete Medien

New Unicode logo.svg
Unicode logo used on the Unicode Consortium website launched on 17 July 2019 (https://home.unicode.org/). Replaces the red Unicode logo.svg with different typeface for the word "Unicode" that was used on the old website.