テキスト

HTML 4の空白類文字のとり扱ひ

文書文字集合に採用された國際符號化文字集合には,多樣な空白文字が含まれてゐます。その多くは,特定の視覺スペース效果を生成するための印刷術的な表現として,何らかのアプリケーションで用ゐられます。HTML 4では,次に擧げる空白類文字だけが定義されます:

これら以外にも,表意空白(U+3000)――日本では適切でないが「全角スペース」と呼ばれてゐる――や,Unicodeに含まれるEm Space(U+2003)などのスペースに似た文字が存在しますが,これらはHTML 4で定義される空白類文字一般には含まれません。

整形濟みテキスト(pre要素)を除くすべてのHTMLの要素では,空白類は "語"――空白類以外の文字列――の分離を意味します。User Agentはテキストを整形する際,どれが "語" であるかを識別し,自然言語/用字系,出力媒體の慣行に基いて整へます。

テキストのレイアウトには語と語の間にスペース(語間スペース)を伴ふこともありますが,語間スペースの慣例は用字系に依つて異ります。たとへば,ラテン用字系では語間にASCIIスペースを用ゐますが,日本や中國の用字系では一般に語間スペースを使用しません。

(補足:ソース文書内に含まれる "かな" や "漢字" の間に行區切り類――CRもしくはLF,CR/LFのペア――が1つだけ在り,その前後に他の空白類が連續してゐない場合,和文を適切にレンダリングするUser Agentであれば,その行區切り類に據つて文字間にスペースが生じる事はありません。)

ソース文書中で複數の空白類が連續してゐる場合,pre要素を除き,UAはそれらをひとつに纏める必要があります。

著者はHTML 4で定められる以外の "スペース類文字" の扱ひを惡用して,インデント調整や餘白調整のために濫用してはなりません。そのやうな間違つたレイアウト手法は,無駄な空白が散在して煩雜なうへに保守性が惡く,文書のアクセシビリティを低下させます。

著者は,適切なブロックレヴェル要素で構造化したうへで,餘白の調整にはスタイルシートの仕組を用ゐるべきです。

pre要素は,1つ1つの空白類に意味を持つ必然性のあるテキストについて,"整形濟み" であると傳へるために用ゐます。

行區切りと折り返し

1つの行區切り(line break)類は,次のやうに定められます:

これらの行區切り類は,すべてHTML 4仕樣で定義される空白類文字の一般に含まれてゐます。

視覺系ブラウザでは一般に,ブロックレヴェル要素内のテキストをその時點での表示域(viewport)の幅に應じてレイアウトします。もしその時,テキストが1行で收り切らない長さであるなら,各行は自然言語/用字系ごとの慣行に基いて,適切な位置で折り返されます。

たとへばラテンなどの歐文用字系では,ワードラッピング(word wrapping)もしくはハイフネーション(hyphenation)が用ゐられます:

ソフトハイフンを直接表記できる環境になければ,HTML 4仕樣で定められる文字實體參照を用ゐて ­ のやうに書き記せます。User Agentおよびユーザが檢索,ソートあるいは索引づけの處理をおこなふ際には,ソフトハイフンは常に無視されるでせう。

和文のテキスト整形では,傳統的に "禁則處理"――約物などが行頭・行末にあつてよいかどうかの禁止事項,またはそれを囘避するための字詰め,文の長さの調整のこと――が用ゐられます。たとへば閉ぢ括弧,句讀點,感歎符や疑問符の類ひは,行頭に位置することが禁止されます(これを行頭禁則文字と呼ぶ)。また,開始括弧の類ひは,行末に位置することが禁止されます(これを行末禁則文字と呼ぶ)。

