Whitespace character
In computer science, whitespace is any character or series of characters that represents horizontal or vertical space in typography. When rendered, a whitespace character does not correspond to a visual mark, but typically does occupy an area on a page. For example, the common whitespace symbol U+0020 SPACE represents a blank space, used as a word divider in Western scripts.
The term "whitespace" is based on the assumption that the background color used for rendered text is white.
Definition and ambiguity
As is common in technical literature, the two words "white space" have found widespread usage as the single term "whitespace", especially when used as an adjective, as in "whitespace character". Some specifications refer to "white space" while others refer to "whitespace"; there is no difference between the terms, although exactly which characters are being referred to does vary from context to context.
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 whitespace as well.
Unicode
In Unicode (Unicode Character Database) the following 26 characters are defined as whitespace character:
Name | Code point | Width box | May break? | In IDN? |
Script | Block | General category |
Notes | |
---|---|---|---|---|---|---|---|---|---|
character tabulation | U+0009 | 9 | Yes | No | Common | Basic Latin | Other, control |
HT, Horizontal Tab. HTML/XML named entity: 	 , LaTeX: \tab , C escape: \t
| |
line feed | U+000A | 10 | Is a line-break | Common | Basic Latin | Other, control |
LF, Line feed. HTML/XML named entity: 
 , C escape: \n
