人工知能に関する断創録

このブログでは人工知能のさまざまな分野について調査したことをまとめています(更新停止: 2019年12月31日)

フォントファイルのロード

pygameではデフォルトのフォントで日本語を表示することができません。MSゴシックなどを指定すればOKかもしれませんが、OSによって使用できるフォントが違うので環境依存になってしまいます。この解決策としてゲームにフリーのフォントファイルを添付するという方法があります。

だからといってMSゴシックのフォントファイルを添付することはできません。使用条件に違反してしまいます。ここでは、情報処理推進機構(IPA)という国の機関が配布しているIPAフォントを使います。滑らかな字体で読みやすいフォントです。以前は、ゲームに添付して使うことはできなかったのですが、2008年2月からライセンスを添付するなど条件を守ればOKになりました。この情報はtasogareさんに教えていただきました。ありがとうございます。

というわけでIPAフォントを使って日本語を表示するサンプルです。テキストを描画する(2008/5/4)が基本となってますのでそちらを先に読むことをおすすめします。

myfont.zip
f:id:aidiary:20100605084036p:plain

サンプルスクリプト

#!/usr/bin/env python
#coding: utf-8
import pygame
from pygame.locals import *
import sys
 
SCREEN_SIZE = (640, 480)
 
pygame.init()
screen = pygame.display.set_mode(SCREEN_SIZE)
pygame.display.set_caption(u"フォントファイルのロード")
 
# フォントの作成
myfont = pygame.font.Font("ipag.ttf", 80)
 
# テキストを描画したSurfaceを作成
hello1 = myfont.render(u"こんにちは!", False, (0,0,0))
hello2 = myfont.render(u"こんにちは!", True, (0,0,0))
hello3 = myfont.render(u"こんにちは!", True, (255,0,0), (255,255,0))
 
while True:
    screen.fill((0,0,255))
    
    # テキストを描画する
    screen.blit(hello1, (20,50))
    screen.blit(hello2, (20,150))
    screen.blit(hello3, (20,250))
    
    pygame.display.update()
    
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()

フォントファイルのロード

基本的な部分はテキストを描画する(2008/5/4)と同じです。違うところはフォントの作成方法でFontを使うところぐらいです。ipag.ttfが添付したTTF形式のフォントファイル名です。ipagはゴシック体のフォントです。 IPAフォントには他にも明朝体のフォントもあります。80はフォントサイズです。

  # フォントの作成
  myfont = pygame.font.Font("ipag.ttf", 80)

アンチエイリアスをかけるとMSゴシックよりきれいですねー。IPAフォントを配布するには enduser_license.txtというライセンスを添付する必要があります。上のzipファイルの中にもちゃんと入ってます!