ユニコードが使えるようになって、利用できる文字が増えた。その中には、普通の文字に非常によく似たものがある。文字の形は、フォント側で決めるため、どのような形で表示するのかは、フォント次第なのだが、そもそもの定義からして、普通の文字によく似たものとして、漢字の部首を表すものがある。

ユニコードは、機能や言語などに応じてブロックにわかれている。部首が含まれているブロックには、「CJK部首補助」ブロック(U+2E80〜U+2EF3。115個)、「康煕部首」(U+2F00〜U+2FD5。214個)がある。

たとえば、「人」(U+4EBA)という文字によく似た部首は「康煕部首」のU+2F08にある。これでGoogleのインターネット検索を行うと、762万件ほどWebページが見つかる(写真01)。「人」(U+4EBA)のほうでは、57億件(写真02)なので、部首の比率は0.13%とかなり少ないのだが、762万件は、実数としては大きな数字だ。また、PDFファイルの比率が高い。もっともすべての検索結果を調べたわけではなく、正しい「人」が混入している可能性もある。しかし、上位にあるいくつかのPDFファイルやWebサイトでは、部首である「人」(U+2F08)が使われていた。

写真01: ユニコードの「康煕部首」にあるU+2F08という部首は、「人」(U+4EBA)によく似た形で表示される。この部首をインターネット検索すると762万件がヒットする

写真02: 「人」(U+4EBA)で検索すると57億件なので、部首の比率は小さいものの、実数としてはかなり大きい

検索結果のなかには、そもそも部首として使われているものもあるが、ざっと検索結果を見るとそうでないもの、たとえば、「法人」や「個人」、「人材」という単語に「人」(U+4EBA)が使われている。

そもそも、こんなに大量に文書が見つかる理由がよくわからない。Googleの検索結果を見る限り、それほど難しい単語でもなく、普通に日本語変換で入力できそうな単語ばかりだ。少なくとも、標準的な辞書を使っている限り、こうした部首が通常の単語の一部となることはありえない。

ざっとWindows 11で調べて見たが、手書き文字認識やIMEの手書き文字検索などでは、「人」という入力で部首を候補にするような可能性はなさそうだ。過去には、不完全な手書き文字認識やOCR(光学文字認識)などで、認識候補として部首が表示されユーザーが誤選択した可能性も考えられなくもない。あるいは文字コード表などのアプリケーションから文字を探して入力するときに、間違って部首を選択したという可能性が考えられる。しかし、部首は、そもそもユニコードの文字なので、ユニコードが標準になってから混入したものであり、シフトJISの時代に混入した可能性はない。いまどき、「人」のような簡単な文字を文字コード表などから入力する人がいるのだろうか?

残る可能性として考えられるのは意図的な混入だ。文書の流出対策で、配布するときに、相手によって、一部の文字を置き換え、その位置で個々の文書を区別しているという可能性がある。可能性としてあるものの、PDFなどの文書ならともかく、HTML内にも混入しているのがわからない。どこかで部首が混入し、それをコピー&ペーストしたのだろうか? 知らず知らずのうちに正しくない文字で、テキストが「汚染」されてしまうと考えるとちょっと恐ろしい。

部首には、明らかに部首に見える文字もある。たとえば「CJK部首補助」では、「人偏」(U+2E85)になっているため、「人」とは区別可能だ。フォントによっては、部首と文字を異なる形にしているものもある。しかし、通常文字とまったく同じ形を表示するフォントもある。なお、通常の文字ブロック(CJK統合漢字)の中にも部首は含まれている。たとえば、「人偏」はU+4EBBで、「人」(U+4EBA)の次にある。

さて、こうした問題があることを考えると、インターネットから持ってきた「テキスト」にも不安がつきまとう。もしかしたら、文字ではなく部首が、使われているかもしれないからだ。コマンドラインなら、エンコードにあわせて、文字のコードポイントがどの「ブロック」に属するのかを調べれば、少なくとも部首かどうかを判定できる。たとえば、Windows PowerShellなら、正規表現検索のコマンドselect-string(省略形はsls)を使い、

"文字列" | sls '[\u2E80-\u2EF3\u2F00-\u2FD5]'

とすることで、文字列中のCJK部首補助や康熙部首のブロックに文字が含まれるかどうかを判定できる(写真03)。

写真03: PowerShellで正規表現を使って検索することで、部首を見つけることができる。インストールが必要だがPowerShell 7を使うとヒット位置を反転表示してくれる。Windows付属のWindows PowerShellでも同じコマンドが使えるが、ヒット位置の反転表示はしてくれない

GUIアプリケーションでは、フォントを変更して部首を見つける方法がある。前述のようにフォントによっては、部首と通常文字で明らかに形が違うものがある。確実なのは、ユニコードコンソーシアムの提供する「Last Resort Font」使う方法だ。このフォントは、文字や所属ブロックを区別できるように作られたフォントだ(写真04)。

GitHub - unicode-org/last-resort-font

https://github.com/unicode-org/last-resort-font

写真04: 正規表現検索などが困難なアプリケーション内では、Last Resort Fontを使うことで同じように見える文字を区別できるようになる。また一部のフォント(この場合はHG創英角ポップ体)は、部首と通常文字の形が異なるが、写真左側の「Yu Gothic」のように区別がつかないフォントもある

今回のタイトルの元ネタは、ロアルト・ダールの「あなたに似た人」である。1980年初頭に「ロアルト・ダール劇場」というタイトルのイギリスのテレビ番組が放送された。映画の007シリーズに似たオープニングに惹かれたが、インターネットの普及前で当時はなにも調べようがなかった。しかし、なにかの雑誌記事で、ダールの著書があり、翻訳もされていることを知り、最初に読んだのがこの本。不思議なことに、何かが気になり出すと、偶然にどこかで、その情報に出会う、という経験が当時は結構あった。