0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

matplotlibで、使えるフォントの一覧と例を描画

Posted at

やりたいこと

システムにインストールされているフォント一覧を取得して、それぞれの見え方をプロットして確かめる。

font_list.png

こんな感じ。

コード

解説は省略。そのうち追加するかもなので、ご質問があればぜひ。

表示されるフォントが多すぎるときは、コメントにあるように絞り込んでください。

import matplotlib.pyplot as plt
import matplotlib.font_manager as fm

# 文字化けがあるたびに警告が出るので、それを無視
import warnings
warnings.filterwarnings("ignore")

# フォントの一覧を取得
font_names = sorted(
    set([fm.FontProperties(fname=path).get_name() for path in fm.findSystemFonts()]),
    reverse=True,
)
# font_names = [
#     font_name for font_name in font_names
#     if font_name.lower().startswith("l")  # フォントの絞り込みに使える
# ]
num_fonts = len(font_names)
# 描画パラメータ
width_column = 15  # 1列の幅。座標上で1列がどれだけの幅を持つか。例文が長すぎて入らないときはここを大きく。
num_columns = 3  # 列数。何列に分割するか。フォントが小さすぎて見えないときは、これを小さくしてみる。
font_size = 60  # フォントサイズ
example_text = '光とカゲの街'
# 種々の調整
num_rows = -(-num_fonts // num_columns)
width = width_column * num_columns

# 描画
fig = plt.figure(figsize=(width, num_rows))  # これで 1inch = 座標上の1単位 になるはず。
ax = fig.add_subplot(
    111,
    ylim=[0, num_rows], xlim=[0, width],
    xticks=[width_column * i for i in range(num_columns)],
    yticks=[i + 1 for i in range(num_rows)],
    aspect=1, adjustable='box',  # アスペクト比を1:1に固定。
)
for i, font_name in enumerate(font_names):
    ax.text(
        (i % num_columns) * width_column, i // num_columns,
        f'{font_name}: {example_text}',
        fontdict={'family': font_name, 'fontsize': font_size},
    )
fig.subplots_adjust(left=0, right=1, bottom=0, top=1)
ax.grid(True, which='both', axis='both', color="#aaaaaa", linestyle='--', linewidth=4)

fig.show()

余談

こういうコードを覚えておくの、面倒ですよね?
そんなときに使えるのが、VSCodeのこの拡張機能!

ぜひ使ってください。

0
2
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
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?