pygameで利用可能なフォント一覧をリスト化&プレビューするプログラム

ソフトウェア

pygameでOSにインストールされたフォントを使う際、どのフォントを選べばいいか迷ったので、フォントごとに英数字・日本語を一挙にプレビューできるスクリプトを使いました。

使い方

プログラムコピペ用は、下の方に載せてます。

キーボードの上下キーを押すと、前後のフォントのプレビューに移れます。

実演

実際にやってみるとこのように。

日本語非対応のフォントをプレビューしてみるとこのように。

これで好みのフォントを探せます!

実演 動画版

注意点

見やすさ重視で、フォントリストのインデックスに1を加えた数を表示しています。

そのため、これが先頭のフォントでindex番号は0ですが、このように表示されます。

好みに合わせて改変して下さい。

プログラムコピペ用

https://mulberrytassel.com/python-practice-font/
このサイトを参考に一部改良しました。ありがとうございます。

import sys
import pygame
from pygame.locals import *

# 画面初期化
pygame.init()
surface = pygame.display.set_mode((600, 250))

# キーリピート設定
pygame.key.set_repeat(100, 100)

# フォントリスト取得
font_list = []
for x in pygame.font.get_fonts():
    font_list.append(x)

#偶に空の要素が含まれるので、削除しておく
font_list = [s for s in font_list if s != ""]

# リスト初期位置 ここの数字を変えると途中からプレビュー見れる
i = 0

# 無限ループ
while True:
    # 背景色は黒
    surface.fill((0, 0, 0))
    try:
        # フォント設定
        font = pygame.font.SysFont(font_list[i], 30)

        # 表示文字設定
        name = font.render("{}".format(font_list[i]) + "(" + str(i+1) + "/" + str(len(font_list)+1) + ")", True, (255, 255, 255))
        numb = font.render("1234567890", True, (255, 255, 255))
        asci = font.render("ABCDEFGHIJKLMNOPQRSTUVWXYZ", True, (255, 255, 255))
        japn = font.render("あいうえおアイウエオ勝敗決着!?", True, (255, 255, 255))

        # 画面表示位置
        surface.blit(name, [20, 20])
        surface.blit(numb, [20, 70])
        surface.blit(asci, [20, 120])
        surface.blit(japn, [20, 170])
    except FileNotFoundError:
        print("無効なフォント")
        i += i
    except IndexError:

        #プレビュー終了時に表示。適当な日本語フォントを指定しておく
        font = pygame.font.SysFont("hgs教科書体", 30)
        numb = font.render("全フォントのプレビュー終了! 計" + str(len(font_list)+1), True, (255, 255, 255))
        surface.blit(numb, [20, 70])

    pygame.display.update()
    # イベント取得
    for event in pygame.event.get():
        # 終了処理
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
        if event.type == KEYDOWN:
            if event.key == K_ESCAPE:
                pygame.quit()
                sys.exit()

            # フォント変更
            if event.key == K_UP and i > 0:
                i -= 1
            if event.key == K_DOWN and i < len(font_list)-1:
                i += 1

これでフォント選びがはかどります!!

その他のPython記事もご覧ください。

タイトルとURLをコピーしました