文字列がCJK Radicals Supplementに自動変換される件
文字列がCJK Radicals Supplementに自動変換される件
前回の話(文字列が康煕部首に自動変換される件(コンピュータ))では、康煕部首文字だけの話であった。
しかし、自動変換されるのは、康煕部首文字だけではないようだ。経緯
私は、康煕部首文字を正当な漢字に変換するプログラムを作成・実行したのだが、変換されない文字があることを見つけた。下図のとおり「長」と「民」の文字は、適正に元の文字に変換されず、小さな文字になったままだ。
「長」の文字は康煕部首文字にもあるにも関わらず、拙作変換プログラムで検知できなかったのだ。
該当箇所だけに編集し、正常な文字と比較してみる(下図参照)。
いつものように、FavBinEditで文字のコードを確認する。
(参考)FavBinEdit の入手
FavBinEdit による表示で次のことが分かる。
UTF-8の文字であり、1文字3バイトで構成される。値は次のとおりであった。
小さい「長」の文字:0xE2BB91大きい「長」の文字:0xE995B7小さい「民」の文字:0xE2BAA0大きい「民」の文字:0xE6B091
Unicode対応 文字コード表によると、下記のとおり、大きい長及び民の文字は、JIS第一水準漢字に含まれることが分かった。小さい文字はヒットしない。
http://ash.jp/code/unitbl21.htm
区 点 JIS SJIS EUC UTF-8 UTF-16 字36 25 4439 92B7 C4B9 E995B7 9577 長44 17 4C31 96AF CCB1 E6B091 6C11 民
Unicode文字ツールの「1文字入力して調べる」で小さい文字を入力してみる。
https://www.marbacka.net/msearch/tool.php
すると、[Unicode文字番号]として、次の事柄が分かる。
小さい長:U+2ED1
小さい民:U+2EA0
The Unicode ConsortiumのUnicode 13.0 Character Code Chartsに"Find chart by hex code"という検索窓がある。その窓に、2ED1又は2EA0を入力し検索する。
https://www.unicode.org/charts/
すると、次のPDFファイルが案内される。
https://www.unicode.org/charts/PDF/U2E80.pdf
2ED1及び2EA0の箇所には、小さい長及び小さい民が記されている。
このPDFファイル内には、次のタイトルが記されている。
CJK Radicals Supplement Range: 2E80–2EFF
何故このようなテーブルを設けたのか?
For the characters in this block whose representative glyph takes up only a portion of the em-box, the placement relative to the em-box is either centered or respects prototypical usage. The placement of the representative glyph is for informational purposes only, and should not be considered a recommendation for implementations.
漢字を構成する部首としてこんなものもあるよということで、情報提供のために作成したのであって、実際の文章で使うことを推奨するものではない、という趣旨(意訳)です。
(引用)CJKとは、中国語と日本語、および韓国語をまとめた言い方のことである。
https://www.sophia-it.com/content/CJK
https://en.wiktionary.org/wiki/CJK
元の漢字のコードは、このPDFファイル内に記されている。つまり、このCJKコードと元の漢字コードの2か所において同一の漢字を定義しているのである。
このような仕様を作成した経緯のような文書があった
https://www.unicode.org/L2/L2019/19212r-n5069r-radical.pdf
「長」という文字は、康煕部首文字、CJK Radicals Supplement(CJK部首補助)及び通常の漢字の3か所で定義されていることになる。普通に考えて、変だ。
本記事を基に作成したWordのmacroは次のページにあります。