# coding=gb2312 import Image, ImageDraw,ImageFont,sys, string,codecs def getbmp(c,txtsize): im = Image.new("1", (txtsize,txtsize)) draw = ImageDraw.Draw(im) font = ImageFont.FreeTypeFont('Zfull-GB.ttf', txtsize) #font = ImageFont.load('wenquanyi_9pt.pil') #D:/project/jj draw.text((0,0),c, 1, font) output=[0] pos=0 bit=0 im.save("%c_%d.bmp"%(c,txtsize)) for scanline in xrange(0,txtsize,8): for i in xrange(0,txtsize): output.append(0) bit=0 pos+=1 for j in xrange(scanline,scanline+8): if j>=im.size[1]:break if im.getpixel((i,j))!=0: output[pos]|= 1<<(bit); bit+=1 return output chars={} hzbmp=[] for line0 in file('showsentence.txt'): ln = line0.strip().split(',') size = 12 if len(ln)>1: size = string.atoi(ln[1]) line=unicode(ln[0], "gb2312") for c in line.strip(): if (c,size) not in chars: chars[(c,size)] = [len(chars), len(hzbmp)] hzbmp.extend(getbmp(c, size)[:]) #add postfix postfix="" if len(sys.argv)>1: postfix=sys.argv[1] #output index i = 0 print "static uint16_t hzIndex%s[]={"%postfix for line0 in file('showsentence.txt'): ln = line0.strip().split(',') line=unicode(ln[0], "gb2312") print " %d,"%i, i+=len(line.strip())+1 print "%d "%i print "};" print #output sentence i = 0 print "static uint16_t hzSentences%s[]={"%postfix for line0 in file('showsentence.txt'): ln = line0.strip().split(',') size = 12 if len(ln)>1: size = string.atoi(ln[1]) line=unicode(ln[0], "gb2312") print (" //%d:%s"%(i,line)).encode('gb2312') i+=1 print " %d,"%size, for c in line.strip(): print "%d,"%chars[(c,size)][1], print print "};" print #output hzbmp print "static const unsigned char hzPixels%s[] PROGMEM = {"%postfix i=0 for v in hzbmp: print "%3d,"%v, i+=1 if(i>=16): i=0 print print "};" print print "static void showSentence%s(int ind)"%postfix print "{" print " char size = hzSentences%s[hzIndex%s[ind]];"%(postfix,postfix) print " uint16_t i = 1;" print " for(; i<hzIndex%s[ind+1]-hzIndex%s[ind]; i++)"%(postfix,postfix) print " {" print " ks0108ShowHZ(hzSentences%s[hzIndex%s[ind]+i],hzPixels%s,size,size);"%(postfix,postfix,postfix) print " }" print "}" """ /* showsentence(1); //xxxxxxx showsentence(2); //xxxxxxx */ sentence[]= { "size|pos0|pos1...", } hzBits[]= { } static void showSentence(int ind) { char size = hzSentences[hzIndex[ind]]; int i = 1; for(; i<hzIndex[ind+1]-hzIndex[ind]; i++) { ks0108ShowHZ(hzSentences[hzIndex[ind]+i],hzPixels,size,size); } } """