In computer science, whitespace is any character or series of whitespace characters that represent horizontal or vertical space in typography. When rendered, a whitespace character does not correspond to a visible mark, but typically does occupy an area on a page. For example, the common whitespace symbol U+0020 space (HTML  ), also ASCII 32, represents a blank space punctuation character in text, used as a word divider in Western scripts.
]
With many keyboard layouts, a horizontal whitespace character may be entered through the use of a spacebar. Horizontal whitespace may also be entered on many keyboards through the use of the Tab ↹ key, although the length of the space may vary. Vertical whitespace is a bit more varied as to how it is encoded, but the most obvious in typing is the ↵ Enter result which creates a 'newline' code sequence in applications programs. Older keyboards might instead say Return, abbreviating the typewriter keyboard meaning 'Carriage-Return' which generated an electromechanical return to the left stop (CR code in ASCII-hex &0D;) and a line feed or move to the next line (LF code in ASCII-hex &0A;); in some applications these were independently used to draw text cell based displays on monitors or for printing on tractor-guided printers—which might also contain reverse motions/positioning code sequences allowing yesterdays text base fancier displays. Many early computer games used such codes to draw a screen.
The term "whitespace" is based on the resulting appearance on ordinary paper. However they are coded inside an application, whitespace can be processed the same as any other character code and programs can do the proper action as defined for the context in which they occur.
]
The most common whitespace characters may be typed via the space bar or the tab key. Depending on context, a line-break generated by the return or enter key may be considered white space as well.
]
The table below lists the twenty-five characters defined as whitespace ("WSpace=Y", "WS") characters in the Unicode Character Database. Note: Depending on the browser and fonts used to view the following table, not all spaces may be displayed properly. Unicode also provides some visible characters that can be used to represent whitespace: 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. In computer character encodings, there is a normal general-purpose space (Unicode character U+0020; 32 decimal) 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 below for a complete list. By default, computer programs usually assume that, in text with word wrap enabled, a line break may as necessary be inserted at the position of a space. The non-breaking space, U+00A0 (160 decimal), named entity In American typography, both en dashes and em dashes are set continuous with the text (as illustrated by use in The Chicago Manual of Style, 6.80, 6.83–86). However, an em dash can optionally be surrounded with a so-called hair space, U+200A (8202 decimal), or thin space, U+2009 (8201 decimal). The thin space can be written in HTML by using the named entity In programming language syntax, spaces are frequently used to explicitly separate tokens. Runs of whitespace characters (beyond the first) occurring within source code written in computer programming languages (outside of strings and other quoted regions) are ignored by most languages; such languages are called free-form. In a few languages, including Haskell, occam, ABC, and Python, white space and indentation are used for syntactical purposes. In the satirical language called Whitespace, whitespace characters are the only valid characters for programming, while any other characters are ignored. Still, for most programming languages, excessive use of white space, especially trailing white space at the end of lines, is considered a nuisance.[by whom?] However correct use of white space can make the code easier to read and help group related logic. Ininterpreted languages, parsing of unnecessary white space may affect the speed of execution. The C language defines whitespace characters to be "... space, horizontal tab, new-line, vertical tab, and form-feed".[11] In commands processed by command processors, e.g., in scripts and typed in, the space character can cause problems as it has two possible functions: as part of a command or parameter, or as a parameter or name separator. Ambiguity can be prevented either by prohibiting embedded spaces, or by enclosing a name with embedded spaces between quote characters. Some markup languages, such as SGML, preserve whitespace as written. Web markup languages such as XML and HTML treat whitespace characters specially, including space characters, for programmers' convenience. One or more space characters read by conforming display-time processors of those markup languages are collapsed to 0 or 1 space, depending on their semantic context. For example, double (or more) spaces within text are collapsed to a single space, and spaces which appear on either side of the " In XML attribute values, sequences of whitespace characters are treated as a single space when the document is read by a parser. attribute on an element to instruct the parser to discourage the downstream application from altering whitespace in that element's content. In most HTML elements, a sequence of whitespace characters is treated as a single inter-word separator, which may manifest as a single space character when rendering text in a language that normally inserts such space between words. In both XML and HTML, the non-breaking space character, along with other non-"standard" spaces, is not treated as collapsible "whitespace", so it is not subject to the rules above. Such usage is similar to multiword file names written for operating systems and applications that are confused by embedded space codes—such file names instead use an underscore (_) as a word separator, as_in_this_phrase. Another such symbol was U+2422 ␢ blank symbol. This was used in the early years of computer programming when writing on coding forms. Keypunch operators immediately recognized the symbol as an "explicit space".[citation needed]
[hide]
Code point
Name
Decimal
within "]["
Wrappable?
in IDN?
Script
Block
General category
Notes
U+0009
character tabulation
9
] [
Yes
No
Common
Basic Latin
Other, control
HT, Horizontal Tab
U+000A
line feed
10
Common
Basic Latin
Other, control
LF, Line feed
U+000B
line tabulation
11
Common
Basic Latin
Other, control
VT, Vertical Tab
U+000C
device control two
12
Common
Basic Latin
Other, control
FF, Form feed
U+000D
device control three
13
Common
Basic Latin
Other, control
CR, Carriage return
U+0020
space
32
] [
Yes
No
Common
Basic Latin
Separator, space
Most common (normal ASCII space)
U+0085
next line
133
Common
Latin-1 Supplement
Other, control
NEL, Next line
U+00A0
no-break space
160
] [
No
No
Common
Latin-1 Supplement
Separator, space
Non-breaking space: identical to U+0020, but not a point at which a line may be broken. HTML/XML:
, LaTeX: ‘\ ’
U+1680
ogham space mark
5760
] [
Yes
Yes
Ogham
Ogham
Separator, space
Used for interword separation in Ogham text. Normally a vertical line in vertical text or a horizontal line in horizontal text, but may also be a blank space in "stemless" fonts. Requires an Ogham font.
U+2000
en quad
8192
] [
Yes
No[b]
Common
General Punctuation
Separator, space
Width of one en. U+2002 is canonically equivalent to this character; U+2002 is preferred.
U+2001
em quad
8193
] [
Yes
No[b]
Common
General Punctuation
Separator, space
Also known as "mutton quad". Width of one em. U+2003 is canonically equivalent to this character; U+2003 is preferred.
U+2002
en space
8194
] [
Yes
No[b]
Common
General Punctuation
Separator, space
Also known as "nut". Width of one en. U+2000 En Quad is canonically equivalent to this character; U+2002 is preferred. HTML/XML:
 
U+2003
em space
8195
] [
Yes
No[b]
Common
General Punctuation
Separator, space
Also known as "mutton". Width of one em. U+2001 Em Quad is canonically equivalent to this character; U+2003 is preferred. HTML/XML:
 , LaTeX: ‘\quad’
U+2004
three-per-em space
8196
] [
Yes
No[b]
Common
General Punctuation
Separator, space
Also known as "thick space". One third of an em wide. HTML/XML:
 
U+2005
four-per-em space
8197
] [
Yes
No[b]
Common
General Punctuation
Separator, space
Also known as "mid space". One fourth of an em wide. HTML/XML:
 
U+2006
six-per-em space
8198
] [
Yes
No[b]
Common
General Punctuation
Separator, space
One sixth of an em wide. In computer typography, sometimes equated to U+2009.
U+2007
figure space
8199
] [
No
No[b]
Common
General Punctuation
Separator, space
Figure space. In fonts with monospaced digits, equal to the width of one digit.
U+2008
punctuation space
8200
] [
Yes
No[b]
Common
General Punctuation
Separator, space
As wide as the narrow punctuation in a font, i.e. the advance width of the period or comma.[2] HTML/XML:
 
U+2009
thin space
8201
] [
Yes
No[b]
Common
General Punctuation
Separator, space
One-fifth (sometimes one-sixth) of an em wide. Recommended for use as athousands separator for measures made with SI units. Unlike U+2002 to U+2008, its width may get adjusted in typesetting.[3] HTML/XML:
 ; Latex: ‘\,’
U+200A
hair space
8202
] [
Yes
No[b]
Common
General Punctuation
Separator, space
Thinner than a thin space. HTML/XML:
 
U+2028
line separator
8232
Common
General Punctuation
Separator, line
U+2029
paragraph separator
8233
Common
General Punctuation
Separator, paragraph
U+202F
narrow no-break space
8239
] [
No
No[b]
Common
General Punctuation
Separator, space
Narrow no-break space. Similar in function to U+00A0 No-Break Space. When used with Mongolian, its width is usually one third of the normal space; in other context, its width sometimes resembles that of the Thin Space (U+2009).
U+205F
medium mathematical space
8287
] [
Yes
No[b]
Common
General Punctuation
Separator, space
MMSP. Used in mathematical formulae. Four-eighteenths of an em.[5]
U+3000
ideographic space
12288
] [
Yes
No[b]
Common
CJK Symbols and
PunctuationSeparator, space
As wide as a CJK character cell (fullwidth). Used, for example, in tai tou.
Code point
Name
Decimal
within "]["
Wrappable?
in IDN?
Script
Block
General category
Notes
U+180E
mongolian vowel separator
6158
][
Yes
Yes
Mongolian
Mongolian
Other, Format
MVS. A narrow space character, used in Mongolian to cause the final two characters of a word to take on different shapes.[6] It is no longer classified as space character (i.e. in Zs category) in Unicode 6.3.0, even though it was in previous versions of the standard.
U+200B
zero width space
8203
][
Yes
No[b]
?
General Punctuation
Other, Format
ZWSP, zero-width space. Used to indicate word boundaries to text processing systems when using scripts that do not use explicit spacing. It is similar to the soft hyphen, with the difference that the latter is used to indicate syllable boundaries, and should display a visible hyphen when the line breaks at it.
U+200C
zero width non-joiner
8204
][
Yes
Yes
?
General Punctuation
Other, Format
ZWNJ, zero-width non-joiner. When placed between two characters that would otherwise be connected, a ZWNJ causes them to be printed in their final and initial forms, respectively. HTML/XML:
‌
U+200D
zero width joiner
8205
][
Yes
Yes
?
General Punctuation
Other, Format
ZWJ, zero-width joiner. When placed between two characters that would otherwise not be connected, a ZWJ causes them to be printed in their connected forms. HTML/XML:
‍
U+2060
word joiner
8288
][
No
Yes
?
General Punctuation
Other, Format
WJ, word joiner. Similar to U+200B, but not a point at which a line may be broken.
U+FEFF
zero width non-breaking
space65279
][
No
Yes
?
Arabic Presentation
Forms-BOther, Format
Zero-width non-breaking space. Used primarily as a Byte Order Mark. Use as an indication of non-breaking is deprecated as of Unicode 3.2; see U+2060 instead.
]
Code
Decimal
Name
Block
Display
Description
U+00B7
183
Middle dot
Basic Latin
·
Interpunct (HTML
·)
U+237D
9085
Shouldered open box
Miscellaneous Technical
⍽
Used to indicate a NBSP.
U+2420
9248
Symbol for space
Control Pictures
␠
U+2422
9250
Blank symbol
Control Pictures
␢
U+2423
9251
Open box
Control Pictures
␣
Used in a textbook[which?] (published c. 1985 by Springer-Verlag) on Modula-2, a programming language where space codes require explicit indication. Also used in the keypad silkscreeninggraphing calculators.
⠀), 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.
]
]
]
]
is intended to render the same as a normal space but prevents line-wrapping at that position. Hard spaces (contrasted with "soft spaces") may be defined by some word processors and operating systems as either a non-breaking space, a non-combining/non-expanding space, or some other special character.]
  and the hair space can be written using numeric character reference   or  . This space should be much thinner than a normal space, and is seldom used on its own.
(as rendered by your browser)
Normal space
left right
Normal space with em dash
left — right
Thin space with em dash
left — right
Hair space with em dash
left — right
No space with em dash
left—right
]
]
]
]
=" that separates an attribute name from its value have no effect on the interpretation of the document. Element end tags can contain trailing spaces, and empty-element tags in XML can contain spaces before the "/>". In these languages, unnecessary whitespace increases the file size, and so may slow network transfers. On the other hand, unnecessary whitespace can also inconspicuously mark code, similar to, but less obvious than comments in code. This can be desirable to prove an infringement of license or copyright that was committed by copying and pasting.]