国旗の絵文字

  1. MeryはVer.2.6くらいから絵文字に対応していると思いますが、最近X(Twitter)でよく使われている国旗の絵文字はコピペしても国旗が表示されません。多分未対応なのだと思いますが、対応される可能性はありますでしょうか?

    Windows バージョン:Windows11 22H2 64bit
    Meryバージョン:3.6.5

     |  H.I.  |  返信
  2. Mery をご愛用いただき、ありがとうございます。

    Mery で使用できる絵文字は Windows の機能に依存しています。そのため、Windows が国旗の絵文字に対応すると、Mery でも同様に表示できるようになります。

    ただし、今後も Microsoft が国旗の絵文字に対応しない可能性もあります。これは、国旗の絵文字に対応することがその「国」の国際的な認知に関わるデリケートな問題となるためです。

    【参考リンク】🚩Windowsシステムでの国旗の絵文字はアルファベットで示すのはなぜ? | EmojiAll
    https://www.emojiall.com/ja/blog/321

    また、絵文字を含む UNICODE の仕様を決定する UNICODE コンソーシアムも、「Unicode コンソーシアムは、何が国で何がそうでないかを決定することを目的としていません。」としており、国旗の絵文字に対応しない方針を取っているようです。

    【参考リンク】Unicode 「もう国旗の絵文字の提案を受け付けない」と発表 - その理由は | TECH+(テックプラス)
    https://news.mynavi.jp/techplus/article/20220329-2306521/

    そういうわけで、Mery での国旗の絵文字への対応についても、現時点では難しい状況ですが、ご了承くださいませ。

     |  Kuro  |  返信
  3. ご回答ありがとうございます。

    > Mery での国旗の絵文字への対応についても、現時点では難しい状況ですが、ご了承くださいませ。

    「Meryで【国旗の絵文字】に国旗イメージが表示できない」ことは不具合でもなんでもないので、その実装に必要な労力が実現のメリットに見合わない、ならば対応しない判断は当然です。

    ただ、まだ自分は納得していませんので可能ならばもう少しご説明(and/orご意見)いただければ幸いです。

    まず、現時点で「マイクロソフト(MS)はWindowsシステムで【国旗の絵文字】表示をサポートしていない」のは事実です。
    また将来MSがその状況を変えるか否かは不確定、ということにも同意見です。
    しかし、現在AppleはMacOS/iOSで【国旗の絵文字】をサポートしているらしい(Macは使ってないので伝聞)ことは、
    少なくともAppleは【国旗の絵文字】の表示にメリットがあると判断しており、
    MSの「【国旗の絵文字】非表示」が絶対的な判断とはいえないのでは?と考えます。

    またUNICODEコンソーシアムの【国旗の絵文字】に対する方針ですが、ご提示のリンクを読むと、今後「国旗の絵文字に対応しない」というわけではなく、
    「個別に国旗提案を処理してきたが、今後は『ISO 3166-1』のリージョンコードを持つ国だけが自動的に処理される」とのことで、
    「ISO 3166-1」というISO標準(ほぼ国連加盟の国々に対する国コード、と解釈しました)のコードが与えられた国について
    【国旗の絵文字】をUNICODEコンソーシアムとして対応する、という意味ではないかと思います。
    よって【国旗の絵文字】が今後すたれていく、ということではないと考えます。

    そして「Windowsシステムで【国旗の絵文字】表示をサポートしない」ことは「Windowsで動作するアプリケーションで【国旗の絵文字】を表示できない」
    ことを意味しません。実際、Windowsで動作するFirefox(少なくとも最新版122)では【国旗の絵文字】を表示可能です(X/Twitterのようにサーバ側対応でなく)。
    また現在Windows上で通常【国旗の絵文字】を表示できないChromeやEdgeに対してそれを表示可能にする拡張機能「Country Flag Fixer」というものも
    存在します(動作は未確認ですが)。

    上記により、Meryで「【国旗の絵文字】に国旗イメージを表示」することに対して、ご説明、ご意見をいただければ幸いです。(まあ、開発者本人の意向に逆らう気はこれ以上ありません)

    最後に一点、ご報告です。
    Windowsシステムの【国旗の絵文字】は、1文字扱いをしている場合があります(全部ではない)。Edgeやメモ帳では【国旗の絵文字】の連続する2アルファベットは1文字として選択したり、カーソル移動したりします。が、Mery(3.6.5)では【国旗の絵文字】の文字シーケンスを2文字として扱います。
    もしかしたらこれへの対応(メモ帳等と合わせる)を希望する方がいるかもしれません(いない可能性も大ですが)。

     |  H.I.  |  返信
  4. ご返信ありがとうございます。

    > MSの「【国旗の絵文字】非表示」が絶対的な判断とはいえないのでは?と考えます。

    私も同感です。そのため、Mery での対応は「現時点では難しい状況」というかたちでお伝えしました。

    > 【国旗の絵文字】をUNICODEコンソーシアムとして対応する、という意味ではないかと思います。
    > よって【国旗の絵文字】が今後すたれていく、ということではないと考えます。

    UNICODE コンソーシアムは国旗への対応を終了し、「ISO 3166-1」のコードを持つ国については自動処理されるだけになる、というネガティブな方針に見受けられましたが、誤解があればすみません。

    記事では、それに関連して、MS が国旗の絵文字をサポートしないことが言及されていたため、参考リンクとして共有させていただきました。

    > そして「Windowsシステムで【国旗の絵文字】表示をサポートしない」ことは「Windowsで動作するアプリケーションで【国旗の絵文字】を表示できない」ことを意味しません。

    確かに、おっしゃる通りですね。アプリケーションが独自に対応すれば、国旗の絵文字表示は可能です。

    > 上記により、Meryで「【国旗の絵文字】に国旗イメージを表示」することに対して、ご説明、ご意見をいただければ幸いです。(まあ、開発者本人の意向に逆らう気はこれ以上ありません)

    Mery で国旗の絵文字への対応が難しいのは、絵文字の表示が Windows の機能に依存しているためです。

    通常、Mery では MS の Segoe UI Emoji フォントを使って絵文字を描画していますが、このフォントには国旗の絵文字が含まれていないため、国旗が表示されません。

    MS がフォントに国旗の絵文字を追加すれば、Mery でも表示できるようになるはずですが、その可能性は低いかもしれないということで、参考リンクを共有しつつ、状況をお伝えした次第です。

    Firefox は独自のフォントを使用して描画しているようですが、「国旗を含む独自のフォントを作成する」までは考慮していなかったため、MS の対応状況次第という回答になってしまいました。

    これらを踏まえ、「国旗の絵文字を Mery が独自に実装する」というご提案につきましては、残念ながら私の技術ではフォントの作成まではできません。そのため、独自の実装は難しい状況です。

    別のアプローチとしては、現在は未対応ではありますが、将来的に Windows が Google の Noto Color Emoji フォントに対応することも考えられます。これにより、Mery でも国旗を描画できるようになるかもしれません。

    > Edgeやメモ帳では【国旗の絵文字】の連続する2アルファベットは1文字として選択したり、カーソル移動したりします。が、Mery(3.6.5)では【国旗の絵文字】の文字シーケンスを2文字として扱います。

    そうですね。国旗の絵文字が描画できるなら 1 文字として扱うのが望ましいですが、現状では 2 文字のアルファベットとして描画されますので、2 文字として扱うほうが便利だと考え、そのような仕様にしています。

    > もしかしたらこれへの対応(メモ帳等と合わせる)を希望する方がいるかもしれません(いない可能性も大ですが)。

    そうですね。1 文字として扱いたいというご要望が多ければ、再度検討してみたいと思います。

     |  Kuro  |  返信
  5. 追伸です。

    もしかしてと思い、Firefox のインストール先のフォルダーを覗いてみたら、「TwemojiMozilla.ttf」というフォント ファイルが fonts フォルダーに見つかりました。

    どうやら、このフォント ファイルに国旗の絵文字が含まれているようです。

    この TwemojiMozilla.ttf を利用して国旗の絵文字に対応させる方法なら、Mery でも実装できるかもしれません。

    ちなみに、TwemojiMozilla.ttf はオープンソースのフォントみたいで、Firefox を使っていなくても入手できるみたいです。

    【参考リンク】GitHub - mozilla/twemoji-colr: Twemoji font in COLR/CPAL layered format
    https://github.com/mozilla/twemoji-colr

    Mery に同梱できるかどうかや標準で対応するかどうかは確認と検討が必要ですが、可能性が見えてきたので、もう少し詳しく調査してみたいと思います。

     |  Kuro  |  返信
  6. 興味本位で Twemoji.Mozilla.ttf を覗いてみましたが、何が何やらさっぱりですね…。
    FontForgeで開いてみたところ、以下のように「特定のUnicodeの組み合わせと思しき名前 + レイヤ番号」って感じのグリフ名のものが大量にありました。
    https://imgur.com/a/d1UXxzf

    グリフ名から察するに、複数レイヤーを重ねて、それぞれのレイヤごとに色を指定して、みたいなメタテーブルを持っているのかもしれません。(カラーフォントの仕組みはさっぱりです…😓)

    単純にこのフォントをMeryで使うようにしても、例えば U+1F1EF U+1F1F5 で日本語国旗が表示される、という動きにはならないようですね。 ( [J] [P] という絵文字になるだけ)

    特定の文字だけフォントを変えたい、ということであればフォールバックフォントの設定でどうにかなりそうかと思いましたが、合字にならないのでやはり現状は難しそうですね。
    (今更気づきましたが、フォールバックフォントに Mery\Fonts フォルダの中のフォントが表示されないのは仕様上の制限ですかね?)

    ちなみにTwemoji Mozilla、Win11のメモ帳だと国旗表示ができました。

     |  yuko  |  返信
  7. > Mery に同梱できるかどうかや標準で対応するかどうかは確認と検討が必要ですが、可能性が見えてきたので、もう少し詳しく調査してみたいと思います。

    Meryで国旗の絵文字に対応できる可能性が見えてきたことは大変うれしく思います。
    無理のない範囲でご検討いただければ嬉しいです。
    よろしくお願いします。

     |  H.I.  |  返信
  8. ご協力ありがとうございます。

    > 興味本位で Twemoji.Mozilla.ttf を覗いてみましたが、何が何やらさっぱりですね…。
    > https://imgur.com/a/d1UXxzf

    わぁ、これは…。独自にゼロからカラー フォントを自作するなんて無理な感じが漂っていますね😅

    > 単純にこのフォントをMeryで使うようにしても、例えば U+1F1EF U+1F1F5 で日本語国旗が表示される、という動きにはならないようですね。 ( [J] [P] という絵文字になるだけ)

    そのようですね。フォントさえ対応していれば Mery でも描画できるはず、と思っていたのですが…

    国旗のユニコードは特殊で、U+1F1EF U+1F1F5 の組み合わせなどは、Emoji_Component + Emoji_Component というかたちになっていて、実体 (Emoji_Modifier_Base など) が存在しない組み合わせなので、対応するには Mery 側でプログラムの修正が必要になりそうです。

    > 特定の文字だけフォントを変えたい、ということであればフォールバックフォントの設定でどうにかなりそうかと思いましたが、合字にならないのでやはり現状は難しそうですね。

    私も、Mery\Fonts フォルダーに Twemoji.Mozilla.ttf を同梱して、フォールバック フォントを使えばどうにかなるんじゃないかと思ったのですが、ご指摘のとおり、フォールバック フォントにカスタム フォント (Mery\Fonts) は使用できないことをすっかり忘れていました。

    この制限は、Mery の仕様というよりも、Windows の DirectWrite がカスタム フォントをフォールバック フォントとしてサポートしていないからで、Mery でも対応できない状態なんです。

    【参考リンク】フォールバック カスタムフォント | フォーラム
    https://www.haijin-boys.com/discussions/7093

    …となると、やるとすれば、Mery 側では国旗のユニコードを結合文字として処理する仕組みを組み込むところまでになりそうです。

    あとは、ユーザーさんが必要であれば Twemoji.Mozilla.ttf をインストールし、それをフォールバック フォントとして設定してもらう、といったかたちの対応になるかなと、今のところ、そんな感じで検討中です。

     |  Kuro  |  返信
  9. > あとは、ユーザーさんが必要であれば Twemoji.Mozilla.ttf をインストールし、それをフォールバック フォントとして設定してもらう

    ぐふっ。国旗のユニコードを結合文字として処理する仕組みと、Twemoji.Mozilla.ttf を使用して国旗の絵文字を描画するところまでは、なんとかできたのですが…。

    Twemoji Mozilla には国旗の絵文字以外にもたくさんの絵文字が含まれているようで、フォールバック フォントとして設定すると、もともと Segoe UI Emoji で描画できていた結合絵文字なども Twemoji Mozilla に取られてしまい、結合絵文字としては描画されなくなってしまうようです。

    ご希望の動作としては、Segoe UI Emoji で描画できるものは優先的にそれを使って描画し、国旗の絵文字だけを Twemoji Mozilla で描画する仕様だと思いますので、現状の Mery ではこれに対応するのは難しそうです。

    もう一度、設計を見直して考え直す必要がありそうなので、しばらくお時間をいただければと思います。

     |  Kuro  |  返信
  10. > Twemoji Mozilla には国旗の絵文字以外にもたくさんの絵文字が含まれているようで、フォールバック フォントとして設定すると、もともと Segoe UI Emoji で描画できていた結合絵文字なども Twemoji Mozilla に取られてしまい、結合絵文字としては描画されなくなってしまうようです。

    ありゃー。国旗以外にもグリフがたくさんあるなー、とは思いながら見ていましたが、表示優先順で引っかかってしまいましたか。

    Twemoji Mozillaを同梱してそれを呼び出せるのならこのフォントに依存するような仕組みもありなのでしょうが、なかなかそういった仕組みも難しそうですね (私のような素人には想像も及びません…😅)

     |  yuko  |  返信
スポンサーリンク