さけのさかなのブログ

同人ゲーム開発やってます。Unity使ったりする。

NotoFontでフランス語に対応するときの注意事項

www.google.com

 日本語のゲームを出すうえで、NotoSansCJKjpを使う人も多いんではなかろうか。

 このフォントには当然アルファベット26文字も含まれるので、英語版を開発する場合にも同じフォントで充分で、差し替える必要はない。

 ではフランス語版はどうだろうか?このままNotoSansCJKjp一本で済ませられればラクできるわけだが。

NotoSansCJKjpに含まれないフランス語アルファベット

 フランス語アルファベットの構成文字は以下の通り。

ABCDEFGHIJKLMNOPQRSTUVWXYZÉÀÈÙÂÊÎÔÛËÏÜŸÇŒÆ
abcdefghijklmnopqrstuvwxyzéàèùâêîôûëïüÿçœæ

 そしてNotoSansCJKjpの中には、Ÿだけが含まれていない。(小文字のÿは含まれている。)

 このため、フランス語を完璧にサポートしようとするとNotoSansCJKjpでは不足で、フォントを差し替えるか、別のフォントを使う必要が出てくる。アチャー。

Ÿという文字について

 ただし、Ÿはフランス語でも使われることがかなり珍しい文字で、せいぜい20個程度の単語でしか見られず、しかもそれらは固有名詞なんだそう。

 なので、ゲーム内に使う文字を調べてみて、Ÿが必要ないということは有りえる。そうなればめでたくNotoSansCJKjpでフランス語版を組むことができるわけだ。(実際MSTでは必要なしと判断した)

 とまあ、イマイチ座りの良くない結論になってしまうんだけど、完璧を目指した場合にやるであろうランタイムでのフォント差し替えはとてつもなくめんどいので、これはしゃーなしよな。

余談:NotoSansCJKに含まれる文字

 こっから先は余談。

 ところでNotoSansCJKに含まれる文字セットってどういうものか?

www.google.com

 公式にはこう書いてある

This includes the full coverage of CJK Ideographs with variation support for 4 regions, Kangxi radicals, Japanese Kana, Korean Hangul, and other CJK symbols and letters in the Basic Multilingual Plane of Unicode.

 韓国語日本語中国語以外の文字については、「Unicode基本多言語面にある文字」と書かれている。が、さきほどのŸ(U+0178)はというと、まさに基本多言語面に含まれている文字なのである。えー。つまり。基本多言語面にある文字のうち、なんらかの基準で選定した文字セットがNotoSansCJKには採用されている、と。そんなことある?

 結局、使いたい文字が含まれているかどうかは実際に確認しとけっつーことですわな!

Ÿがハブられる文字セット

 さらに余談の余談。

 小文字のÿが含まれるのに大文字のŸがないとか不自然だろ、と思うんだけど、実際にそういう文字セットが存在する。Latin-1(ISO 8859-1)というラテンアルファベット文字コードがそうだ。MySQLを触ってる人には見おぼえがあるんじゃなかろうか。まあ好きではないだろうけど。

 わざわざNotoSansCJKjpの文字セット策定にあたってLatin-1を参考にしたわけではないとは思うけど、ともかく、文字コードまわりはなかなか複雑怪奇なことが多くてしんどいすなあ。