A whitespace character is a character data element that represents white space when text is rendered for display by a computer.

For example, a space character (, ASCII 32) represents blank space such as a word divider in a Western script.

A printable character results in output when rendered, but a whitespace character does not. Instead, whitespace characters define the layout of text to a limited degree, interrupting the normal sequence of rendering characters next to each other. The output of subsequent characters is typically shifted to the right (or to the left for right-to-left script) or to the start of the next line. The effect of multiple sequential whitespace characters is cumulative such that the next printable character is rendered at a location based on the accumulated effect of preceding whitespace characters.

The origin of the term whitespace is rooted in the common practice of rendering text on white paper. Normally, a whitespace character is not rendered as white. It affects rendering, but it is not itself rendered.

Overview

A space character typically inserts horizontal space that is about as wide as a letter. For a monospaced font the width is the width of a letter, and for a variable-width font the width is font-specific. Some fonts support multiple space characters that have different widths.

A tab character typically inserts horizontal space that is based on tab stops which vary by application.

A newline character sequence typically moves the render output location to the beginning of the next line. If one follows text, it does not actually result in whitespace. But, two sequential newline sequences between text blocks results in a blank line between the blocks. The height of the blank line varies by application.

Using whitespace characters to lay out text is a convention. Applications sometimes render whitespace characters as visible markup so that a user can see what is normally not visible.

Typically, a user types a space character by pressing , a tab character by pressing and newline by pressing .

Unicode

The table below lists the twenty-five characters defined as whitespace ("WSpace=Y", "WS") characters in the Unicode Character Database. Seventeen use a definition of whitespace consistent with the algorithm for bidirectional writing ("Bidirectional Character Type=WS") and are known as "Bidi-WS" characters. The remaining characters may also be used, but are not of this "Bidi" type.

Note: Depending on the browser and fonts used to view the following table, not all spaces may be displayed properly.

Substitute images Unicode also provides some visible characters that can be used to represent various whitespace characters, in contexts where a visible symbol must be displayed: Unicode space-illustrating characters (visible) Code Decimal Name Block Display Description U+00B7 183 Middle dot Latin-1 Supplement · InterpunctNamed entity: · U+21A1 8609 Downwards two headed arrow Arrows ↡ ECMA-17 / ISO 2047 symbol for form feed (page break) U+2261 8810 Identical to Mathematical Operators ≡ Amongst other uses, is the ECMA-17 / ISO 2047 symbol for line feed U+237D 9085 Shouldered open box Miscellaneous Technical ⍽ Used to indicate a NBSP U+23CE 9166 Return symbol Miscellaneous Technical ⏎ Symbol for a return key, which enters a line break U+2409 9225 Symbol for horizontal tabulation Control Pictures ␉ Substitutes for a tab character U+240A 9226 Symbol for line feed Control Pictures ␊ Substitutes for a line feed U+240B 9227 Symbol for vertical tabulation Control Pictures ␋ Substitutes for a vertical tab (line tab) U+240C 9228 Symbol for form feed Control Pictures ␌ Substitutes for a form feed (page break) U+240D 9229 Symbol for carriage return Control Pictures ␍ Substitutes for a carriage return U+2420 9248 Symbol for space Control Pictures ␠ Substitutes for an ASCII space U+2422 9250 Blank symbol Control Pictures ␢ aka "substitute blank", used in BCDIC, EBCDIC, ASCII-1963 etc. as a symbol for the word separator U+2423 9251 Open box Control Pictures ␣ Used in block letter handwriting at least since the 1980s when it is necessary to explicitly indicate the number of space characters (e.g. when programming with pen and paper). Used in a textbook (published 1982, 1984, 1985, 1988 by Springer-Verlag) on Modula-2, a programming language where space codes require explicit indication. Also used in the keypadAbove the zero "0" or negative "(‒)" key. of the Texas Instruments' TI-8x series of graphing calculators.Named entity: ␣ U+2424 9252 Symbol for newline Control Pictures ␤ Substitutes for a line break U+25B3 9651 White up-pointing triangle Geometric Shapes △ Amongst other uses, is the ECMA-17 / ISO 2047 symbol for the ASCII space U+2A5B 10843 Logical Or with middle stem Supplemental Mathematical Operators ⩛ Amongst other uses, is the ECMA-17 / ISO 2047 symbol for vertical tab (line tab) U+2AAA 10922 Smaller than Supplemental Mathematical Operators ⪪ Amongst other uses, is the ECMA-17 / ISO 2047 symbol for carriage return U+2AAB 10923 Larger than Supplemental Mathematical Operators ⪫ Amongst other uses, is the ECMA-17 / ISO 2047 symbol for the tab characterU+2B1A 11034 Dotted square Miscellaneous Symbols and Arrows ⬚ U+3037 12343 Ideographic Telegraph Line Feed Separator Symbol CJK Symbols and Punctuation 〷 Graphic used for code 9999 in Chinese telegraph code, representing a line feed

