/
642.txt
201 lines (147 loc) · 7.28 KB
/
642.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
[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[ ]]
[10] [[HTML]] の[[文字実体参照]]
[DFN[[CODE[ ]]]]
は、
[CODE[U+00A0]]
を表します
[SRC[[CITE[[[HTML Standard]]]]]]。
[HISTORY[
[1] [[HTML 4]] <IW:HTML4:"struct/text.html#nbsp"> によると、
[CODE(HTML)[ ]] == [CODE(HTML)[ ]] ==
[CODE(HTML)[ ]] を使って、[[著者]]は、二つの語の間で[[改行]]が起こらないように指示できます。
常識的に考えて、[[参照]]ではない [CODE(char)[U+00A0]] ([CODE(char)[[[NBSP]]]])
を使っても同じ結果を期待できるはずです。
[2] 当初は [CODE(HTML)[ ]] の位置付けは不安定であり、
[[処理指令]]が[[置換文]]である参照とすることや
[CODE(HTML)[ ]] の意味の参照とすることが提案されたこともありました。
処理指令案では[[属性値表記]]内で使えないという問題がありますし、
後者の案では [[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]
勝手に [CODE[U+0020]] に置き換える実装があるので要注意です。
* 関連
[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]
* メモ
[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[ ]] に[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> </td> or <td><br></td>)
[12] [CITE@en[Web Applications 1.0 r7076 Add 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]]; 間隔)
を表すのに (= U+00A0; NO-BREAK SPACE; [[NBSP]]; ノーブレークスペース *1)
を使うのってどうなんでしょ。
注1 [[JIS]] では本当にこんな[[日本語通用名称]]なのだ。
もっとまともな命名はできんのか?
できればわたしも なんて使いたくないですが。
打つのめんどいから。
[4] が使われているほとんどの場合は、 CSS margin で代替すべき
だとか。 (でもめんどくさいんだよねー) table の border のために
空セルに ってのもなんだかなあ。
が嫌だから(?), [[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>元オフィスを 住居に リノベーション &n..</p></a></div>
]FIG]