2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Pillowで絵文字(emoji)が表示されない

Posted at

背景

Pillowで絵文字が表示できなくてハマった

Pillowで絵文字をレンダリングしたくてあちこち検索し「結局使えるの?使えないの?はっきりして!」と思った頃に無事出力できた。

下のような残念な出力結果と格闘している方の時短のためにメモ。
test.png

解決方法

見つけたかったのはこの記事だ

NotoColorEmoji.ttfseguiemj.ttfをダウンロードしてきて、下記のtest.pyと同じ階層に入れる。
test.pyを実行すると絵文字がレンダリングされて出力される。

test.py
from PIL import Image, ImageDraw, ImageFont

def test(font, out_name):
    fnt = ImageFont.truetype(font, size=109, layout_engine=ImageFont.LAYOUT_RAQM)
    im = Image.new("RGBA", (600, 600), (100, 100, 100, 100))
    draw = ImageDraw.Draw(im)
    draw.text((0, 32), "a\u263A", fill="#faa2", embedded_color=True, font=fnt)
    draw.text((0, 132), "a\u263A", fill="#faa8", embedded_color=True, font=fnt)
    draw.text((0, 232), "a\u263A", fill="#faa", embedded_color=True, font=fnt)
    draw.text((0, 332), "\U0001F3AC\U0001F44B\U0001F3FB\U0001F44B\U0001F3FF", fill="white", embedded_color=True, font=fnt)
    draw.text((0, 432), "a\u263A", fill="#faa2", font=fnt)
    im.show()
    im.save(f"testemoji_{out_name}.png")

test("NotoColorEmoji.ttf", "cbdt")
test("seguiemj.ttf", "colr")

お!かわいい感じでレンダリングされている。

2つのフォントの特性を見比べてみて、自分はNotoColorEmoji.ttfの方が好みだったので、そちらを使うことにした。

出力したかった、令和市のカレンダー画像も無事に完成。
163178705_447821296546538_7330220945816850437_n.png

余談

####結果:Pythonistaでは動かなかった.

自分はPythonを使うときに、iPad×Pythonista環境を使ってるのだが、PythonistaではうまくPillowがアップデートできなかった。

そのため、NotoColorEmoji.ttfを使おうとするとエラーが出て、絵文字レンダリングを完了できなかった。

しかし、Pythonistaで作成したファイルを a-Shellで実行したらうまくいった。

Pythonistaはコーディングしやすいし、a-shellは更新しやすいので,この連携は今回以外にも応用が利く気がする。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?