質問: ### 解決したいこと Android端末で文字(絵文字)を描画する前に、該当の絵文字のフォントを端末が持っているかのチェック方法 textviewなどで絵文字を表示する際に、フォントがあり正しく表示できるのか、フォントがなくtofu表示になってしまうかをチェックし、tofuにならない絵文字だけ描画を行いたいと考えております。 コード等の記載がなく非常に恐縮ですが、有用なライブラリやチェック方法のヒントでも良いのでコメントいただけますと幸いです。 ### 解決したいことの背景 現在、Androidアプリ内でひらがな、アルファベット、絵文字の文字入力を行う機構を作りたく、文字コードを指定して1文字ずつ描画する機構を作りたいと考えております。 ひらがなやアルファベットはどの端末にもフォントが入っており、どの端末でも表示できるのですが。絵文字に関しては機種ごとに搭載しているunicodeバージョンが異なるため、文字コードを指定して表示すると古い機種では多くの絵文字がtofu表示(四角の中に斜線)になってしまいます。 文字入力画面上で絵文字を描画する前に事前にフォントが端末内にあるかチェックすることで、描画の制御を行いたく、方法やヒントをご存知の方いらっしゃいましたらご教示いただけますと幸いです。 ### 検討したこと EmojiCompatを使って、アプリ内にフォントを埋め込んでしまうことも考えたのですが、入力した文字を他のアプリと共有する際に結局文字化けしてしまうため、端末内のフォントで見分けられないかを考えています。
回答: アドバイス頂いたとおり、 PaintCompat.hasGlyph で解決できました。 非常に簡素ですが、以下でチェックが可能になります。 ``` //チェック対象とする絵文字をAとした場合. val emojiBody = A PaintCompat.hasGlyph(Paint(), emojiBody) //フォントがある場合はTrue、ない場合はFalseが返る ```