Noto Sans CJKフォントは、複数の言語に対応したフォントが一つのTTCファイルとして提供されている。 github.com これは内部的には複数のTTFファイルでできていて、言語ごとに別れている。
各言語のフォントファイルは以下から取得できる。
github.com
unitettcを使い、 unitettc64.exe .\NotoSansCJK-Medium.ttc
のようにしてフォントを分割することもできる。
yozvox.web.fc2.com
さて、各ファイルの内容をFontForgeで見たところ(CIDで単一化を指定にしてUnicode BMP面を表示、Compact (hide unused glyphs)を有効化している)。言語ごとに使えるグリフが異なることがわかる。
さて、なんでこんなことになっているのか?ひとつのTTFファイルに全言語ぶんのグリフを含めてしまったら良いのでは?と思うのだが、どうやらTTFファイルの仕様上、一つのファイルに65,535個以上のグリフを含められないということらしい。
2021年9月にOpenType規格の最新版である1.9が公開された。OpenTypeフォントに含まれるグリフ数はmaxpテーブルで定義されている。OpenType 1.9でもnumGlyphs(フォント中のグリフ数)はunit16型なので、65,535個以上のグリフが含められない状況は変わっていないようだ。