私は現在、絵文字をサポートする独自のDrawTextEx()関数を作成しています。この関数を使用すると、テキスト内に顔文字が見つかるたびにコールバックが呼び出され、顔文字を含むテキストセグメントをイメージで置き換える機会が与えられます。たとえば、テキスト内にあるUnicode文字0x3DD8 0x00DEは、テキストが描画されている間に笑顔のイメージに置き換えられます。実際にこの関数はうまく動作します。「HTMLエンティティ」の絵文字コードをUTF16で変換する(C++で)
今、私は呼び出し側でイメージライブラリを実装したいと思います。私はコールバック関数で0x3DD8 0x00DEのようなテキストセグメントを受け取り、私の考えは、描画する画像を含む構造体にリンクされたすべてのUnicodeの組み合わせを含むマップでこのコードをキーとして使用することです。私はhttp://emojione.com/developers/ウェブサイトで良いパッケージを見つけました。このサイトで利用可能なすべてのパッケージには、16進コードである複数のファイル名が含まれています。そこで、パッケージに含まれているファイルを繰り返し処理し、自動的にマップを作成することができます。
しかし、これらのコードは別の標準の一部であり、実際にはWeb実装で明らかに使われている「HTMLエンティティ」という項目のセットです。http://graphemica.com/%F0%9F%98%80のWebサイトで見ることができます。したがって、これらのファイルを使用できるようにするには、名前に含まれるHTMLエンティティ値をUTF16コードに変換するソリューションが必要です。例えば、上記の笑顔の場合、私は0x1f600 HTMLエンティティコードを0x3DD8 0x00DE UTF16コードに変換する必要があります。
ブルートフォースのアプローチは、これらのコードをそれぞれコードに1つずつ追加して変換するマップを作成することです。しかし、最も楽観的なシナリオでは、Unicode標準には、絵文字の組み合わせが1800以上ありますので、私はそれには既知のAPIや関数などの既存のソリューションがあることを知りたいと思います。または、それを行う既知のトリックはありますか?例えば
よろしく