Exact space The Cambridge Z88 provided a special "exact space" (code point 160 aka 0xA0) (invokable by key shortcut ), displayed as "…" by the operating system's display driver. It was therefore also known as "dot space" in conjunction with BBC BASIC. Under code point 224 (0xE0) the computer also provided a special three-character-cells-wide SPACE symbol "SPC" (analogous to Unicode's single-cell-wide U+2420).

Non-space blanks The Braille Patterns Unicode block contains , a Braille pattern with no dots raised. Some fonts display the character as a fixed-width blank, however the Unicode standard explicitly states that it does not act as a space.Unicode chart U+2800, braille patterns Unicode's coverage of the Korean alphabet includes several code points which represent the absence of a written letter, and thus do not display a glyph: Unicode includes a Hangul Filler character in the Hangul Compatibility Jamo block (). This is classified as a letter, but displayed as an empty space, like a Hangul block containing no jamo. It is used in KS X 1001 Hangul combining sequences to introduce them or denote the absence of a letter in a position, but not in Unicode's combining jamo system. Unicode's combining jamo system uses similar Hangul Choseong Filler and Hangul Jungseong Filler characters to denote the absence of a letter in initial or medial position within a syllable block, which are included in the Hangul Jamo block (, ). Additionally, a Halfwidth Hangul Filler is included in the Halfwidth and Fullwidth Forms (), which is used when mapping from encodings which include characters from both Johab (or Wansung) and N-byte Hangul (or its EBCDIC counterpart), such as IBM-933, which includes both Johab and EBCDIC fillers.

Whitespace and digital typography

On-screen display Text editors, word processors, and desktop publishing software differ in how they represent whitespace on the screen, and how they represent spaces at the ends of lines longer than the screen or column width. In some cases, spaces are shown simply as blank space; in other cases they may be represented by an interpunct or other symbols. Many different characters (described below) could be used to produce spaces, and non-character functions (such as margins and tab settings) can also affect whitespace.

Many of the Unicode space characters were created for compatibility with classic print typography.

Even if digital typography has algorithmic kerning and justification, those space characters can be used to supplement the electronic formatting when needed.

Variable-width general-purpose space In computer character encodings, there is a normal general-purpose space (Unicode character U+0020) whose width will vary according to the design of the typeface. Typical values range from 1/5 em to 1/3 em (in digital typography an em is equal to the nominal size of the font, so for a 10-point font the space will probably be between 2 and 3.3 points). Sophisticated fonts may have differently sized spaces for bold, italic, and small-caps faces, and often compositors will manually adjust the width of the space depending on the size and prominence of the text.

In addition to this general-purpose space, it is possible to encode a space of a specific width. See the table above for a complete list.

Hair spaces around dashes Em dashes used as parenthetical dividers, and en dashes when used as word joiners, are usually set continuous with the text.Usage of the different dash types is illustrated, e.g., in The Chicago Manual of Style, §§ 6.80, 6.83–6.86 However, such a dash can optionally be surrounded with a hair space () or a thin space (). The hair space can be written in HTML by using   and the thin space is  . These spaces are much thinner than a normal space (except in a monospaced font), with the hair space in particular being the thinnest of horizontal whitespace characters.

+ Normal space versus hair and thin spaces (as rendered by your browser) Space En dash Em dash Normal space left – right left — right Thin space left–right left—right Hair space left–right left—right No space left–right left—right

Computing applications Programming languages In most programming language syntax, whitespace characters can be used to separate tokens. For a free-form language, whitespace characters are ignored by code processors (i.e. compiler). Even when language syntax requires white space, often multiple whitespace characters are treated the same as a single. In an off-side rule language, indentation white space is syntactically significant. In the satirical and contrarian language called Whitespace, whitespace characters are the only significant characters and normal text is ignored.

Good use of white space in source code can group related logic and make the code easier to understand. Excessive use of whitespace, including at the end of a line where it provides no rendering behavior, is considered a nuisance.

Most languages only recognize whitespace characters that have an ASCII code. They disallow most or all of the Unicode codes listed above. The C language defines whitespace characters to be "space, horizontal tab, new-line, vertical tab, and form-feed".http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1548.pdf Section 6.4, paragraph 3 The HTTP network protocol requires different types of whitespace to be used in different parts of the protocol; it requires single space characters between items in the status line, a CR/LF pair at the end of a line, and "linear whitespace" in header values.

Command-line parsing Typical command-line parsers use the space character to delimit arguments. A value with an embedded space character is problematic since it causes the value to parse as multiple arguments. Typically, a parser allows for escaping the normal argument parsing by enclosing the text in quotes.

If, for example, a user wanted to view the contents of a directory named foo bar by using the ls (list) command, and they did so by entering the command as:

ls foo bar

the command would, instead, attempt to list files or directories named foo and bar. The correct syntax would specify only a single argument by enclosing it in double quotes:

ls "foo bar"

Or, alternatively, they could choose to leave out the double quotes and instead escape the space with a backslash:

ls foo\ bar

Markup languages Some markup languages, such as SGML, preserve whitespace as written.