Root/userspace/data/makefont

1#!/usr/bin/env python
2import sys
3import os
4from PIL import Image
5
6def mknum (num):
7    return ''.join ([chr ((num >> (8 * i)) & 0xff) for i in range (4)])
8
9im = Image.open (sys.argv[1])
10height = im.size[1]
11width, baseline, skip = [int (x) for x in os.path.splitext (sys.argv[1])[0].split ('-')[-1].split ('+')]
12num_glyphs = im.size[0] / width
13sys.stdout.write (mknum (skip + num_glyphs))
14size1 = (3 + width * height) * 4
15base = (num_glyphs + skip) * 4
16for i in range (skip):
17    sys.stdout.write (mknum (base + (num_glyphs - 1) * size1))
18for i in range (skip, skip + num_glyphs):
19    sys.stdout.write (mknum (base + (i - skip) * size1))
20
21im = im.convert ('RGBA')
22pix = im.load ()
23#sys.stderr.write ('%d\n' % len (pix[0,0]))
24for g in range (skip, skip + num_glyphs):
25    sys.stdout.write (mknum (width))
26    sys.stdout.write (mknum (height))
27    sys.stdout.write (mknum (baseline))
28    for y in range (height):
29        for x in range (width):
30            sys.stdout.write (''.join ([chr (x) for x in (pix[x + (g - skip) * width, y])]))
31

Archive Download this file

Branches:
master



interactive