/[pub]/suikawiki/wikidata/page/48544D4C.ns/B6F5C7F2.txt
Suika

Contents of /suikawiki/wikidata/page/48544D4C.ns/B6F5C7F2.txt

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.3 - (hide annotations) (download)
Thu Nov 18 02:10:12 2004 UTC (19 years, 10 months ago) by wakaba
Branch: MAIN
Changes since 1.2: +130 -90 lines
File MIME type: text/plain
auto-committed

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

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24