2014/12/10(水) [n年前の日記]
#1 [python][dxruby] make_sfont.pyを修正してみたり
_simple-renpy-tools - A collection of tools written in Python for the Ren'Py Visual Novel Engine - Google Project Hosting
で、SFont画像を生成する
_make_sfont.py
が入手できるけど。文字と文字の隙間が大きくてもそのまま保持してるあたりがなんだか気になったので、隙間をギッチリ詰めて出力する版に改造してみたり。ついでに、文字数を数えて、本来なるべき個数 = 94個になってなければエラーを出して止まるようにもしてみたり。
_make_sfont_wt.py
使い方は、
ただ、この改造版でギッチリ詰めてしまうと、後からその画像を修正することは難しくなる。オリジナルの make_sfont.py で作った SFont画像は、一番上の1ラインだけ削除すれば、ほぼ元の画像に戻るので、後から修正する可能性が高いなら、この改造版を使わないほうがヨサゲ。
_make_sfont_wt.py
from PIL import Image
import sys
import os
SEPARATOR_COLOR = (255,0,255, 255)
NO_COL = (0, 0, 0, 0)
def chk_vline_empty(img, x):
for y in range(img.size[1]):
_, _, _, a = img.getpixel((x, y))
if a != 0:
return False
else:
return True
def make_sfont(img_filename, output_name = None):
img = Image.open(img_filename)
ow, oh = img.size
xlist = []
cx = -1
for x in range(ow):
if chk_vline_empty(img, x):
if cx >= 0:
xlist.append([cx, x - cx])
cx = -1
else:
if cx < 0:
cx = x
if cx >= 0:
xlist.append([cx, ow - cx])
if len(xlist) != 94:
print "Error: character length %d != 94" % len(xlist)
return
nw = 1
for _, w in xlist:
nw += (w + 1)
nimg = Image.new("RGBA", (nw, oh), NO_COL)
nimg.putpixel((0, 0), SEPARATOR_COLOR)
cx = 1
for x, w in xlist:
box = (x, 0, x + w, oh)
nbox = (cx, 0, cx + w, oh)
nimg.paste(img.crop(box), nbox)
nimg.putpixel((cx + w, 0), SEPARATOR_COLOR)
cx += (w + 1)
if output_name is None:
base, name = os.path.split(img_filename)
name, ext = os.path.splitext(name)
name = name + '_sfont' + ext
name = os.path.join(base, name)
else:
name = output_name
nimg.save(name)
print 'SFont written to %s' % name
if __name__ == '__main__':
args = len(sys.argv)
if args == 1 or args > 3 :
print 'Usage: make_sfont_wt.py IN.png OUT.png'
elif args == 3:
make_sfont(sys.argv[1], sys.argv[2])
else:
make_sfont(sys.argv[1])
使い方は、
python make_sfott_wt.py IN.png OUT.pngまたは
python make_sfott_wt.py IN.png出力ファイル名を省略すると、入力ファイル名_sfont.png で保存される。
ただ、この改造版でギッチリ詰めてしまうと、後からその画像を修正することは難しくなる。オリジナルの make_sfont.py で作った SFont画像は、一番上の1ラインだけ削除すれば、ほぼ元の画像に戻るので、後から修正する可能性が高いなら、この改造版を使わないほうがヨサゲ。
[ ツッコむ ]
以上です。