ujimushi(@旧sradjp(15364))の日記

旧スラドの日記の引越先です

Plots.jlのGRバックエンド(@ubuntu)で絵文字を表示する

Plots.jlのイシューに[BUG] GR backend does not support emoji in legendとあった。

でも「これってバグか?絵文字が含まれるフォントで表示すればいいだけじゃん。」と思ったので試してみた。

ところがubuntuにインストールされているNoto Color Emojiではうまくいかない。 これは普通の文字のところのグリフがなく,少し特殊なフォントっぽい。

ということで色々探してみたところ,「Symbola」というフォントがあるようだ。 ubuntuなら

$ sudo apt install ttf-ancient-fonts-symbola 

でインストールできる。

でフォント名を調べて次のようなスクリプトを作成。

using Plots
gr()
plot(sin; label="🐇(x)", legendfontfamily="Symbola_hint", legendfontsize=14)

savefig("emoji.png")

結果は次の通り。

もう一度言おう。これってバグか?

確かに単一フォントファイルでしか表示できないのは不便ではあるが,仕方ない面もあるので 回避策を見つけもせずバグバグっていうのもなぁ…

なお,ソースリストや他のバックエンドで絵文字が表示できるのは指定したフォントにグリフが無かったら 別の表示可能なフォントのグリフをパクって表示する仕組みのライブラリが結果的に 使われているというのが本当のところだと思う。

追記

WindowsでもSymbolaフォントをインストールすれば表示できそう。どこが正式版なのか分からんけど fontlibrary.orgのSymbolaのところからダウンロードできるのでいいのかも。