ネタがないので、おなじみのことを改めて書く。
今日は包摂と文字概念である。

包摂と文字概念

コンピューターやネットの中で、あらゆる情報は数値に変換されている。
この数値をコード(code 符号)と言う。
文字は文字コードという符合に変換されている。
ざっと言えば、コンピューターやネットで使うために文字に番号を振ったものである。

Unicodeという文字コードシステムで言うと、「A」という字にU+0041、「a」という字にU+0061という番号が振られている。
U+のあとに、4桁または5桁の16進数が付く。
この番号をUnicodeスカラー値、または、Unicodeコードポイントと言う。
本稿では単にコードポイントと言う。

実際にパソコンに格納されたり、通信回線を流れていくのは、この番号をさらに0x0061とか、0x61などの数値に変換したものである。
この変換規則をエンコーディング・スキームといい、UTF-8、UTF-16などの複数の種類がある。
この話はここでは割愛する。

ところで、この「a」という文字には、下のように複数の字体がある。
2階建てのa(double-story smallcase a)と1階建てのa(single-story smallcase a)と呼ばれている。
LowercaseA
字の形を建物の階になぞらえることと、建物の階のことを英語でストーリーというのが面白い。

Unicodeには、この2つの字形は別々に登録されていない。
両方とも同じ字と見なしてU+0061という共通の番号をつけている。
このように、複数の字形を1つの字と見なすことを包摂(ほうせつ、ユニフィケーション)と言う。

(※2014-05-23追記:「ɑ」(一階建てのa)は'LATIN SMALL LETTER ALPHA' (U+0251)として分離したコードポイントがUnicodeに存在するというご教示を得た。ありがとうございます。
Unicode Character 'LATIN SMALL LETTER ALPHA' (U+0251)
これはIPA(国際音声文字。発音記号のこと)の1つで、発音記号としては一階建てのɑ(U+0251、非円唇後舌広母音(ひえんしん・あとじた・ひろぼいん))と二階建てのa(U+0061、非円唇前舌広母音(ひえんしん・まえじた・ひろぼいん))の書き分けが必要ということである)


文字とは、図形を書いて音や意味を伝えるもののことだから、文字コードとは、字形と番号を対応させているもののように思える。
ところが実際は、複数の字形を包摂した「概念」と番号を対応させている。
このように、複数の字形を包摂したものを文字概念という。

概念というのは、複数の個別のものを包摂したものである。
この喩えを何回か書いたような気がするが、たとえば犬にはチワワ、グレートデン、プードル、ラブラドールレトリーバーなどの複数の個別の種類がある。
これらすべての違いを包摂すると、「犬なるもの」という考えが得られる。
これは「犬という概念」と考えられる。
子供でも犬という概念は把握している。
ケージの中にチワワが3匹、プードルが2匹、ラブラドールレトリーバー4匹寝ているのを見て、「犬が9匹寝ている」と正しく数えられるのは、犬の違いを包摂して、犬概念を得られるからである。

同じように、1階建てのaと2階建てのaを包摂して、aの文字概念にU+0061という文字コードをマッピングしているのである。

Han unification

Unicodeで有名なのがHan Unification(ハン・ユニフィケーション)である。
Unicodeは最初、16ビット、65536コードポイントに全世界の文字を集めようとした。
最も字数が多いのは漢字(中国語でハンツ Hanzi)なので、日本、中国、台湾、北朝鮮、韓国、ベトナムで使っている漢字を包摂して、収録する字数を減らそうという考えがHan Unificationである。

たとえばWikipediaで「骨」という言葉を日本語と中国語で引いてみる。

58
骨 - Wikipedia

15
骨骼 - 维基百科,自由的百科全书

「骨」という字の上の部分が日本と中国で違う。
日本式をミギホネ、中国式をヒダリホネなどというが、これがUnicodeでは同じU+9AA8というコードポイントに包摂されている。

52
Unihan data for U+9AA8

ソース分離規則

Unicodeは、当初、65536といういかにも少ない文字数や、日中台朝韓越の漢字を包摂して減らせという方針から、アメリカの企業による黒船的文化侵略で漢字文化が破壊される、という情緒的な反対運動が日本の文学者から巻き起こった。

ところがUnicodeはソース分離規則という方針を打ち出した。
ソース分離規則というのは、Unicodeの元になった、日本なら日本の工業規格でもともと分離されている字は、Unicodeとしても包摂しないという規則である。

たとえば日本は、JIS X 0208およびJIS X 0212という規格から漢字を供給していたので、JIS X 0208およびJIS X 0212の中で分離している字はもう包摂しない。
たとえばJIS X 0208の中には、「剣」という字の異体字が劍、劔、劒、剱、釼と5つあるが、これら6つの文字はJIS X 0208の中でも別の字として包摂されずに分離しているので、Unicodeの中にも包摂しないで6種類ぜんぶ別の字として存在する。

JIS X 0212(JIS補助漢字)は、後継のJIS X 0213の登場と共にJIS規格としては非推奨になったが、Unicodeの中にはJIS X 0212から採集した字が残っている。
〆という字は、JIS X 0208の中に記号として入っているが、JIS X 0212の中にも間違いで乄という字形で入ってしまった。
この2つのシメはいまだにUnicodeの中に両方別の字として残っている。

JISが包摂しているがUnicodeだと使える

内田百閒という作家がいて、閒という字(門構えに肉月)は間の旧字体である。
百閒という筆名(俳号?)の由来は岡山県の百間川であって、この川の名前は「百間川」と新字体で表記する。
このようにJISは閒と間を包摂しているが、ではぼくはこの文章でどうやって書き分けているかというと、Unicodeには外国由来で閒という字が包摂されずに入っているからだ。

三大人名漢字

三大人名漢字というのがある。

・ツチヨシ

33
Unihan data for U+20BB7

土+口という形で、牛丼の吉野家の吉はこれが正しいということだ。
これもJISは士+口の吉(サムライヨシ)と包摂しているが、Unicodeには外国規格由来で収録されている。
ただしU+20BB7というコードポイントは俗に言うサロゲート・ペア範囲であって(このブログで前に説明した)、環境によっては表示できないことがある。

・ハシゴダカ
10
Unihan data for U+9AD9

高いという字のなべぶたの下がハシゴ状になっている字で、デパートの髙島屋はこれが正しいということだ。
これもJISは高(クチダカ)と包摂しているが、Unicodeには外国規格由来で収録されている。
サロゲート・ペア範囲ではない。

・タチザキ
14
Unihan data for U+FA11

崎と言う字の右上が大でなくて立になっている字で、女優の宮﨑あおいさんはこの字が正しいということだ。
JIS X 0208、0212には入っていなかったが、JIS X 0213にはこの字も入った。

まとめると、
 ・ハン・ユニフィケーションで日本と他の国の字がまとめられたことはあったが(例:骨)、日本の中で分離されている字はソース分離規則で分かれている(例:剣)
 ・日本ではJIS規格で包摂されているが、外国では包摂されていないのでUnicodeを使えば使える日本の旧字体(例:閒)や人名漢字もある(例:ツチヨシ、ハシゴダカ)
 ・日本でもJIS X 0213で新しく収録された字がUnicodeに追加されたものもある(例:タチザキ)

それでも葛城市と葛飾区のカツの字とか、斎藤さんのサイとか、渡辺さんのベとか、同じ字の異体字と分かってはいるけど書き分けたいという用途が存在する。
この場合はIVS/IVDという、包摂した文字コードの後ろに異体字セレクタというコードを追加で埋め込んで字体を切り替えるシステムが導入されている。
これも前ちょっと書いたけど、こっちは勉強中だ。