將來のCSS仕樣では,語區切り/行區切りの制約を制禦できる樣になるでせう。(cf. CSS3 Text Effects Module

行區切り類の注意點

User Agentは,開始タグ直後の行區切り類,終了タグ直前の行區切り類を無視せねばなりません。

次の2つの例は,同一になるやうにレンダリングされねばならない:

<p>Timothy John Berners-Lee is the W3C director.</p>
<p>
Timothy John Berners-Lee is the W3C director.
</p>

また著者(特にオーサリングツール)は,次のように書くべきです:

<p>We offer free <a>technical support</a> for subscribers.</p>

次では,aタグの前後にある空白は拔き取られてしまふかもしれません:

<p>We offer free<a> technical support </a>for subscribers.</p>

行區切りの強制: br要素(Forcing a line break)

br要素は,ブロックレヴェル要素の行内で使用し,その行を強制的に區切つて終了させます。

これはやむを得ず,行の區切りを明示する必然性のある場合にのみ,使用すべき要素です。

もしbr要素が頻出してしまふやうな文書に成るなら,ブロックレヴェル要素の使ひ方を理解してゐません。適切なHTML文書といふものは,自然に行の區切りが生じて,それらしくレンダリングされるものです。必然的なbr要素の用途といふのは餘りありません。

br要素を濫用しない

文書著者はbr要素を用ゐて,長い文章を不必要に分割すべきではありません。ある一定の "表示域の幅" もしくは "文字サイズ" を想定しても,ユーザ環境の表示幅が不充分であれば "自動折り返し" と "強制區切り" が重なつて,却つて讀み辛い状態になります。

一續きのテキストであるべきパラグラフなどは,ユーザ環境に應じた "自動的な折り返し" に任せるべきです。

また,見出しやパラグラフ,箇條書き,定義リストなどのブロックレヴェル要素を用ゐずに,こられの構造をbr要素の "見た目" に依存して構造化してはなりません。その樣なマークアップは,ユニヴァーサルな情報共有を目指すべきHTML文書の水準を著しく低下させます。

すなはち,body, div要素のに斷片的なインライン内容を含め,それらをbr要素でレイアウトしてはなりません

著者に依つては,brタグを連續させてパラグラフを示さうとしますが,惡しき習慣です。それは單なるテキストの "區切り目" であるに過ぎません。連續brでテキストを分割したとしても,User Agentはパラグラフなどのブロックレヴェル要素があらはす "構造" のやうに,何らかの意圖の "かたまり" として解釋する事はありません。むしろUser Agentに依つては,表示面積の無駄であると考へ,連續brを1つに纏める事があります。

一つのパラグラフは,一つのp要素に據つて表すべきです。p要素で表されるパラグラフは,User Agentが對象とするメディアに合致する方法で,樣々にレンダリングされます。さらに著者およびユーザは自身のスタイルシートに據つて,パラグラフを樣々に表現できます。

パラグラフより大きい "區切り" に必然性があるのなら,その範圍はdiv要素などに據つて補助的にグループ分けすべきです。もしくは新しい見出しセクションを開始すべきです。セクションの具體的な表現(餘白や枠など)には,著者スタイルシートを利用してください。

行區切りの禁止

著者は何らかの意圖に依つて,2つの單語間で行區切りが生じるのを避けたいと考へる事もあるでせう。&nbsp;實體(No-Break Space:U+00A0)は,User Agentが歐文テキストなどをレンダリングする際に,行區切りを發生させないスペースとして機能します。

つまり,ある2語を &nbsp; で分けた場合,その2語が行末に接してゐても,これら語の間では折り返しが生じません。

著者はNo-Break SpaceがHTML 4の空白類ではない事を惡用して,&nbsp;の連續でレイアウトしてはなりません。

パラグラフ: p要素(Paragraphs)

p要素は一つのパラグラフ(形式段落に近い概念)を表し,自身を含め,あらゆるブロックレヴェル要素を中身に含めてはなりません。それゆゑHTML 4では,終了タグを省略できます――すなはち,次のブロックレヴェル要素が出現した時點で終了したものと見做される。

パラグラフとは『一つの考へを述べるための,一つ以上の文の集まり』のことです。すなはちパラグラフは,見た目の印象に據つて改行するものではなく,あくまで一つの主題を持つた文章の "ひと纏まり" とすべきものです。これには,著者の考へを理解しやくする意圖があります。

また,パラグラフの『トピックを端的に示す文:トピックセンテンス』を意識し,それを頭のはうに記しておくと良いとされます。すなはち,結論となる文から書き始めるやうにしてください。かうすることで,パラグラフの頭を讀むだけで概略をつかめるやうになり,流し讀みしやすくなるのです。

一般的な視覺系ブラウザはp要素をレンダリングする際,上下を區切り,前後に1行分の餘白を插入します。しかしこの體裁は,ユーザに意圖を傳へるための慣例に過ぎません。適切な表現方法はメディアごとに異るのです。したがつて著者は,特定のブラウザに據つて表現されるデフォルトの "見た目" だけを重視してはなりません。パラグラフの外觀は,スタイルシートの仕組に據つてどの樣にでもなります。(cf. HTML4-9.3.5

好ましくないp要素

著者は,中身がない "空のp要素" を記述してはなりません。User Agentは "空のp要素" を無視します。

パラグラフは "文の集り" なのですから,中身がない "空(から)" の状態といふのは,絶對にあり得ません。

同樣に文を含まない <p><br></p> なども好ましくありません。これは視覺的な "餘白行" を得るためだけの,惡しき習慣です。このやうな "區切り" に必然性があるのなら,その範圍はdiv要素などに據つて補助的にグループ分けすべきです。もしくは新たな見出しセクションを開始すべきです。セクションを具體的に表現するにはスタイルシートを利用してください。たとへばCSSを用ゐると,餘白や枠などを制禦できます。

引用: blockquote要素とq要素(long quotations / short quotations)

どんな文章を書く場合でも,自分自身によつて考へ出された文章と,ほかの著作者によつて述べられた文章は――文章の讀みやすさはもちろんのこと,他者の著作權を尊重するといふ觀點からも――明確に區別して,引用部分を明確に示さなければなりません。

blockquote要素はその名のとほり,ブロックレヴェルの長い引用を示します。たとへば一つの長いパラグラフ全體,もしくは關聯した複數のパラグラフをまるごと引用する際に利用します。q要素は,パラグラフの區切りを必要としない,斷片的なインラインの短い引用を示します。

ブロックレヴェルの長い引用: blockquote

blockquote要素で引用される内容は,必然的に一つ以上のブロックレヴェル要素を持つ事になります。斷片的な文字データやインライン要素を直に含めてはなりません。ただし見出し(h1-h6)ごと引用するのは,文書の文脈が破綻してしまふので好ましくありません。

一般に視覺系ブラウザは,blockquote要素をレンダリングする際,左右に幾ばくかの餘白を插入します。しかしこの體裁は,ユーザに引用を傳へるためのひとつの慣例に過ぎません。著者はデフォルトの "見た目" に惑はされて,レイアウトの道具に用ゐてはなりません。

レイアウト目的に過ぎない不適切なblockquote要素は,『見せかけ』の構造を識別できない――聽覺や觸覺で文書を讀解する――人々を混亂させます。またユーザに依つては自身の嗜好に合せて,引用を明確にする獨自のスタイルを適用するかもしれません。

つまり,レイアウト目的でblockquote要素を用ゐてしまふと,自身の文章であるにも關らず,他所からの引用として理解されるかもしれません。自身の著作物をあへて蔑ろにする積りがないのなら,適切な構造をマーク附けし,體裁制禦にはスタイルシートを用ゐるべきです。

斷片的なインラインの短い引用: q

q要素は自分自身の考へを示す本文(パラグラフなど)の中に,斷片的に引用を插入する際に利用されます。

HTML 4仕樣の適合User Agentは,q要素をレンダリングする際,その範圍を示すためにテキスト内容の前/後に引用符を插入しなければなりません。またUser Agentは,自然言語における慣例に基いて,入れ子の深さに應じた引用符を選擇する必要があります(關聯:lang屬性)。なほ,このデフォルト-スタイルシートで插入される引用符のペアは,CSS2による生成内容の仕組に據つて,好みの引用符に上書き可能です。

HTML 4仕樣では著者に對して,ソース文書上にあるq要素の前/後に引用符を記さないやう,求めてゐます。

しかし,Windows版のMSIE 6では,q要素に引用符が插入されません。また,CSS2の生成内容もサポートされません。そのため,色などの他のスタイルによつて表現する事になります。もしくは,スクリプトでDOMツリーを操作して,引用符を插入するしかありません。

引用の出典: cite屬性およびcite要素

どこからの引用であるかを明示するには,q要素またはblockquote要素におけるcite屬性の値に URI を指定します。引用元がウェブ上に存在するなら,URLに據つて示します。もしくは書籍であれば,URNに據つてISBN(國際標準圖書番號)を示すことになります。さらにtitle屬性を用ゐると,引用元のリソース名稱(たとへば該當記事の見出し,文書タイトル,サイト名や書籍名など)を提示することができます。

先進的なUser Agentではcite屬性を活用して,コンテキストメニューなどから引用元のリソースにアクセスできるかもしれません。しかし殘念ながら,最近のUser Agentでもそのやうな機能が備はつてゐるものは稀です。そのためしばしば,出典を示すためのcite要素がqもしくはblockquote要素の直前もしくは直後の文脈として補助的にマーク附けされ,さらにその内容には引用元への始點アンカーがしばしば含まれます。

このやうな引用の出典を示すためのcite要素は,blockquote要素もしくはq要素の内容として記すべきではありません。なぜならその構造上,そのcite要素は他者の著作物で示された引用元の記述の引用として,解釋されるかもしれないからです。(cf. 引用に關する覺書

整形濟みテキスト: pre要素(Preformatted text)

pre要素は,視覺系User Agentに對し,その中身のテキストが "整形濟み" であることを傳へます。

視覺系User Agentは整形濟みテキストを,次のやうに取り扱ひます:

非視覺系User Agentは,pre要素の内容にある餘分な空白類について,考慮する必要はありません。

pre要素の中身には,インライン内容(文字データとインライン要素)を含める事ができます。ただし,いくつかの視覺表現の要素は,整形濟みテキストの趣旨として好ましくないので,除外されてゐます。それにはimg,object,big,small,sub,sup要素が該當します。

整形濟みテキストは,空白類に意味を持つやうな必然性のある場合に限り,用ゐるべきです――たとへば定型詩であるとか,ソースコードの例示であるとか,電子掲示板やメールからの引用文であるとかなど。表のやうに見せたり,レイアウトに用ゐてはなりません。

いはゆる "テキストアート" と呼ばれるやうな,文字や記號によるイラストや圖の表現の爲に,pre要素を使ふべきではありません。音聲メディアでは,意味のない文字の羅列として話されるでせう。イラスト表現にはimg要素を利用したり,樣々なオブジェクトを埋め込めるobject要素を利用して,適切な代替内容を提供してください。またHTML 4には,二次元のデータ構造を提示するを構成する要素も備はつてゐます。

註:水平タブ文字(U+0009)は一般に,視覺系User Agentに據つて,8文字ごとのタブ區切りに沿つて文字を揃へるのに必要な,少くともゼロではない數のスペースとして解釋されます。HTML 4仕樣では,水平タブを整形濟みテキストの中で用ゐないやう,強く要請してゐます。なぜなら,文書の編輯時にはタブ區切り幅は8文字以外にしばしば設定されるので,これがテキストの整列を崩してしまふ要因になるからです。

したがつて,水平タブの空白列をpre要素に記すときには,それらを幾つかのASCIIスペースに置換すべきでせう。

構造を示す斷片的なフレーズ(Phrases: em, strong, dfn, code, samp, kbd, var, cite, abbr, acronym)

フレーズ(phrase)要素は,ブロックレヴェル要素の行内で斷片的な構造を附加するためのインライン要素です。

これらを效果的にマーク附けし,一貫したスタイルを施せば,重要點がつかみやすくなり流し讀みの助けになります。

視覺系User Agentは,フレーズ要素を表現するために,通常のテキストとは異るフォント(イタリックやボールドなど)でレンダリングします。しかし著者はこれらの本質的な意味論を無視して,體裁のために濫用してはなりません。外觀はスタイルシートに據つてどうにでもなります。

強調: em, strong要素(emphasis / stronger emphasis)

HTMLの強調には,"通常の強調" を示すem要素と,さらに "強い強調" を示すstrong要素があります。

一般に視覺系User Agentはこれらの強調を表現するために,em要素の内容をイタリック體のフォントで,またstrong要素の内容をボールド體のフォントでレンダリングします。音聲合成で表現するUser Agentでは,音量,ピッチ,速度などの數量を適宜變更するでせう。

著者は,User Agentによるデフォルトの "見た目" に惑はされてはなりません。たとへば,單にイタリックが嗜好に合はないから,あるいは單に太字にしたいからといふ理由で,strong要素を濫用してはなりません。strong要素は,最重要な個所で限定的に用ゐるべきです。

視覺系UAはこれらを一般にイタリックやボールドで表現しますが,この外觀はCSSの仕組に據つて上書き可能です。

出典: cite要素(citation or a reference)

cite要素は,出典を示したり,他所のリソースへの參照を示すインライン要素です。たとへば,參考文獻を提示する際のリソース情報――該當記事の見出し,文書タイトル,書籍名やサイト名,著者名,出版社,發刊日などを示すために利用されます。

參照リソースがURIに據つて識別できる場合には,cite要素の中身を始點アンカーにしてもよいでせう。

cite要素は,引用テキストを示すqまたはblockquote要素の近くに,しばしば補助的にマーク附けされます。しかし,qまたはblockquote要素の出典を示すには,それぞれのtitle屬性やcite屬性に明記せねばなりません。たとひユーザに傳はりやすくする意圖でqあるいはblockquote要素に隣接する文脈でcite要素を用ゐたとしても,User Agentはそれを必然的な意味上の結附きであるとは解釋しません。

視覺系UAは,この要素を一般にイタリックで表現しますが,デフォルトの外觀はCSSの仕組に據つて上書き可能です。

定義: dfn要素(defining instance)

dfn要素は,パラグラフなどのブロックの行内に現れるインラインの定義語句に用ゐられます。この要素は一般に,ある一つの定義について,その文書内での初出個所だけに用ゐます。つまり,ある定義語句が文書内に頻出しても,その全てに用ゐる訣ではありません。

著者に依つては,dfn要素を索引文書から參照できるやうに,しばしばid屬性を割り當てます。またUser Agentは,id屬性が與へられたdfn要素を拾ひ集めて,索引文書を自動生成するかもしれません。これはid屬性がハイパーリンクの終點として機能するためです。

視覺系UAは,この要素を一般にイタリックで表現しますが,デフォルトの外觀はCSSの仕組に據つて上書き可能です。

ソースコード類: code, samp, var, kbd要素(computer code / sample output / variable or argument / text to be entered)

code,samp,var,kbd要素は,コンピュータ向けの人工言語を扱ふやうな技術的文書において,特に重要です。

これらはすべてインライン要素であり,次のやうな意味合ひを持ちます:

一般的な視覺系User Agentでは,次のやうにレンダリングされます:

複數行に跨る長いソースコードである場合,これらをpre要素の中身として用ゐても構ひません。

賢い機械飜譯のプログラムは,これらの意圖を尊重して,飜譯せずに原文のまゝに留めるかもしれません。

音聲メディアのUser Agentでも同樣に,語としての音韻で發音するのではなく,各文字のスペリングで一字づゝ讀上げるかもしれません。約物類(括弧や句讀點などの記號類)もその名稱として讀上げるかもしれません。もしくはそのやうに設定できるかもしれません。

省略語と頭字語: abbr, acronym要素(abbreviated form / acronym)

"abbr" とは,省略語の全般のことです。"acronym" とは語群を構成する語やフレーズのうち,いくつかの "頭文字" または "音節" を拔き出して,ひと綴りにした單語のことです。たとへば "UNESCO", "Radar" などはacronymです。頭字語は,各文字のスペリングとしてより,むしろ語としての音韻で發音されます。また多くの場合,頭字語は標準的な用語として一般化され,完全形は説明的に使用されるのみです。

著者は,同一略語/頭字語が同一文書中で頻出する場合,そのすべてをマークアップする必要はありません。使ひ過ぎると却つて煩雜になつてしまひます。たとへば,見出しセクションもしくはパラグラフの初出個所だけに用ゐるなど,豫め指針を定めておくべきでせう。

Windows版のMSIE 6では,正常にabbr要素のタグ附けを解析しないため,ツールティップが示されません。また,スタイルも全く適用できません。この問題の原因とそれを解決するスクリプトについては,WinIEでabbr要素を何とかする - 徒書で詳しく紹介されてゐます。