強火で進め

このブログではプログラム関連の記事を中心に書いてます。

フォントファイルからビットマップフォントの画像ファイルを作成


※このプログラムはPILを事前にインストールしておく必要が有ります。

#! /usr/bin/env python
# coding: utf-8
# coding=utf-8
# -*- coding: utf-8 -*-
# vim: fileencoding=utf-8

import sys
from PIL import ImageFont
from PIL import Image
from PIL import ImageDraw

fontSize = 25
outW = 256
outH = 256

if (len(sys.argv) == 1):
    print 'Usage: python %s fontfile' % sys.argv[0]
    quit()
fontFile = sys.argv[1]

font = ImageFont.truetype(fontFile, fontSize, encoding='utf-8')

asciiList = range(0x20, 0x7e)
maxW = -1
maxH = -1
transFlag = 0
for ascii in asciiList:
    w, h = font.getsize(chr(ascii))
    if (maxW < w): maxW = w
    if (maxH < h): maxH = h
print 'out:%dx%d maxW:%d maxH:%d' % (outW, outH, maxW, maxH)

if (transFlag):
    im = Image.new('RGBA', (outW, outH), (255,255,255,0))
else:
    im = Image.new('RGB', (outW, outH), (255,255,255))
draw = ImageDraw.Draw(im)
x = 0
y = 0
for ascii in asciiList:
    draw.text((x+(maxW-w)/2, y), chr(ascii), fill=(0,0,0), font=font)
    x = x + maxW
    if (x + maxW > outW):
        x = 0
        y = y + maxH
    if (y + maxH > outH): break
#im.show() # 即、プレビューする時はここのコメントアウトを外す
im.save('ascii.png')