9 テキスト

9.では,テキストの構造化をめぐる問題を論議する。配置要素,フォント要素,スタイルシートなど, テキストを表示する 要素はこの規定の至る所で論議されている。文字に関する情報については, 文書文字集合を参照のこと。

9.1 空白

文書文字集合は,多くの空白文字を 含む。これらの多くは活版印刷要素であり,いくつかのアプリケーションで 使用され,特定の視覚的スペース効果を作り出す。HTMLでは, 空白文字として定義されるのは次に列挙する文字に限定される。

行区切りも空白文字とする。 
 及び 
は,行及び段落を明確に分離するために, それぞれ[ISO10646]で定義されているが,これらはHTMLでは行区切りを 構成せず,この標準情報(TR)ではより一般的な空白文字のカテゴリであってもそれらを含まない点に注意すること。

この標準情報は,空白文字としてここで明確に識別されるものとは違う スペース文字の振舞い,レンダリングなどを示さない。 このため,空白を含む視覚的フォーマット効果を実現するには, 文書作成者はスペース文字を使うのではなく, 適正な要素及びスタイルを使用することが望ましい。

PRE以外のすべてのHTML要素について,空白列は,"単語"を分離する。ここで"単語"とは,"非空白文字の列"を意味する。テキストをフォーマット化する場合,利用者エージェントはこれらの単語を識別し,特定の書き言葉(スクリプト)及び対象メディアの規約に従って,それらをレイアウトすることが望ましい。

このレイアウトは, 単語間スペースと呼ばれる単語の間でのスペース配置を 含むが, 単語間スペースに関する規約はスクリプトごとに変化する。例えば, ラテン語のスクリプトでは,単語間スペースはASCIIスペース ( )として模範的にレンダリングされるが,タイ語ではゼロ幅単語分離記号 (​)である。日本語及び中国語では,単語間スペースは全くレンダリング されない。

ソース文書の単語間空白列は, レンダリングされると全く異なる単語間 スペース化となる場合がある点に注意すること。ただし, PRE要素の場合は例外である。 特に,利用者エージェントは,出力単語間スペースを生成する場合,入力空白スペース 列を 消去した方がよい。これは, lang属性, HTTP "内容言語" ヘッダフィールド ( [RFC2068], 14.13を参照),利用者エージェント設定などから の言語情報がなくても,実施できるし,実施する方がよい。

PRE 要素は 事前フォーマットされたテキストに関して使用される。 その場合,空白は重要である。

SGML行区切り規則及び現存する実装間の矛盾に関する問題を回避するために,文書作成者は,利用者エージェントが開始タグ直後又は終了タグ直前に空白をレンダリングするものとして扱わない方がよい。そのため,文書作成者,及び特に作成ツールは,次を書くことが望ましい。

  <P>We offer free <A>technical support</A> for subscribers.</P>

書いてはならない例を次に示す。

  <P>We offer free<A> technical support </A>for subscribers.</P>

9.2 構造化テキスト

9.2.1 句要素(EM, STRONG, DFN, CODE, SAMP, KBD, VAR, CITE, ABBR及びACRONYM)

<!ENTITY % phrase "EM | STRONG | DFN | CODE |
                   SAMP | KBD | VAR | CITE | ABBR | ACRONYM" >
<!ELEMENT (%fontstyle;|%phrase;) - - (%inline;)*>
<!ATTLIST (%fontstyle;|%phrase;)
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

開始タグ: 必須, 終了タグ: 必須

他の箇所で定義される属性

句要素は構造的な情報をテキスト素片に付加する。句要素の通常の意味を次に示す。

EM:
強調を示す
STRONG:
EMよりも強い強調を示す
CITE:
引用又は他のソースへの参照を含む
DFN:
これが囲み語の定義インスタンスであることを示す
CODE:
コンピュータ符号の素片を指定する
SAMP:
プログラム,スクリプトなどからの出力サンプルを指定する
KBD:
利用者によって入力されるテキストを示す
VAR:
変数又はプログラム引数のインスタンスを示す
ABBR:
短縮形を示す(例えば, WWW, HTTP, URI, Mass. など)
ACRONYM:
頭字語を示す(例えば, WAC, radarなど)

