In
computer programming
Computer programming is the process of performing a particular computation (or more generally, accomplishing a specific computing result), usually by designing and building an executable computer program. Programming involves tasks such as anal ...
, whitespace is any
character
Character or Characters may refer to:
Arts, entertainment, and media Literature
* ''Character'' (novel), a 1936 Dutch novel by Ferdinand Bordewijk
* ''Characters'' (Theophrastus), a classical Greek set of character sketches attributed to The ...
or series of characters that represent horizontal or vertical
space
Space is the boundless three-dimensional extent in which objects and events have relative position and direction. In classical physics, physical space is often conceived in three linear dimensions, although modern physicists usually con ...
in
typography
Typography is the art and technique of arranging type to make written language legible, readable and appealing when displayed. The arrangement of type involves selecting typefaces, point sizes, line lengths, line-spacing ( leading), an ...
. 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 (also
ASCII
ASCII ( ), abbreviated from American Standard Code for Information Interchange, is a character encoding standard for electronic communication. ASCII codes represent text in computers, telecommunications equipment, and other devices. Because ...
32) represents a
blank space punctuation character in text, used as a
word divider
In punctuation, a word divider is a glyph that separates written words. In languages which use the Latin, Cyrillic, and Arabic alphabets, as well as other scripts of Europe and West Asia, the word divider is a blank space, or ''whitespace''. ...
in Western
script
Script may refer to:
Writing systems
* Script, a distinctive writing system, based on a repertoire of specific elements or symbols, or that repertoire
* Script (styles of handwriting)
** Script typeface, a typeface with characteristics of ha ...
s.
Overview
With many keyboard layouts, a whitespace character may be entered by pressing . Horizontal whitespace may also be entered on many keyboards with the key, although the length of the space may vary. Vertical whitespace may be input by typing , which creates a 'newline' code sequence in most programs. On older keyboards, this key may instead be labeled , a holdover from typewriter keyboards' carriage return keys, which generated an electromechanical return to the left stop (Unicode character ) and a move to the next line (). Many early computer games used whitespace characters to draw a screen (e.g.
Kingdom of Kroz
''Kroz'' is a series of Roguelike video games created by Scott Miller for IBM PC compatibles. The first episode in the series, ''Kingdom of Kroz'', was released in 1987 as Apogee Software's first game. It was also published on '' Big Blue Dis ...
), and word processing software used them to produce printed effects such as bold, underline, and
strikethrough.
The term "whitespace" is based on the appearance of the characters on ordinary
paper
Paper is a thin sheet material produced by mechanically or chemically processing cellulose fibres derived from wood, Textile, rags, poaceae, grasses or other vegetable sources in water, draining the water through fine mesh leaving the fibre e ...
. However, within an application, whitespace characters can be processed in the same way as any other character code and different programs may define their own semantics for the characters.
Unicode
The table below lists the twenty-five characters defined as whitespace ("WSpace=Y", "WS") characters in the
Unicode
Unicode, formally The Unicode Standard,The formal version reference is is an information technology standard for the consistent encoding, representation, and handling of text expressed in most of the world's writing systems. The standard, ...
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:
; 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
Braille (Pronounced: ) is a tactile writing system used by people who are visually impaired, including people who are blind, deafblind or who have low vision. It can be read either on embossed paper or by using refreshable braille display ...
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](_blank)
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 processor
A word processor (WP) is a device or computer program that provides for input, editing, formatting, and output of text, often with some additional features.
Word processor (electronic device), Early word processors were stand-alone devices ded ...
s, 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
An interpunct , also known as an interpoint, middle dot, middot and centered dot or centred dot, is a punctuation mark consisting of a vertically centered dot used for interword separation in ancient Latin script. (Word-separating spaces did no ...
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 encoding
Character encoding is the process of assigning numbers to graphical characters, especially the written characters of human language, allowing them to be stored, transmitted, and transformed using digital computers. The numerical values tha ...
s, 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 below for a complete list.
Hair spaces around dashes
Em dash
The dash is a punctuation mark consisting of a long horizontal line. It is similar in appearance to the hyphen but is longer and sometimes higher from the baseline. The most common versions are the endash , generally longer than the hyphen b ...
es used as parenthetical dividers, and
en dashes
The dash is a punctuation mark consisting of a long horizontal line. It is similar in appearance to the hyphen but is longer and sometimes higher from the baseline. The most common versions are the endash , generally longer than the hyphen b ...
when used as word joiners, are usually set continuous with the text. However, such a dash can optionally be surrounded with a hair space, U+200A, or
thin space
In typography, a thin space is a space character whose width is usually or of an em. It is used to add a narrow space, such as between nested quotation marks or to separate glyphs that interfere with one another. It is not as narrow as the hai ...
, U+2009. The hair space can be written in HTML by using the
numeric character references
 
or
 
, or the named entity
 
, but is not universally supported in browsers yet, The
thin space
In typography, a thin space is a space character whose width is usually or of an em. It is used to add a narrow space, such as between nested quotation marks or to separate glyphs that interfere with one another. It is not as narrow as the hai ...
is named entity
 
and numeric references
 
or
 
. These spaces are much thinner than a normal space (except in a
monospaced (non-proportional) font), with the hair space being the thinner of the two.
Computing applications
Programming languages
In
programming language
A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language.
The description of a programming l ...
syntax, spaces are frequently used to explicitly separate
tokens. In most languages multiple whitespace characters are treated the same as a single whitespace character (outside of quoted strings); such languages are called ''
free-form''. In a few languages, including
Haskell,
occam,
ABC, and
Python, whitespace and indentation are used for syntactical purposes. In the satirical language called
Whitespace
White space or whitespace may refer to:
Technology
* Whitespace characters, characters in computing that represent horizontal or vertical space
* White spaces (radio), allocated but locally unused radio frequencies
* TV White Space Database, a mec ...
, whitespace characters are the only valid characters for programming, while any other characters are ignored.
Excessive use of whitespace, especially ''trailing whitespace'' at the end of lines, is considered a nuisance. However correct use of whitespace can make the code easier to read and help group related logic.
Most languages only recognize ASCII characters as whitespace, or in some cases Unicode newlines as well, but not most of the characters listed above. The
C language defines whitespace characters to be "space, horizontal tab, new-line, vertical tab, and form-feed". The
HTTP
The Hypertext Transfer Protocol (HTTP) is an application layer protocol in the Internet protocol suite model for distributed, collaborative, hypermedia information systems. HTTP is the foundation of data communication for the World Wide Web, ...
network protocol requires different types of whitespace to be used in different parts of the protocol, such as: only the space character in the
status line, CRLF at the end of a line, and "linear whitespace" in header values.
Command line user interfaces
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
Separator can refer to:
* A mechanical device to separate fluids and solids, like
** Cream separator, separates cream from milk
** Demister (vapor), removal of liquid droplets entrained in a vapor stream
** Separator (oil production), of an oil pr ...
. Ambiguity can be prevented either by prohibiting embedded spaces, or by enclosing a name with embedded spaces between quote characters.
Markup languages
Some markup languages, such as
SGML, preserve whitespace as written.
Web markup languages such as
XML and
HTML
The HyperText Markup Language or HTML is the standard markup language for documents designed to be displayed in a web browser. It can be assisted by technologies such as Cascading Style Sheets (CSS) and scripting languages such as JavaScri ...
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 "
=
" 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.
In XML attribute values, sequences of whitespace characters are treated as a single space when the document is read by a parser. Whitespace in XML element content is not changed in this way by the parser, but an application receiving information from the parser may choose to apply similar rules to element content. An XML document author can use the
xml:space="preserve"
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.
Conforming HTML renderers are required to apply a more literal treatment of whitespace within a few prescribed elements, such as the
pre
tag and any element for which
CSS has been used to apply
pre
-like whitespace processing. In such elements, space characters will not be "collapsed" into inter-word separators.
In both XML and HTML, the
non-breaking space
In word processing and digital typesetting, a non-breaking space, , also called NBSP, required space, hard space, or fixed space (though it is not of fixed width), is a space character that prevents an automatic line break at its position. In s ...
character, along with other non-"standard" spaces, is not treated as collapsible "whitespace", so it is not subject to the rules above.
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 . 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".
It was used in
BCDIC,
EBCDIC,
and
ASCII-1963.
See also
*
Carriage return
A carriage return, sometimes known as a cartridge return and often shortened to CR, or return, is a control character or mechanism used to reset a device's position to the beginning of a line of text. It is closely associated with the line feed ...
*
Em (typography)
*
En (typography)
*
Form feed
*
Indent style
In computer programming, an indentation style is a convention governing the indentation of blocks of code to convey program structure. This article largely addresses the free-form languages, such as C and its descendants, but can be (and oft ...
*
Line feed
*
Newline
*
Programming style
*
Prosigns for Morse code
*
Regular expression#Character classes for the white-space character class.
*
Space bar
The space bar is on the bottom center of the keyboard
The space bar, spacebar, blank, or space key is a key on a typewriter or alphanumeric keyboard in the form of a horizontal bar in the lowermost row, significantly wider than all other keys ...
*
Space (punctuation)
*
Tab key
*
Trimming (computer programming)
*
Whitespace (programming language)
*
Zero-width space
References
External links
Property List of Unicode Character Database
{{DEFAULTSORT:Whitespace (Computer Science)
Character encoding
Source code
Whitespace