| ||
line tabulation | U+000B | 11 | Is a line-break | Common | Basic Latin | Other, control |
VT, Vertical Tab. C escape: \v
| ||
form feed | U+000C | 12 | Is a line-break | Common | Basic Latin | Other, control |
FF, Form feed. C escape: \f
| ||
carriage return | U+000D | 13 | Is a line-break | Common | Basic Latin | Other, control |
CR, Carriage return. C escape: \r
| ||
space | U+0020 | 32 | Yes | No | Common | Basic Latin | Separator, space |
Most common (normal ASCII space). LaTeX: \
| |
next line | U+0085 | 133 | Is a line-break | Common | Latin-1 Supplement |
Other, control |
NEL, Next line. LaTeX: \\
| ||
no-break space | U+00A0 | 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 named entity: ,   , LaTeX: ~
| |
ogham space mark | U+1680 | 5760 | Yes | No | 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. | |
en quad | U+2000 | 8192 | Yes | No | Common | General Punctuation |
Separator, space |
Width of one en. U+2002 is canonically equivalent to this character; U+2002 is preferred. | |
em quad | U+2001 | 8193 | Yes | No | 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. | |
en space | U+2002 | 8194 | Yes | No | 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 named entity:   , LaTeX: \enspace (the LaTeX en space is a no-break space)
| |
em space | U+2003 | 8195 | Yes | No | 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 named entity:   , LaTeX: \quad
| |
three-per-em space | U+2004 | 8196 | Yes | No | Common | General Punctuation |
Separator, space |
Also known as "thick space". One third of an em wide. HTML/XML named entity:   , LaTeX: \; (the LaTeX thick space is a no-break space)
| |
four-per-em space | U+2005 | 8197 | Yes | No | Common | General Punctuation |
Separator, space |
Also known as "mid space". One fourth of an em wide. HTML/XML named entity:  
| |
six-per-em space | U+2006 | 8198 | Yes | No | Common | General Punctuation |
Separator, space |
One sixth of an em wide. In computer typography, sometimes equated to U+2009. | |
figure space | U+2007 | 8199 | No | No | Common | General Punctuation |
Separator, space |
Figure space. In fonts with monospaced digits, equal to the width of one digit. HTML/XML named entity:  
| |
punctuation space | U+2008 | 8200 | Yes | No | Common | General Punctuation |
Separator, space |
As wide as the narrow punctuation in a font, i.e. the advance width of the period or comma.[1] HTML/XML named entity:  
| |
thin space | U+2009 | 8201 | Yes | No | Common | General Punctuation |
Separator, space |
Thin space; one-fifth (sometimes one-sixth) of an em wide. Recommended for use as a thousands separator for measures made with SI units. Unlike U+2002 to U+2008, its width may get adjusted in typesetting.[2] HTML/XML named entity:   ,   , LaTeX: \, (the LaTeX thin space is a no-break space)
| |
hair space | U+200A | 8202 | Yes | No | Common | General Punctuation |
Separator, space |
Thinner than a thin space. HTML/XML named entity:   ,  
| |
line separator | U+2028 | 8232 | Is a line-break | Common | General Punctuation |
Separator, line |
|||
paragraph separator | U+2029 | 8233 | Is a line-break | Common | General Punctuation |
Separator, paragraph |
|||
narrow no-break space | U+202F | 8239 | No | No | 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). LaTeX: \,
| |
medium mathematical space | U+205F | 8287 | Yes | No | Common | General Punctuation |
Separator, space |
MMSP. Used in mathematical formulae. Four-eighteenths of an em.[3] In mathematical typography, the widths of spaces are usually given in integral multiples of an eighteenth of an em, and 4/18 em may be used in several situations, for example between the a and the + and between the + and the b in the expression a + b.[4] HTML/XML named entity:   , LaTeX: \: (the LaTeX medium space is a no-break space)
| |
ideographic space | U+3000 | 12288 | Yes | No | Common | CJK Symbols and Punctuation |
Separator, space |
As wide as a CJK character cell (fullwidth). Used, for example, in tai tou. |
Name | Code point | Width box | May break? | In IDN? |
Script | Block | General category |
Notes | |
---|---|---|---|---|---|---|---|---|---|
mongolian vowel separator | U+180E | 6158 | | Yes | No | 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.[5] 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. |
zero width space | U+200B | 8203 | | Yes | No | ? | 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. HTML/XML named entity: ​ [6][c]
|
zero width non-joiner | U+200C | 8204 | | Yes | Context-dependent[11] | ? | 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 named entity: ‌
|
zero width joiner | U+200D | 8205 | | Yes | Context-dependent[12] | ? | 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. Can also be used to display joining forms in isolation. Depending on whether a ligature or conjunct is expected by default, can either induce (as in emoji and in Sinhala) or suppress (as in Devanagari) substitution with a single glyph, whilst still permitting use of individual joining forms (unlike ZWNJ). HTML/XML named entity: ‍
|
word joiner | U+2060 | 8288 | | No | No | ? | General Punctuation |
Other, Format |
WJ, word joiner. Similar to U+200B, but not a point at which a line may be broken. HTML/XML named entity: ⁠
|
zero width non-breaking space | U+FEFF | 65279 | | No | No | ? | Arabic Presentation Forms-B |
Other, 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. |
|
Within the algorithm for Bidirectional writing, Unicode uses another definition of "Whitespace" (Bidirectional Character Type=WS). These Bidi-WS characters (18 out of the 26 listed in the table here) are "Neutral", they do not determine a writing direction, they just follow neighboring characters in this. The eight other characters listed here are also "Neutral", but have a different Bidi-type.
Usage
Computer languages
Runs of whitespace (beyond a first whitespace character) occurring within source code written in computer programming languages are generally ignored; such languages are free-form. But, for example, in Haskell and Python, whitespace and indentation are used for syntactical purposes. And in the language called Whitespace, whitespaces are the only valid characters for programming, while any other characters are ignored.
Still, for most programming languages, abundant use of whitespace, especially trailing whitespace at the end of lines, is considered a nuisance.[by whom?] However correct use of whitespace can make the code easier to read and help group related logic. In interpreted languages, parsing of unnecessary whitespace may affect the speed of execution. In markup languages like HTML, unnecessary whitespace increases the file size, and may so affect the speed of transfer over a network. 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.
The C language defines whitespace to be "... space, horizontal tab, new-line, vertical tab, and form-feed".[14] The HTTP network protocol requires different types of whitespace to be used in different parts of the protocol, such only the space character in the status line, CRLF at the end of a line, and "linear white space" in header values.[15]
Visible symbol
Sometimes the visible symbol ␣ (Unicode U+2423, decimal 9251, open box) is used to indicate a space. It is much like a closing square bracket ], although not as wide, rotated a quarter-turn clockwise and placed below the writing line. Some fonts render it too narrowly.
This symbol is used in a textbook on the Modula-2 computer language published ca. 1985 by Springer-Verlag, where it is necessary to explicitly indicate a space code. The symbol is also used in the keypad silkscreening of TI-8x series graphing calculators from Texas Instruments.[16]
File names
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]
See also
- Programming style
- Whitespace (programming language)
- Indent style
- Space (punctuation)
- Trimming (computer programming)
- Regular expression#POSIX character classes: the white space character class
References
- ^ "Character design standards – space characters". Character design standards. Microsoft. 1998–1999. Archived from the original on March 14, 2010. Retrieved 2009-05-18.
- ^ The Unicode Standard 5.0, printed edition, p. 205; also available at "Chapter 6 — Writing Systems and Punctuation" (PDF). The Unicode Standard 5.0, electronic edition. Unicode Consortium. 2006-07-14. p. 11 (205). Retrieved 2022-12-22.
- ^ "General Punctuation" (PDF). The Unicode Standard 5.1. Unicode Inc. 1991–2008. Retrieved 2009-05-13.
- ^ Sargent, Murray III (2006-08-29). "Unicode Nearly Plain Text Encoding of Mathematics (Version 2)". Unicode Technical Note #28. Unicode Inc. pp. 19–20. Retrieved 2009-05-19.
- ^ Gillam, Richard (2002). Unicode Demystified: A Practical Programmer's Guide to the Encoding Standard. Addison-Wesley. ISBN 0-201-70052-2.
- ^ a b Hickson, Ian. "12.5 Named character references". HTML Standard. WHATWG.
- ^ Wolfram. "\[NegativeThickSpace]". Wolfram Language Documentation.
- ^ Wolfram. "\[NegativeMediumSpace]". Wolfram Language Documentation.
- ^ Wolfram. "\[NegativeThinSpace]". Wolfram Language Documentation.
- ^ Wolfram. "\[NegativeVeryThinSpace]". Wolfram Language Documentation.
- ^ Faltstrom, P., ed. (August 2010). "Zero Width Non-Joiner". The Unicode Code Points and Internationalized Domain Names for Applications (IDNA). IETF. sec. A.1. doi:10.17487/RFC5892. RFC 5892. Retrieved September 4, 2019.
- ^ Faltstrom, P., ed. (August 2010). "Zero Width Joiner". The Unicode Code Points and Internationalized Domain Names for Applications (IDNA). IETF. sec. A.2. doi:10.17487/RFC5892. RFC 5892. Retrieved September 4, 2019.
- ^ "Unicode Standard Annex #44, Unicode Character Database".
- ^ http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1548.pdf Section 6.4, paragraph 3
- ^ "2.2 Basic Rules", Hypertext Transfer Protocol—HTTP/1.1, RFC 2616
{{citation}}
: Unknown parameter|authors=
ignored (help) - ^ Above the zero "0" or negative "(‒)" key