EM 及び STRONG は,強調を示すために使用される。他の句要素には技術文書において特別な 重要性がある。句要素をいくつか記述してこれらの例を示す。

As <CITE>Harry S. Truman</CITE> said,
<Q lang="en-us">The buck stops here.</Q>

More information can be found in <CITE>[ISO-0000]</CITE>.

Please refer to the following reference number in future
correspondence: <STRONG>1-234-55</STRONG>

句要素のプレゼンテーションは利用者エージェントに依存する。一般に, 視覚的利用者エージェントは,イタリック体の EMテキスト及び太字のフォントの STRONG テキストを表示する。音声合成器の利用者エージェントは,ボリューム, ピッチ,速度などに従って,合成パラメタを変更してよい。

ABBR要素及び ACRONYM 要素によって,文書作成者は 省略及び頭字語 の発生を明確に示すことができる。欧米の言語は, "M.", "Inc.", "et al.", "etc."などの省略と同様,"GmbH","NATO","F.B.I"などの頭字語を大量に使用する。中国語及び日本語は,両者とも類似した省略機構を使用する。すなわち,長い名前は,初出時の漢字列のサブセットによって,その後は表される。これらの構成要素をマーク付けすることによって, 利用者エージェント及びスペルチェッカ,音声合成器,翻訳システム及び検索エンジンインデクサなどのツールに有益な情報を提供する。

ABBR要素及びACRONYM要素の内容は,通常の本文に現われるような省略された表現そのものを指定する。 これらの要素のタイトル属性は,表現の完全形又 は,拡張形を提供するために使用される。

ここで,ABBRの使用例をいくつか示す。

  <P>
  <ABBR title="World Wide Web">WWW</ABBR>
  <ABBR lang="fr" 
        title="Soci&eacute;t&eacute; Nationale des Chemins de Fer">
     SNCF
  </ABBR>
  <ABBR lang="es" title="Do&ntilde;a">Do&ntilde;a</ABBR>
  <ABBR title="Abbreviation">abbr.</ABBR>

短縮形及び頭字語は,特異な発音であることがよくある点に注意すること。 例えば, "IRS" 及び "BBC" は,そのまま文字どおりに発音されるが, "NATO" 及び "UNESCO" は表音で発音される。 "URI" 及び "SQL"などのその他の短縮形は,1字ずつ発音する人もいれば, 単語として発音する人もいる。必要があれば,文書作成者は,スタイルシートを使用して短縮形の発音を指定した方がよい。

9.2.2 引用( BLOCKQUOTE要素及び Q 要素)

<!ELEMENT BLOCKQUOTE - - (%block;|SCRIPT)+ -- long quotation -->
<!ATTLIST BLOCKQUOTE
  %attrs;                              -- %coreattrs, %i18n, %events --
  cite        %URI;          #IMPLIED  -- URI for source document or msg --
  >
<!ELEMENT Q - - (%inline;)*            -- short inline quotation -->
<!ATTLIST Q
  %attrs;                              -- %coreattrs, %i18n, %events --
  cite        %URI;          #IMPLIED  -- URI for source document or msg --
  >

開始タグ: 必須, 終了タグ: 必須

属性定義

cite = uri [CT]
この属性の値は,ソース文書又はメッセージを指定するURIである。この属性は, 引用元に関する情報の提供を意図したものである。

他の箇所で定義される属性

これらの二つの要素は, 引用されたテキストを指定する。 BLOCKQUOTEは,ブロックレベルの内容 など長い引用のためのものであり, Q は, 行内内容など,段落の区切りを必要としない短い引用を意図したものである。

ブロック引用として, J.J.R.トールキンの"二つの塔"からの抜粋をフォーマットし,次に示す。

