[Python] 308 matplotlib 日本語フォント

[macOS Catalina 10.15.7]

matplotlibで使える日本語フォントを探すため、使用可能な全フォントについて”あいうえお”をグラフとして表示させてみました。私の環境では全体で301種類のフォントが使用可能です。

元々macOSのFont Bookアプリで日本語フォントを確認できますが、今回はアプリを使わずに検索しています。

下図から”あいうえお”と表示されているフォントをmatplotlibでグラフ作成する際に指定すればOKなのですが、いちいちフォント名を目視で拾い出す作業が不毛なので効率的な方法を模索しています。

例えば、”あ”のユニコードは10進数で12354(16進数では3042)ですから、フォントデータ内をユニコードで検索し該当するグリフ(字体)があれば日本語フォントであると判定できます。

フォントファイルのパスをリスト化するなどしたいのですが、ttfファイルはともかくttcファイル内にあるフォントの確認方法が分からず停滞しています。

import matplotlib.pyplot as plt
import matplotlib

image_font ='font.png'

fonts = set([f.name for f in matplotlib.font_manager.fontManager.ttflist])
print(fonts)
print(f'フォント数 {len(fonts)}')

# 図のサイズ設定
fig = plt.figure(figsize=(10,len(fonts)/4))

# グラフへのフォント表示
for i, font in enumerate(fonts):
    plt.text(0, i, f"あいうえお:{font}", fontname=font)

# グラフ設定
plt.ylim(0, len(fonts))
plt.axis("off")

plt.show()
fig.savefig(image_font)