[13] 
[DFN[[CODE[U+00A0]]]]
[DFN[[CODE(charname)@en[NBSP]]]]
は、
[[スペース]]の一種です。

[14] 
通常の[[スペース]] [CODE[U+0020]] に近いですが、
行末で[[改行]]に置き換えられたりしない空白を表す文字です。

* 仕様書

[REFS[
- [18] [CITE[The Unicode Standard, Version 13.0 - ch23.pdf]], [TIME[2020-03-09T17:53:52.000Z]], [TIME[2020-12-09T10:59:29.820Z]] <https://www.unicode.org/versions/latest/ch23.pdf#G15334>
]REFS]

* レンダリング


[20] 
[CODE[U+00A0]] [CODE(charname)@en[NO-BREAK SPACE]]
は、
[CODE[U+0020]] [CODE(charname)@en[SPACE]]
と同じ[[幅]]を持ちます。
[SRC[>>18]]

[21] 
[CODE(char)[U+00A0]]
は、
通常はそれと前後の[[文字]]との間で[RUBYB[[[改行]]][line break]]が認められないことを表します。
ただし前後が[[行分離子]]、
[[段落分離子]]、
[[間隔]]、
[[零幅間隔]]の場合を除きます。
[SRC[>>18]]



* 文字実体参照 [CODE[&nbsp;]]

[10] [[HTML]] の[[文字実体参照]]
[DFN[[CODE[&nbsp;]]]]
は、
[CODE[U+00A0]]
を表します
[SRC[[CITE[[[HTML Standard]]]]]]。


