附属書 C(参考) 符号化


HTML文書は,Unicodeで定義する約3万の文字を含んでよい。多くの文書では,数百文字だけを必要とする。 多くのフォントも,数百のグリフだけを含む。5.2と合わせて, この附属書は,文書中の文字及びフォント中のグリフを合致させる方法を示す。

C.1 文字符号化

HTML文書の内容は,文字の並び及びマーク付けとする。"回線上を"送るために,幾つかの利用可能な 符号化の一つを利用し,バイトの並びとして符号化する。 HTML文書は,文字を見つけるためには復号しなければならない。例えば,西ヨーロッパ語では,a-with-grave-accent(à) にはバイト224を,ヘブライ語では,普通,Alephに224を使う。日本語では,一つのバイトの意味は,普通, それに先行するバイト群に依存する。ある符号化では,1文字は,2(又はそれ以上の)バイトとして符号化される。

UAは,HTTPヘッダ内の"charset"パラメタを見ることによって,バイトを復号化する。典型的な符号化(文字集合値)には, "ASCII"(英語),"ISO-8859-1"(西ヨーロッパ語),"ISO-8859-8"(ヘブライ語),"Shift-JIS"(日本語)などがある。

HTML[2][4]は, Unicodeで定義した3万の文字を許容する。これらの多くの文字を使う文書は多くなく,普通は, 適切な符号化を選択すれば,1文字に1バイトだけを必要とする。符号化領域の外の臨時の文字を, 数値的文字参照として入れることもできる。'Π'は,どの符号化を使用しても,常にギリシャ文字の大文字Piを意味する。 このために,UAが少しの符号化だけを扱っている場合でも,あらゆるUnicode文字を準備しなくてはならないことに注意。

C.2 フォント符号化

フォントは,文字を含まず,グリフとして知られる文字の図を含む。 グリフは,アウトライン又はビットマップの形式で,文字の特定の表現を構成する。明示的に又は暗黙的に, 各フォントは,それに対応する表,フォント符号化表をもつ。この表は,各グリフに対して,それが表現となる文字を示す。 タイプ1フォントでは,符号化ベクトルとして表を参照する。

実際には,多くのフォントは同じ文字に対して複数のグリフを含む。これらグリフのどれを使うのがよいかは, 言語の規則又は設計者の好みに依存してよい。

例えばアラビア文字では,すべての字は,四つの異なる書体をもつ。これは,字が,語の最初,語の中程,語の最後 又は語とは孤立して用いられたかに依存する。これらは,すべての場合において同じ文字であって, HTML文書の中ではただ一つの文字だけが存在するが,印刷された時には,それぞれに違って見える。

提供された様々な代替の形状の中からの選択が,グラフィック設計者に任されたフォントもある。 残念なことに,CSS1は,これらの代替を選択する手段をまだ提供していない。 現在では,これらフォントから選択されるものは,常に,特定のデフォルト形状とする。

C.3 フォント集合

一つのフォントが,一つの文書又は一つの要素の中のすべての文字を表示するには十分でないという問題を処理するために, CSS1は,フォント集合を使うことができる。

CSS1におけるフォント集合は,フォントのリストであって,ある文字のグリフを含むかどうかを順番に見ることが可能な, 同じスタイル及びサイズすべてとする。数学記号が混在する英文テキストを含む要素は,文字及び数字を含むフォントと 数学記号を含むフォントとの,二つのフォント集合を必要とするかもしれない。フォント集合の選択機構の詳細については, 5.2を参照のこと。

ラテン文字,日本語文字及び数学記号を含むことが期待されるテキストに適したフォント集合の例を,次に示す。

  BODY { font-family: Baskerville, Mincho, Symbol, serif }

Baskervilleフォント(ラテン文字だけをもつフォント)で利用可能な文字にはこのフォントを,日本語には明朝を, 数学記号にはSymbolを使用する。他の文字には,一般的なフォントファミリの'serif'を,(恐らく)使用する。 'serif'フォントファミリは,他の複数のフォントが使用可能でない場合にも使用する。