-
Notifications
You must be signed in to change notification settings - Fork 3
/
update_font_model.py
83 lines (70 loc) · 2 KB
/
update_font_model.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# Author: Ankush Gupta
# Date: 2015
"Script to generate font-models."
import pygame
from pygame import freetype
from text_utils import FontState
import numpy as np
import matplotlib.pyplot as plt
import _pickle as cp
def start():
pygame.init()
ys = np.arange(8,200)
A = np.c_[ys,np.ones_like(ys)]
xs = []
models = {} #linear model
FS = FontState()
#plt.figure()
#plt.hold(True)
for i in range(len(FS.fonts)):
font = freetype.Font(FS.fonts[i],size=40)
print(font.size,font.get_sized_height)
h = []
for y in ys:
h.append(font.get_sized_glyph_height(float(y)))
h = np.array(h)
#print(h)
m,_,_,_ = np.linalg.lstsq(A,h)
models[font.name] = m
xs.append(h)
#print(font.name)
with open('data/models/font_px2pt.cp','wb') as f:
cp.dump(models,f)
#plt.plot(xs,ys[i])
#plt.show()
#general_text = u"大吉大利,今晚吃鸡"
general_text = "WINNER WINNER CHICKEN DINNER"
from pathlib import Path
from pygame.locals import *
import glob
def show_text():
SCREEN_WIDTH = 600
SCREEN_HEIGHT = 800
pygame.init()
screen = pygame.display.set_mode([SCREEN_WIDTH, SCREEN_HEIGHT])
text = ""
fonts = []
#text_surface = []
fontsize = 26
fontlist = glob.glob("C:\\Users\\yarudu\\Documents\\project\\synth_tool\\SynthText\\data\\fonts\\game_font\\*")
for i,fontfile in enumerate(fontlist):
#font = freetype.Font(FS.fonts[i], size=12)
font = pygame.font.Font(fontfile, fontsize)
fonts.append(font)
text = Path(fontfile).stem
text += " " + general_text
textimage = font.render(text, True, [0, 0, 0], [255, 255, 255])
#text_surface.append(textimage.subsurface(pygame.Rect(10, (i+1)*fontsize , len(text)*10, fontsize )))
#pygame.image.save(image,'temp.jpeg')
screen.blit(textimage,pygame.Rect(10, (i+1)*fontsize , len(text)*10, fontsize ))
#if i == 3:
# break
pygame.display.set_caption("Text Font")
pygame.display.update()
while True:
for event in pygame.event.get():
if event.type == QUIT:
return
if __name__ == '__main__':
#show_text()
start()