Jump to content

Zero-width space

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Unitacx (talk | contribs) at 01:04, 9 March 2025 (Encoding: "mailto" link %E2%80%8B). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

The zero-width space (rendered: ; HTML entity: ​ or ​), abbreviated ZWSP, is a non-printing character used in computerized typesetting to indicate where the word boundaries are, without actually displaying a visible space in the rendered text. This enables text-processing systems for scripts that do not use explicit spacing to recognize where word boundaries are for the purpose of handling line breaks appropriately.

The zero-width space can also be used to prevent automatic conversion of certain character combinations into emojis. Some systems will automatically convert symbols like :) into 🙂—inserting a zero-width space between the characters that make up the symbol will prevent the conversion and preserve the original characters. This can be useful when the original symbols are preferred over the emoji representation.

The zero-width space is Unicode character U+200B, and is located in the Unicode General Punctuation block. In HTML, it can be represented by the character entity reference ​.

Purpose

The zero-width space marks a potential line break without hyphenation. Its semantics and HTML implementation are similar to the soft hyphen, but soft hyphens display a hyphen character at the point where the line is broken.

The zero-width space can be used to mark word breaks in languages without visible space between words, such as Thai, Myanmar, Khmer, and Japanese.[1]

In justified text, the rendering engine may add inter-character spacing, also known as letter spacing, between letters separated by a zero-width space, unlike around fixed-width spaces.[1]

Example

To show the effect of the zero-width space in text, the following words have been separated with zero-width spaces:

Lorem​Ipsum​Dolor​Sit​Amet​Consectetur​Adipiscing​Elit​Sed​Do​Eiusmod​Tempor​Incididunt​Ut​Labore​Et​Dolore​Magna​Aliqua​Ut​Enim​Ad​Minim​Veniam​Quis​Nostrud​Exercitation​Ullamco​Laboris​Nisi​Ut​Aliquip​Ex​Ea​Commodo​Consequat​Duis​Aute​Irure​Dolor​In​Reprehenderit​In​Voluptate​Velit​Esse​Cillum​Dolore​Eu​Fugiat​Nulla​Pariatur​Excepteur​Sint​Occaecat​Cupidatat​Non​Proident​Sunt​In​Culpa​Qui​Officia​Deserunt​Mollit​Anim​Id​Est​Laborum

By contrast, the following words have not been separated:

LoremIpsumDolorSitAmetConsecteturAdipiscingElitSedDoEiusmodTemporIncididuntUtLaboreEtDoloreMagnaAliquaUtEnimAdMinimVeniamQuisNostrudExercitationUllamcoLaborisNisiUtAliquipExEaCommodoConsequatDuisAuteIrureDolorInReprehenderitInVoluptateVelitEsseCillumDoloreEuFugiatNullaPariaturExcepteurSintOccaecatCupidatatNonProidentSuntInCulpaQuiOfficiaDeseruntMollitAnimIdEstLaborum

The first text is broken into lines but only at word boundaries, and resizing the browser window will re-break the text accordingly, while the second text is not broken at all.

Usage

HTML

In HTML pages, the HTML element <wbr> functions as a zero-width space. In Internet Explorer 6, the zero-width space was not supported in some fonts.[2]

Prohibition in domain names

ICANN rules prohibit domain names from containing non-displayed characters, including the zero-width space, and most browsers prohibit their use within domain names because they can be used to create a homograph attack, where a malicious URL is visually indistinguishable from a legitimate one.[3][4]

Encoding

The zero-width space character is encoded in Unicode as U+200B ZERO WIDTH SPACE.[5]

In HTML, it can be referenced as &ZeroWidthSpace;, &#8203; or &#x200B;. Additionally, the character entities &NegativeThickSpace;, &NegativeMediumSpace;, &NegativeThinSpace;, and &NegativeVeryThinSpace; all also refer to the zero-width space, contrary to what their names suggest.[6]

In HTML 'mailto:' tags, %E2%80%8B renders a zero-width space (but may interfere with correctly copying the email link).

The TeX representation is \hskip0pt; the LaTeX representation is \hspace{0pt};[7] and the groff representation is \:.[8]

See also

References

Citations

  1. ^ a b "23.2 Layout Controls". The Unicode® Standard Version 15.0 – Core Specification (PDF). The Unicode Consortium. September 2022. p. 918. ISBN 978-1-936213-32-0.
  2. ^ Dunae, Alex. "Better Web Typography with Spaces and Hyphens". dunae.ca. Archived from the original on December 14, 2010. Retrieved December 3, 2009.
  3. ^ "Network.IDN.blacklist_chars". mozillaZine. Retrieved 2018-02-07.
  4. ^ "Unicode Character 'Zero Width Space'". FileFormat.Info. Retrieved 2018-02-07.
  5. ^ "General Punctuation – Unicode" (PDF). Retrieved 2013-07-20.
  6. ^ Entities/ZeroWidthSpace in MathML Version 2.0
  7. ^ "The LaTeX Companion. Chapter 3: Basic Formatting Tools" (PDF). Retrieved 2019-07-16.
  8. ^ "groff(7) – Linux manual page". Retrieved 2014-02-08.

Sources