[HISTORY[
[1] [[HTML 4]] <IW:HTML4:"struct/text.html#nbsp"> によると、
[CODE(HTML)[&nbsp;]] == [CODE(HTML)[&#160;]] ==
[CODE(HTML)[&#xA0;]] を使って、[[著者]]は、二つの語の間で[[改行]]が起こらないように指示できます。
常識的に考えて、[[参照]]ではない [CODE(char)[U+00A0]] ([CODE(char)[[[NBSP]]]])
を使っても同じ結果を期待できるはずです。



[2] 当初は [CODE(HTML)[&nbsp;]] の位置付けは不安定であり、
[[処理指令]]が[[置換文]]である参照とすることや
[CODE(HTML)[&#x20;]] の意味の参照とすることが提案されたこともありました。
処理指令案では[[属性値表記]]内で使えないという問題がありますし、
後者の案では [[SGML]] 的には生の [CODE(char)[[[SP]]]]
と同義となり、連続する[[空白]]に関する HTML
の表示規則の SGML 的立場が微妙となります。

結局 HTML の[[文書文字集合]]に [[ISO/IEC 8859]]‐1
が選ばれ、同名の文字である [CODE(char)[[[NBSP]]]]
の参照であるという解釈に落ち着きました。

[9]
[CITE[Toward Closure on HTML]] ([CODE[1994-04-07 09:56:59 +09:00]] 版) <http://www.w3.org/People/Connolly/drafts/html-direction.html>
]HISTORY]

* 実装

[15] 
勝手に [CC[U+0020]] に置き換える実装があるので要注意です。


[26] 
[[Windows]] の [[Chrome]] も [[Firefox]] も[[クリップボードにコピー]]で勝手にもとの
[CC[U+00A0]] を [CC[U+0020]] に置換するようです。
[TIME[2025-09-06T12:08:01.00Z]]

* 関連

[22] [[零幅]]の [CODE(charname)@en[WORD JOINER]]
もあります。当初は
[CODE(charname)@en[ZWNBSP]] がありました。

* 歴史

[16] 
[[ISO/IEC 8859]] シリーズで[[ビット組合せ]]
[DFN[[CODE[10/0]]]]
に割り当てられていました。
[[ISO/IEC 8859-1]] からそのまま [[Unicode]]
の
[CODE[U+00A0]] に取り込まれました。


[FIG(quote)[ [19] [[JIS X 0213:2000]] 6.5.2 m) 2) ラテン1互換文字

>
[B[備考]] [[NO-BREAK SPACE]] ([[NBSP]]) は, [B[ISO/IEC 8859]] では, 空白で表示され, テキストを表示する際
に改行を禁止するために用いられるものと規定されているが, この規格では, テキストを表示
する際に改行を禁止する機能をもたなくてもよい。 [SNIP[]]
]FIG]

** [CODE[sp]] 要素 (HTML)

[FIG(data)[ [216] [[HTML要素概説]]

:[F[要素名]]:[CODE[sp]]
:日付:[TIME[1993-07-13]]
:説明:
[TIME[1993-05-19]]、
[[Dave Raggett]]
は 
[[www-talk]]
への投稿で、
[CODE[pre]]
外の non-breakable space
の要望を受け付けている。 [SRC[>>23]]
:説明:
[TIME[1993-07-13]]版 [CITE[HTML+]] [[DTD]]
に [CODE[sp]] 
があり、
unbreakable space 
と説明されている。
[SRC[HTML+19930713]]
[[文字]] [CN[NBSP]] に相当すると思われる。
:出典:
[REFS[

- [23] 
[DFN[HTMLDTDDave]]:
[CITE@en[Re: HTML DTD]], 
[DATA(.author)[[[Dave Raggett]]]],
[TIME(.published)[Wed, 19 May 93 14:50:37 BST][1993-05-19T14:50:37+00:00]],
[TIME[2024-08-13T02:50:16.000Z]] <http://1997.webhistory.org/www.lists/www-talk.1993q2/0354.html>

]REFS]


]FIG]

[FIG(data)[ [54] [[HTML要素概説]]

:[F[要素名]]:[CODE[sp]]
:日付:[TIME[1993-07-30]]
:説明:
[TIME[1993-07]]の
[[WWWWW]]
で、
[[文字参照]]
[CODE(HTML)[&nbsp;]]
の追加が合意された。
[SRC[>>24]]
これを承けて
[CODE[sp]]
は削除されたとみられる。
:出典:
[REFS[

-
[24] 
[CITE[Notes from WWWWW]],
[DATA(.author)[[[Tony Sanders]]]],
[TIME(.published)[Tue, 10 Aug 1993 16:56:28 -0500][1993-08-10T16:56:28-05:00]],
[TIME[2024-08-13T07:58:56.000Z]] <http://1997.webhistory.org/www.lists/www-talk.1993q3/0461.html>
]REFS]

]FIG]


[FIG(data)[ [208] [[HTML要素概説]]

:[F[要素名]]:[CODE[sp]]
:日付:[TIME[1994]]
:説明:
[TIME[1994]]時点で [[Emacs/W3]] は、
[CODE[sp]]
を実装していた。 [CN[SPACE]] に置換される。
:出典:
[REFS[

- 
[CITE[[[Emacs/W3]] 2.1p46]],
[TIME(.published)[1994-08-01 11:42][1994-08-01T11:42]],
[TIME[2024-09-11T12:08:47.100Z]]
<http://www.nic.funet.fi/index/WWW/emacs/html-mode/w3-2.1p46.tar.gz>

]REFS]

]FIG]



* メモ

[17] 
もしかすると、元々の役割的には、
[[東アジア]]の
[CODE(charname)@en[IDSP]]
と[[欧米]]の
[CODE(charname)@en[NBSP]]
は同じだったのかもしれません。

[8]
[[日本語]]で使われることを想定していない
(というより [[ISO/IEC 8859]]−1 か [[CP1251]] 辺りを想定している)
[[HTML]] [[著述器]]なり変換器なりをつかったらしく、[[シフトJIS]]
の[[第2バイト]]の [CODE(char)@en[0xA0]] が
[CODE(HTML)@en[&nbsp;]] に[Q[[[文字化け]]]]している古い [[HTML]]
[[文書]]が、ままよく見受けられます。

;; [[右半分]]の[[バイト]]がすべて[[文字化け]]していてもよさそうなものですが、なぜか [CODE(char)@en[0xA0]] だけのものが多いです。
おそらく、 [CODE(charname)@en[[[NBSP]]]] は透明だから[[実体参照]]に変換しておいたほうがよいというお節介な設計のソフトウェアなのでしょう。

;; 
[[著者]]は[[文書]]がきちんと見えることを確認しなかったのでしょうかね?
それとも、システムの[[文字コード]]にかかわらず [[Latin-1]]
の[[符号位置]]そのままで出力していた古い時代の [[Webブラウザ]]では[Q[きちんと]]見えたのでしょうかね?

([[名無しさん]])

[11]
[CITE[Tables in Netscape 1.1]] ([CODE[2007-07-01 20:32:43 +09:00]] 版) <http://wp.netscape.com/assist/net_sites/tables.html>

> Blank cells which contain no displayable elements are not given borders. If you wish the appearance of an empty cell, but with borders, put either a blank line or a non-breaking space in the cell. (<td>&nbsp;</td> or <td><br></td>)


[12] [CITE@en[Web Applications 1.0 r7076     Add &nbsp; to WebVTT.]]
( ([TIME[2012-04-26 07:53:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=7075&to=7076>

[3] 前々から思ってたけど、 [[HTML]] で SP (U+0020; [[SPACE]]; 間隔)
を表すのに &nbsp; (= U+00A0; NO-BREAK SPACE; [[NBSP]]; ノーブレークスペース *1)
を使うのってどうなんでしょ。

注1 [[JIS]] では本当にこんな[[日本語通用名称]]なのだ。
もっとまともな命名はできんのか?

できればわたしも&nbsp;なんて使いたくないですが。
打つのめんどいから。

[4] &nbsp; が使われているほとんどの場合は、 CSS margin で代替すべき
だとか。 (でもめんどくさいんだよねー) table の border のために
空セルに &nbsp; ってのもなんだかなあ。

&nbsp; が嫌だから(?), [[IDSP]] (U+3000; IDEOGRAPHIC SPACE; 和字間隔 *2)
使うってのも、ナニだよねえ。

注2 全角スペースって呼ぶ人もいるけど、全角スペースは EMSP (U+20...
何番だっけ?; EM SPACE; 全角間隔) だよねぇ。でも IDSP = 漢字間隔
ってのも意味不明。

[FIG(quote)[
[FIGCAPTION[
[5] [CITE@ja[ブラウザ JavaScript]]
([TIME[2015-03-14 20:55:05 +09:00]] 版)
<http://www.opera.com/docs/browserjs/>
]FIGCAPTION]

> リッチテキストの編集に関連したバグの回避のために挿入された non-breaking space (nbsp) を削除

]FIG]


[FIG(quote)[
[FIGCAPTION[
[6] [CITE@en[RFC 7749 - The "xml2rfc" Version 2 Vocabulary]]
([TIME[2016-02-04 22:54:51 +09:00]] 版)
<https://tools.ietf.org/html/rfc7749#section-4>
]FIGCAPTION]

>
:    non-breaking space (U+00A0):
Represents a space character where no line break should happen.
This is frequently used in titles (by excluding certain space
characters from the line-breaking algorithm, the processor will
use the remaining whitespace occurrences for line breaks).

]FIG]


[FIG(quote)[
[FIGCAPTION[
[7] [CITE@ja[物件マニア賃貸売買版 '''[''' 大阪 ''']''']]
( ([TIME[2016-10-05 14:41:13 +09:00]]))
<http://www.b-mania.jp/>
]FIGCAPTION]

> <p>元オフィスを 住居に&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;リノベーション &nbsp;&nbsp;&nbsp;&n..</p></a></div>

]FIG]

[FIG(quote)[
[FIGCAPTION[
[25] 
[CITE@ja[非分離スペースと非分離ハイフン、使っても問題ない? - 千里の道をまだまだ走る~ときどきひとやすみ~]], [TIME[2024-10-19T12:41:20.000Z]] <https://senri-miraido.hatenablog.com/entry/2021/05/15/145405>
]FIGCAPTION]

>フランス語の引用符は英語の引用符(" ")ではなく « » となり、« xxxxx » というように « の直後と » の直前にはスペースが必要になるため、« で改行されないように非分離スペースが入力されたりします。フランス語の翻訳上がりのデータではこのスペースが多く見られました。

>医薬系の翻訳会社(複数)から、数字と単位の間の半角スペースや治験薬コード名のハイフンには「改行しないスペース/ハイフン」を使うように指示されているため、使うのが普通かと思っていた。

]FIG]