<BLOCKQUOTE cite="http://www.mycom.com/tolkien/twotowers.html">
<P>They went in single file, running like hounds on a strong scent,
and an eager light was in their eyes. Nearly due west the broad
swath of the marching Orcs tramped its ugly slot; the sweet grass
of Rohan had been bruised and blackened as they passed.</P>
</BLOCKQUOTE>

引用のレンダリング 

視覚的利用者エージェントは,一般に, BLOCKQUOTE を字下げブロックとしてレンダリングする。

視覚的利用者エージェントは,Q 要素の内容が引用符で区切られて確実にレンダリングされる ようにしなければならない。文書作成者は,Q 要素の内容の冒頭及び末尾に引用符を用いないほうがよい。

利用者エージェントは,言語に依存した方法で,引用符をレンダリングすることが望ましい(lang 属性参照)。多くの言語は外部引用又は内部(入れ子)引用に異なる引用スタイルを採用する。利用者エージェントはこのことを考慮するほうがよい。

次の例は, Q 要素を用いて入れ子になった引用を記述している。

John said, <Q lang="en-us">I saw Lucy at lunch, she says 
<Q lang="en-us">Mary wants you
to get some ice cream on your way home.</Q> I think I will get
some at Ben and Jerry's, on Gloucester Road.</Q>

引用は両者とも言語がアメリカ英語であるため,利用者エージェントは,例えば,内部引用には一重引用符を使用し,外部引用には二重引用符を使用するなどして適切にレンダリングした方がよい。例を次に示す。

  John said, "I saw Lucy at lunch, she told me 'Mary wants you
  to get some ice cream on your way home.' I think I will get some
  at Ben and Jerry's, on Gloucester Road."

備考 スタイルシートの実装により, BLOCKQUOTEで区切られた引用の前後に, 引用符を 現言語文脈及び引用の入れ子程度に応じた方法で挿入するための機構が提供されることを推奨する。

しかし,単なる字下げテキストの機構としてBLOCKQUOTEを使用している文書作成者もいるため,そのような文書作成者の意図を守るため, 利用者エージェントは,デフォルトスタイルで引用符を挿入しないほうがよい。

BLOCKQUOTEを字下げテキストに使用することは 推奨しない。スタイルシートの使用が好ましい。

9.2.3 下付き添字及び上付き添字(SUB要素及びSUP要素)

<!ELEMENT (SUB|SUP) - - (%inline;)*    -- subscript, superscript -->
<!ATTLIST (SUB|SUP)
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

開始タグ: 必須, 終了タグ: 必須

他の箇所で定義される属性

フランス語などの多くのスクリプトは適正なレンダリングのために 上付き添字又は下付き添字を必要とする。これらの場合に,テキストをマーク付けするために SUB 要素及び SUP要素を使用することが望ましい。

      H<sub>2</sub>O
      E = mc<sup>2</sup>
      <SPAN lang="fr">M<sup>lle</sup> Dupont</SPAN>

9.3 行及び段落

文書作成者は伝統的に自身の思想及び主張を段落の列に分けている。段落の 情報の構成は,段落の表示方法に影響されない。即ち,行左揃えである段落も, 行両揃えである段落も含む思想は同じである。

段落を 定義するためのHTMLマーク付けは簡単である。 P 要素は段落を定義する。

段落の視覚的プレゼンテーションは単純ではない。様式的及び技術的な多くの問題に注意を向けなければならない。注意する必要のある問題を次に示す。

これらの問題を次に指定する。 段落配置及び浮動オブジェクト は, この規定の後で示される。

9.3.1 段落(P 要素)

<!ELEMENT P - O (%inline;)*            -- paragraph -->
<!ATTLIST P
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

開始タグ: 必須, 終了タグ: オプション

他の箇所で定義される属性

P 要素は段落を表現する。 P要素は ブロックレベル要素を含まない,即ちP もブロックレベル要素であるため,それ自体も含むことはできない。

