自分に必要な漢字の数ってどれくらいだろうか
love-neniye
今日はなんだか長い夢を見ていた感覚は残っているが、見た夢は思い出せなかった。布団を掛けないとちょっと寒いくらいの季節のほうが寝相がよくて、よく眠れている気がする。
Webフォントのためのサブセット化作業をしていたりした。このサイトでは本文のフォントとして源暎ちくご明朝体Webフォント化して使っている。収録文字のうち、使いたいものだけを選んでいるだけなので(サブセット化している)、字形を変えたり追加するような「改変」とは思えない部分も感情的にはあるけど、確かに同じものではないわけで、改変にあたるだろう。それとWeb上にファイルを置く以上(cssで読み込んでいるので)、配布にも該当する、はず。一応ライセンスを読んで、改変や再配布はOKだという理解のもとWebフォントにしているが、もしかしたらなんか見落としているかもしれないので、いつの間にかフォントが変わっていたらなんかあったんだなと察していただけるとありがたいです。あと、改変したフォント名に、日本語表記では「源暎」、アルファベット表記では「GenEi」を含まないようにするという条件があるので、あまり深い意味はないがNeniMin-Regularと名付けている。
サブセット化するにあたり最初は武蔵システムのサブセットフォントメーカーを使っていた。これで漢字をJIS第一水準だけにサブセット化したwoff2ファイルにすると、もともと12.2MBあったttfのファイルが、1.1MBのサイズになった。容量に関しては削減はできたものの、「餃子」の「餃」などは第二水準の漢字だったことを知る。それに加え、このソフトだとフォントがもともと持っていたカーニング情報などがごっそり削除されてしまうらしく、欧文は当然のごとく、日本語に限っても約物半角にする設定周りの組版が変わってしまったりする。
そこでPythonで動くfontToolsというツールをインストールした。macOS(Sequoia 15.7.1)のPython環境だとvartual環境ででやれというエラーが出たりしてちょっとハマったが、venvというコマンドで箱庭みたいなのを作ってあげたら大丈夫だった。細かいオプションもいろいろ付けられるので良い。
先の反省を活かし、源暎ちくご明朝体をJIS第二水準までの漢字をサブセット化して作ってみたら、サイズは2.5MBくらいになった。さらにヒンティング情報を削除するno-hintingというoptionを指定したら1.4MBになった。解像度が低いときのヒント情報は、今日の一般的なスクリーンの解像度を考えると、まあなくても問題ないとも思う。
しかし今まであまり漢字の数について意識してなかったけど、JIS第一水準でも2965字、第二水準では(第一水準とは別に)3390字もあるらしい。多すぎやしないか。
fontToolsでは指定したテキストファイルに書いてある文字だけをサブセット化するtext-fileというオプションがあるので、漢字を記述したテキストファイルを用意したんだけど、まあ、第二水準だとほとんど見たこともない漢字がほとんどだ。JIS規格とは別の分類として常用漢字というのがあるけど、これはJISの第一水準、第二水準、第三水準にまたがる文字集合らしい。そして、これらとは別に人名用漢字(人名漢字)というものもある(863文字)。
後方互換性を考えるとほとんど使われない漢字でも残っていくのはわかるけれど、やっぱり多すぎると思う。
今まで書いた日記に使われている文字だけを集めてテキストファイルにしてみたら、使っていた文字の種類は2464種類だった(カナやアルファベット、記号類や漢字を含む)。これをもとにhintingなしのwoff2ファイルをつくってみたら691KBになった。かなり削減できている。現状の文章を表示するためにはこのあたりのサイズが理屈としてはたぶん最小なのだけど、これから追加される文章も、何も考えずに書けば(意識的に漢字について書くとかじゃなければ)、だいたいこの文字種くらいで済むようにも思う。
まあしかし、動画を普通にストリーミングで再生する時代に、数メガバイトのデータ量を削減する必要性というのはあまり気にしなくてもいいのかもしれない。でもデータ量をいったいどこまで削れるのかということを追求するのには素朴な面白さがあると思う。