# 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. In regulären Ausdrücken nach POSIX-Standard zählt zusätzlich das Vertikal-Tabulatorzeichen (U+000B) zum Leerraum. In beiden Fällen kommen je nach eingestelltem Locale evtl. weitere Zeichen dazu, im Japanischen beispielsweise das ideographische Leerzeichen (U+3000).
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.

## 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.
* Mehrere Steuerzeichen, im Einzelnen das Horizontal- (U+0009) und Vertikal-Tabulatorzeichen (U+000B), der Zeilen- (U+000A) und Seitenvorschub (U+000C) sowie der Wagenrücklauf (U+000D)
* Das Leerzeichen (U+0020)
* Das Steuerzeichen für die nächste Zeile (U+0085)
* Das geschützte Leerzeichen (U+00A0)
* Das Ogham-Leerzeichen (U+1680)
* Elf schmale Leerzeichen, Haarspatium und Geviert-Leerzeichen in verschiedenen Größen (U+2000 bis U+200A)
* Zeilen- und Absatztrenner (U+2028 und U+2029)
* Das schmale geschützte Leerzeichen (U+202F)
* Das mittlere mathematische Leerzeichen (U+205F)
* Das ideographische Leerzeichen (U+3000)
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.
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 &blank; definiert.