読者です 読者をやめる 読者になる 読者になる

PIL以外でTrueType日本語フォントを使う -- リベンジ

Python

http://d.hatena.ne.jp/tanakahisateru/20081008/1223450159
のリベンジ

PyGameを使えば、sbit(TTFに埋められたビットマップフォント)のあるTrueTypeフォントでは、文字サイズが小さいとき自動的にビットマップフォントが使われる。

import pygame, pygame.font, pygame.image

pygame.init()
image = pygame.image.load('source.png')
font = pygame.font.Font('ipagp.ttf', 16)
text = font.render(u"こんにちは世界", 0, (255,255,255))
image.blit(text, (0, 0))
pygame.image.save(image, 'output.png')

普通に使うぶんには、PILよりもこっちの方が楽で便利。TTFにビットマップを持たせてあるものがあるのは、アンチエイリアスなしのディスプレイでジャギーを緩和するためだけでなく、線が1ピクセルより細くなる問題を回避するためでもあるわけで、安易に無視しないほうがいいような気がした。

PyGameなら、ウィンドウに画像処理結果をプレビュー表示することもできる。

#上の続き
from pygame.locals import *

screen = pygame.display.set_mode((200,200))
screen.blit(image, (0,0))
pygame.display.flip()
while pygame.event.wait().type != QUIT:
    pass

ただし、PyGameは画像縮小時のフィルタがない(というか、あらゆるper-pixelなフィルタがない)ので、PILと併用するといい。