文書作成者が空の P 要素を使うことは好ましくない。利用者エージェントは,空のP要素を無視するほうがよい。

9.3.2 行区切りの制御

行区切りは改行(&#x000D;), 改行(&#x000A;), 又は 両者の対であると定義される。すべての行区切りは 空白 を構成する。

行区切りのSGML規定に関する情報をさらに入手したい場合は,附属書の 行区切りに関する備考を参照のこと。

行区切りの強制 ( BR 要素) 

<!ELEMENT BR - O EMPTY                 -- forced line break -->
<!ATTLIST BR
  %coreattrs;                          -- id, class, style, title --
  >

開始タグ: 必須, 終了タグ: 禁止

他の箇所で定義される属性

BR 要素はテキストの現在の行を強制的に終了する。

視覚的利用者エージェントについて, clear属性は,BR要素に続くマーク付けが,左マージン又は右マージンに浮動する画像又はそれ以外のオブジェクトの周囲に流れるかどうか,又は,BR要素がそういったオブジェクトの下部の後から開始するかどうかを決定するために使用できる。さらに詳細を知りたい場合は, 配置及び 浮動オブジェクトを参照のこと。文書作成者にはスタイルシートを使用して,浮動画像及び その他のオブジェクトの周囲を流れるテキストを制御することを助言する。

双方向フォーマット化については, BR要素は, [ISO10646] LINE SEPARATOR(行区切り記号)文字の双方向アルゴリズムでの振る舞いと同じように振る舞うのがよい。

行区切りの禁止 

文書作成者は行区切りが二単語間で発生するのを避けたいと考えることがある。 &nbsp; 実体 (&#160; or &#xA0;)は,利用者エージェントが行区切りを発生させないほうがよいスペースとして動作する。

9.3.3 ハイフン処理

HTMLでは, 二つの型のハイフンがある。プレーンハイフン及びソフトハイフンである。プレーンハイフンは,利用者エージェントが単なる別の文字として解釈するほうがよいハイフンとする。 ソフトハイフンは利用者エージェントに行区切りがどこで発生できるかを知らせる。

ソフトハイフンを解釈するブラウザは,次のセマンティクスを遵守 しなければならない。即ち,行がソフトハイフンで改行される場合,ハイフン文字を 先行行の末尾に表示しなければならない。行がソフトハイフンでは改行されない場合, 利用者エージェントはハイフン文字を表示してはならない。検索及びソートなどの 操作については,ソフトハイフンが常に無視することが望ましい。

HTMLでは, プレーンハイフンは"-"文字(&#45; or &#x2D;)によって表現される。ソフトハイフンは,文字実体参照&shy;(&#173; or &#xAD;)によって表現される。

9.3.4 フォーマット済み テキスト( PRE 要素)

<!ENTITY % pre.exclusion "IMG|OBJECT|BIG|SMALL|SUB|SUP">

<!ELEMENT PRE - - (%inline;)* -(%pre.exclusion;) -- preformatted text -->
<!ATTLIST PRE
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

開始タグ: 必須, 終了タグ: 必須

属性定義

width = number [CN]
推奨しない。 この属性は視覚的利用者エージェントに,フォーマットされたブロックの望ましい幅に 関するヒントを提供する。利用者エージェントはこの情報を使用して,適正なフォント サイズを選択するか,又は,適正に内容を字下げすることができる。望ましい幅は 数字で表現される。 この属性は現在広くはサポートされていない。

他の箇所で定義される属性

PRE要素は視覚的利用者エージェントに囲みテキストが "フォーマット済みである"ことを知らせる。 フォーマット済みテキストを処理する場合,視覚的利用者エージェントは次を実施する。

非視覚的利用者エージェントは,PRE要素の内容において余分な 空白を考慮する必要はない。

行区切りのSGML規定に関して,より多くの情報を入手したい場合は, 附属書の 行区切りに関する備考を参照のこと。

上記のDTD素片は,どの要素が PRE 宣言内に現われないかを示す。 これは,HTML3.2でも同様であり,固定ピッチでフォントでレンダリングされたテキストの一定の行間隔及び列配置を保存することを意図したものである。 文書作成者がスタイルシートを通じてこの振舞いを更新することは好ましくない。

次の例では,Shellyの詩 ヒバリへからフォーマット済みの一編を示している。

<PRE>
       Higher still and higher
         From the earth thou springest
       Like a cloud of fire;
         The blue deep thou wingest,
And singing still dost soar, and soaring ever singest.
</PRE>

これを模範的にレンダリングしたものを次に示す。

       Higher still and higher
         From the earth thou springest
       Like a cloud of fire;
         The blue deep thou wingest,
And singing still dost soar, and soaring ever singest.

左右方向のタブ文字。
左右方向のタブ文字(文字コードは,[ISO10646]及び[ISO88591]の10進数で9)は,通常,8文字ごとに存在するタブ停止位置に従って,文字を整列させるのに必要なゼロでない最少個のスペース文字として,視覚的利用者エージェントによって解釈される。フォーマット済みテキストでの左右方向のタブは使用しないことを強く要請する。それは,編集の際,タブ間隔を他の値に設定することが一般的であって,誤配置の文書になるからである。

9.3.5 段落の視覚的レンダリング

備考  次は段落をフォーマットする場合の現在の視覚的利用者エージェントの振舞いに関する情報提供用の記述である。スタイルシートによって,段落フォーマット化について,より望ましい制御が可能となる。

段落が視覚的にどのようにレンダリングされるかは利用者エージェントに依存する。 段落は通常,右不揃いのマージンで左揃えでレンダリングされる。 右から左へのスクリプトには他のデフォルトが適する。

HTML利用者エージェントは,従来,段落の前後に空白を置いてレンダリングしてきた。その例を次に示す。

  At the same time, there began to take form a system of numbering,
  the calendar, hieroglyphic writing, and a technically advanced
  art, all of which later influenced other peoples.

  Within the framework of this gradual evolution or cultural
  progress the Preclassic horizon has been divided into Lower,
  Middle and Upper periods, to which can be added a transitional
  or Protoclassic period with several features that would later
  distinguish the emerging civilizations of Mesoamerica.

これは小説に使用されるスタイルとは対照的である。小説では,段落の最初の行を字下げし,現段落の最後の行と次の段落の最初の行との間も通常の行間隔を使用する。

     At the same time, there began to take form a system of
  numbering, the calendar, hieroglyphic writing, and a technically
  advanced art, all of which later influenced other peoples.
     Within the framework of this gradual evolution or cultural
  progress the Preclassic horizon has been divided into Lower,
  Middle and Upper periods, to which can be added a transitional
  or Protoclassic period with several features that would later
  distinguish the emerging civilizations of Mesoamerica.

1993年のNCSA Mosaicブラウザによる先例に従って,利用者エージェントは,一般に,両端揃えは行わない。その理由は,洗練されたハイフン処理のルーチンを用いずに効果的にこれを実施するのは難しいからである。スタイルシートの出現及び画素間隔よりも細かな位置決めをしてギザギザを無くしたフォントによって,以前可能であった以上に豊富な選択がHTML文書作成者に約束される。

スタイルシートは,フォントのサイズ及びスタイル,マージン,段落前後のスペース, 最初の行の字下げ,調整その他多くの詳細について,十分な制御を提供する。 利用者エージェントのデフォルトスタイルシートは,上で記述されたように, ありふれたフォームで P 要素をレンダリングする。 これを上書きして,連続する段落を区分するための区切り のない段落をレンダリングすることができる。一般に,これは読者を混乱させる可能性が あるので,このようなレンダリング方法は推奨しない。

視覚的HTML利用者エージェントは,慣例に従ってテキスト行を改行して,利用可能なマージンに適応させる。この改行のアルゴリズムは,フォーマットされるスクリプトに依存する。

例えば,欧米語のスクリプトでは,テキストは空白でだけ改行されるのがよい。初期の利用者エージェントは,開始タグの直後又は要素の終了タグの直前で,不正確に行を改行した。それによって,結果として,ぶらさがり句読点が現われた。例えば次の文を考察する。

   A statue of the <A href="cih78">Cihuateteus</A>, who are patron ...

A 要素の終了タグの直前に行を折り返すことにより, 次の行の最初にコンマが残ってしまう。

  A statue of the Cihuateteus
  , who are patron ...

マーク付けにおいて,その点で空白が存在しなかったため,これはエラーである。

9.4 文書変更のマーク付け( INS要素 及び DEL 要素)

<!-- INS/DEL are handled by inclusion on BODY -->
<!ELEMENT (INS|DEL) - - (%flow;)*      -- inserted text, deleted text -->
<!ATTLIST (INS|DEL)
  %attrs;                              -- %coreattrs, %i18n, %events --
  cite        %URI;          #IMPLIED  -- info on reason for change --
  datetime    %Datetime;     #IMPLIED  -- date and time of change --
  >

開始タグ: 必須, 終了タグ: 必須

属性定義

cite = uri [CT]
この属性の値は,ソース文書又はメッセージを指定するURIである。 この属性は,文書が何故変更されるのかを説明する情報を指摘することを意図している。
datetime = datetime [CS]
変更が行われた場合,この属性の値は 日付及び時間を指定する。

他の箇所で定義される属性

INS 及び DEL は,文書の異なる版(立法者が変更を検討する必要がある法律草案制定など)に関して挿入された,又は消去された文書のセクションをマーク付けするために 使用される。

これらの二つの要素は,ブロックレベル要素又は行内要素のいずれか(両方 ともということはない)として働くという点で, HTMLでは異例である。INS及びDELは,段落内の1つ以上の単語を含むか,又は段落,リスト及び表など, 一つ以上のブロックレベル要素を含む。

次の例は,地方保安官が採用できる代理官の数に関する法律を3人から5人に 変更する法案からの抜粋である。

<P>
  A Sheriff can employ <DEL>3</DEL><INS>5</INS> deputies.
</P>

INS 要素及び DEL要素は,これらの要素が行内要素として振舞う場合,ブロックレベルの内容を含んではならない。

不当な例:
次は正当なHTMLではない。

<P>
<INS><DIV>...block-level content...</DIV></INS>
</P>

利用者エージェントは変更を明らかにする方法を幾つか用いて,挿入テキスト及び削除テキストをレンダリングすることが望ましい。例えば,挿入テキストは特別なフォントで 現われ,削除テキストは全く現われないか,線を引いて削除するか, 特別なマーク付けなどで示される。

次の例は,両者とも1994年11月5日,東部標準時間の午前8時15分30秒に対応している。

     1994-11-05T13:15:30Z
     1994-11-05T08:15:30-05:00

これらをINSとともに使用できるが,(特に2番目を使用すると,)次のとおりとなる。

<INS datetime="1994-11-05T08:15:30-05:00"
        cite="http://www.foo.org/mydoc/comments.html">
Furthermore, the latest figures from the marketing department
suggest that such practice is on the rise.
</INS>

文書 "http://www.foo.org/mydoc/comments.html"は,文書に情報が何故 挿入されたかについてのコメントを含む。

同様に,文書作成者は INS 要素及び DEL 要素に対する title属性による挿入テキスト又は消去テキストに関して コメントしてもよい。利用者エージェントはこの情報をポップアップノートなどとして 利用者に表示してもよい。その例を次に示す。

<INS datetime="1994-11-05T08:15:30-05:00"
        title="Changed as a result of Steve B's comments in meeting.">
Furthermore, the latest figures from the marketing department
suggest that such practice is on the rise.
</INS>