TL;DR
Windowsのデフォルト絵文字をNoto Emojiに変更したかったけど、むりっぽそう。
Noto Emojiとは
googleが開発した絵文字フォントNoto Color Emojiの、ざっくり言えばモノクロバージョンです。Google Fontsからダウンロードできます。
以前のバージョンのandroidに使われていたような、ブロブを用いたイラストが特徴です。詳細な内容は 窓の杜の記事 が詳しいです。
このフォントが気に入ったので(というか、Segoe UI Emojiがあまり好きではないので・・・)、Windowsの絵文字表示をこれにできないかと考えました。
そもそもWindowsの絵文字フォントって何?
このあたりは理解不足なのですが、Windowsでの絵文字の表示には、(アプリケーションで指定した場合を除き)アプリケーションを問わずSegoe UI Emoji というフォントが使われています。AndroidでもApple製品でもそれぞれ独自のフォントが使われているようです。
なお、TwitterではOSを問わずTwitter独自の絵文字が表示されますが、画像に置換する処理を行っているようです。1
なので、Windowsの設定で、絵文字フォントの設定を変更することができればめでたしめでたし、だったのですが、残念ながらそのような設定は見当たりませんでした。
Font Link を設定してみる
Font linkとは、表示したい文字が指定したフォントの中に存在しなかった場合、別のフォントを混ぜて表示する技術です。DirectWriteを使用しているアプリでは反映されないなど、万能ではありませんが、メモ帳などでなら使用することならできるかもしれません。
GUIから設定することはできず、レジストリを直接編集します。方法は別のサイトに譲ります。
が、結論だけ言うと、Font linkではダメでした。何がダメなのかはわかりません。
Segoe Emoji UI を偽装できないか
このままでは引き下がれないので、別の方法を考えます。フォントの指定が変更できないなら、フォントのほうを偽装してしまえばいいのではないでしょうか?
そう思って調べると、次の記事が引っかかりました。まさにwindowsの絵文字をNoto Color Emojiに設定したい、という質問です。
How do I replace Windows 10's emoji?
この記事の回答をdeepl先生に突っ込んで引用します。
Microsoftが意図的にNoto Emojiをサポートしないようにしたわけではありません。もっと簡単に言うと、Notoが使っているフォーマットをサポートしていないだけなのです。
Segoe UI EmojiはMicrosoft独自のフォーマット(COLR/CPALのレイヤー化されたベクタードローイング)を使っていますし、Noto Emoji ColorはGoogle独自のフォーマット(CBDT/CBLCのビットマップイメージ)を使っています。また、Adobeの「SVG」、Appleの「sbix」形式もあります。
www.DeepL.com/Translator (無料版)で翻訳しました。
絵文字フォントの形式は統一されているわけではなく、様々なフォーマットがあるようですね。Noto EmojiとSegoe UI Emojiはそもそも形式が違うため、フォント名を偽装した程度のすげ替えでは表示ができない、ということのようです。
各形式の違いはこの記事の記事に詳しくあります。Noto EmojiのCBDT/CBLCは画像、Segoe UI EmojiのCOLR/CPALはベクター形式ということで、単にコンバートすればできそう、という気配もしないですね・・・。それにしてもAppleとGoogleとMicrosoftでそれぞれ別の形式を使っているとは、なんと面倒な。いちユーザーとしては、なんでもいいから揃えてくれや、と言いたくなります。
一応、Noto Color Emojiのリポジトリを覗くと、イラストのsvgファイルも同梱されているので、これをもとにどうにかしてCBDT/CBLC形式のフォントを作成することも不可能……では……ないのかもしれませんが……、筆者にはそんなことをする技術も熱意もなく、ここで諦めました。
結論
というわけで、この記事を書いている2022年5月17日現在、Windowsの絵文字をNoto Emoji に置き換える方法は、なさそうです。
VSCodeなら使える!
VSCodeでは、フォント指定のところに書けば普通に使えます。ただ、フォント指定の先頭に書くと数字を絵文字で表示してしまい大変なことになるので、英字フォントの後ろに書くのが良いでしょう。
こうしてみると、色の情報がない分、視認性が良いとは言えない気もしてきましたが(画像は16pxです)、かわいいのでしばらくはこれで行こうかと思います。