* HTML 4 の文書文字集合 [1] 仕様書: - [[HTML 4]] --[CITE[20 SGML Declaration of HTML 4]] -- [CITE[HTML 4 Changes]] [2] HTML 4 の文書文字集合は、次のように定義されています。 [PRE(SGML)[ CHARSET BASESET "ISO Registration Number 177//CHARSET ISO/IEC 10646-1:1993 UCS-4 with implementation level 3//ESC 2/5 2/15 4/6" DESCSET 0 9 UNUSED 9 2 9 11 2 UNUSED 13 1 13 14 18 UNUSED 32 95 32 127 1 UNUSED 128 32 UNUSED 160 55136 160 55296 2048 UNUSED -- SURROGATES -- 57344 1056768 57344 ]PRE] (ちなみに、[[構文参照文字集合]]は新 [[IRV]] です。) [3] 仕様書には、2つ Note があります。1つ目は文字集合の大きさについてで、 HTML 4 の文字集合は [[ISO/IEC 10646]] の最初の17面に限られています。 (ISO/IEC 10646 には全部で128x256 面あります。) それというのも、[[SGML宣言]]では[[規格参照具象構文]]を使うことになっているのですが、 そうすると名前 ([CODE(ABNF)[数]]も含まれます。) の長さが8文字以下になり、 ISO/IEC 10646 のすべてを覆うことができないのです。 Note は、こういう技術的理由なので、将来にわたって最初の17面に制限する意図はなく、 18面以降に文字が割り当てられる時には SGML 規格が改訂され、 HTML も改訂されるだろうと言っています。 (実は SGML の改訂を待たずとも、文書文字集合を[[公開識別子]]だけで指定してしまうという裏技があります。 公開識別子で参照する対象の書式は SGML で規定されていませんから、 好きなように指定できます。ただし、 SGML で規定されていないのですから、 すべての SGML 処理系が理解してくれることは到底期待できません。) [4] 2つ目の Note は [CODE(SGML)[BASESET]] についてで、 [[ISO-IR]] 177 は本来 ISO/IEC 10646-1:1993 を指すもので、 その後の改訂は含まれないはずだと述べています。 確かに HTML 4 仕様書の主張は正しく、 ISO-IR 177 として登録されているのは ISO/IEC 10646-1:1993 です。しかし、どうやらその後の改訂でも登録し直さずにこれを使い続けるのが [[SC2]] の方針らしく、新しい版の ISO/IEC 10646 にも依然として ISO-IR 177 (など) に基づく[[エスケープ・シーケンス]]が載っています。 (幾度の非互換変更が行われたにも関わらずです。 文字集合の登録ではなく [CODE(char)[[[DOCS]]]] 用の登録だから[[符号化機構]]さえ不変なら文字集合はいくら非互換変更を加えても再登録不要という理屈でしょうか。) [5] なお、2つ目の Note は、 HTML 4.0 では [Q[HTML 4 仕様書は常に最新の ISO 10646 を参照する]] と書かれていましたが、 HTML 4.01 で削除されました [SRC[HTML 4.01 A.1.1.13]]。 おかげで一体何を参照しているのだかわからなくなりました(w [[#comment]] * メモ