1 |
wakaba |
1.1 |
#?SuikaWiki/0.9
|
2 |
|
|
[2] HTML 4 <IW:HTML4:"struct/text.html#whitespace">
|
3 |
|
|
は、次を[DFN[[RUBYB[[[空白]]] [white space]]文字]]としています。
|
4 |
|
|
- [[ASCII]] [[間隔]] ([CODE(char)[U+0020]] [CODE(char)[[[SPACE]]]]))
|
5 |
|
|
- ASCII [[タブ]] ([CODE(char)[U+0009]] [CODE(char)[HORIZONTAL TAB]])
|
6 |
|
|
- ASCII [[改頁]] ([[書式送り]]) ([CODE(char)[U+000C]] [CODE(char)[FORM FEED]])
|
7 |
|
|
- [[零幅間隔]] ([CODE(char)[U+200C]] [CODE(char)[ZERO-WIDTH SPACE]])
|
8 |
|
|
- [RUBYB[[[改行]]] [line break]]
|
9 |
|
|
-- [[復帰]] ([CODE(char)[U+000D]] [CODE(char)[CARRIAGE RETURN]])
|
10 |
|
|
-- 改行 ([[行送り]]) ([CODE(char)[U+000A]] [CODE(char)[LINE FEED]])
|
11 |
|
|
-- 復帰改行組 ([CODE(char)[[[CRLF]]]])
|
12 |
|
|
|
13 |
|
|
です。 HTML 4 の[[文書文字集合]]には他にも定義によっては空白文字に属する[[文字]]が色々含まれていますが、
|
14 |
|
|
HTML 4 の空白は上記だけです。
|
15 |
|
|
HTML 4 仕様書は、他の種類の空白の扱いについては規定せず、
|
16 |
|
|
[[著者]]は空白制御のためには適切な[[要素]]や[[スタイル]]を使うべき (should)
|
17 |
|
|
としています。
|
18 |
|
|
|
19 |
|
|
[3] [CODE(HTMLe)[[[pre]]]] 以外の HTML 要素では、
|
20 |
|
|
空白が「[DFN[語]]」を分離します。
|
21 |
|
|
(ここで、語とは、非空白文字の連続体のことです。)
|
22 |
|
|
[[UA]] は、[[書式付け]]に際して、その[[言語]]・[[用字系]]および対象[[媒体]]の慣習に従って語を識別し、これを配置するべきです
|
23 |
|
|
(should)。
|
24 |
|
|
|
25 |
|
|
語間に間隔 ([DFN[[RUBYB[語間] [inter-word]]間隔]]) を挿入すると見た目が向上するかもしれません。
|
26 |
|
|
しかし、間隔の取り方に関する慣習は言語・用字系により種々です。
|
27 |
|
|
HTML 4 仕様書が挙げている例では、
|
28 |
|
|
- [[ラテン文字]]では間隔を挿入する
|
29 |
|
|
- [[タイ文字]]では零幅間隔を挿入する
|
30 |
|
|
-- 注: [[タイ語]]は、日本語や中文のように語間間隔を入れずに表記します。
|
31 |
|
|
だけど零幅間隔を使えば単語境界を機械的に識別できるじゃん! という文脈でよく例になります。
|
32 |
|
|
(しかしながら、 [[TIS620]] には零幅間隔はないと思うし、本当に使われているんだか。)
|
33 |
|
|
- [[日本語]]や[[中文]]では全く語間間隔を表示しない
|
34 |
|
|
|
35 |
|
|
[[原始文書]]中の空白列は、全く異なって[[レンダリング]]されるかもしれないことに注意が必要です。
|
36 |
|
|
UA は、原始文書中の空白列をレンダリングするときにはまとめて1つ分の語間間隔にするべきです。
|
37 |
|
|
これは、自然言語情報 ([CODE(HTMLa)[[[lang]]]] 属性や上位プロトコルからの値)
|
38 |
|
|
が得られないときでも行うことができ、また行うべき
|
39 |
|
|
(can & should) とされています。
|
40 |
|
|
空白が重要なときには、 [CODE(HTMLe)[pre]] 要素型を使います。
|
41 |
|
|
|
42 |
|
|
[4] [[SGML]] の規定や既存 UA 実装の問題から、
|
43 |
|
|
[[開始タグ]]直後や[[終了タグ]]直前の空白が表示されることを当てにするべきではありません
|
44 |
|
|
(should not)。
|
45 |
|
|
|
46 |
|
|
たとえば、 [SAMP(HTML)[I <a>love</a> you.]]
|
47 |
|
|
を [SAMP(HTML)[I<a> love </a>you.]] と書いてしまうと、
|
48 |
|
|
意図とは異なることが多いでしょう。
|
49 |
|
|
|
50 |
|
|
SGML の問題は、[[記録開始]]や[[記録終了]]の無視に関する規則のことで、
|
51 |
|
|
[[タグ]]の前後に改行があるときに注意が必要です。
|
52 |
wakaba |
1.2 |
詳しくは [CODE(SGML)[[[SGML//空白]]]]を参照。
|
53 |
|
|
|
54 |
|
|
[[#comment]]
|
55 |
|
|
|
56 |
|
|
* FORM FEED
|
57 |
|
|
|
58 |
|
|
[5] HTML 4 は、 >>2 の通り、 [CODE(char)[U+000C]]
|
59 |
|
|
[CODE(char)[FORM FEED]] ([[改頁]]) を空白の一種としています。
|
60 |
|
|
|
61 |
|
|
ところが、 HTML 4 の [[SGML宣言]]
|
62 |
|
|
<http://www.w3.org/TR/html4/sgml/sgmldecl.html>
|
63 |
|
|
は、 [CODE(char)[U+000C]] を [CODE(SGML)[[[UNUSED]]]]
|
64 |
|
|
としています。もちろん [CODE(SGML)[[[s]]]] にも含まれません。
|
65 |
|
|
|
66 |
|
|
SGML 宣言を信じるとすると、 [CODE(char)[U+000C]]
|
67 |
|
|
は HTML 4 では使用できず、 >>2 の規定は無駄になります。
|
68 |
|
|
|
69 |
|
|
[6] ''XHTML 1.0 C.15. White Space Characters in HTML vs. XML'' <http://www.w3.org/TR/xhtml1/#C_15>
|
70 |
|
|
は、 HTML では [CODE(char)[U+000C]]
|
71 |
|
|
を使えるが、 XHTML では使えないと言っています。
|
72 |
|
|
|
73 |
|
|
[7] 本文が正しく、 [CODE(char)[U+000C]] が使えたとしても、
|
74 |
|
|
[CODE(SGML)[s]] には含まれないので、 HTML 文書の本文では >>2
|
75 |
|
|
の通りの扱いを受けますが、 SGML 的には空白として使えません
|
76 |
|
|
(例えば[[属性指定]]の間には使えません)。
|
77 |
|
|
|
78 |
|
|
[[#comment]]
|
79 |
|
|
|
80 |
|
|
* ZWSP
|
81 |
|
|
|
82 |
|
|
[8] [CODE(char)[U+200C]] [CODE(char)[ZERO-WIDTH SPACE]]
|
83 |
|
|
は >>2 の通り HTML で空白として扱われます。
|
84 |
|
|
しかし、 SGML 宣言によれば、 [CODE(SGML)[s]]
|
85 |
|
|
には含まれません。ですから、 HTML 文書の本文では >>2
|
86 |
|
|
の通りの扱いを受けますが、 SGML 的には空白として使えません
|
87 |
|
|
(例えば属性指定の間には使えません)。
|
88 |
|
|
|
89 |
|
|
[[#comment]]
|
90 |
|
|
|
91 |
|
|
* メモ |