-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathtestRefactor_RF.py
84 lines (70 loc) · 3.2 KB
/
testRefactor_RF.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
84
from random import randint
import ufoProcessor
import ufoProcessor.ufoOperator
import importlib
importlib.reload(ufoProcessor.ufoOperator)
#print(ufoProcessor.__file__)
ds5Path = "/Users/erik/code/type2/Principia/sources/Principia_wdth.designspace"
ds5Path = "/Users/erik/code/type2/Principia/sources/Principia_wght_wght.designspace"
#ds5Path = "/Users/erik/code/ufoProcessor/Tests/ds5/ds5.designspace"
doc = ufoProcessor.ufoOperator.UFOOperator(ds5Path, useVarlib=False, debug=False)
doc.loadFonts()
#doc.generateUFOs()
def ip(a, b, f):
return a+f*(b-a)
font = CurrentFont()
loc = doc.newDefaultLocation()
loc['width'] = randint(50, 100)
#print(loc)
# make some tests at different layers
randomloc = doc.randomLocation(0.03, anisotropic=True)
#print(randomloc)
test = [
("foreground", doc.randomLocation(0.03, anisotropic=True), False),
("background", doc.randomLocation(0.03, anisotropic=True), False),
# ("random_width_inter_MM", dict(width=randint(50,100), italic=1), False),
# ("random_width_xtr_MM", dict(width=randint(10,150), italic=1), False),
# ("random_width_xtr_narrow_VL", dict(width=randint(10,50), italic=1), True),
# ("random_width_xtr_wide_VL", dict(width=randint(100,500), italic=1), True),
# ("10_width_xtr_VL", dict(width=10, italic=1), True),
# ("10_width_xtr_MM", dict(width=10, italic=1), False),
# ("200_width_xtr_wide_VL", dict(width=200, italic=1), True),
# ("200_width_xtr_wide_MM", dict(width=200, italic=1), False),
# ("aniso_width_inter_MM", dict(width=(50,100), italic=0), False),
# ("aniso_width_inter_VL", dict(width=(50,100), italic=0), True),
# ("aniso_width_xtra_MM", dict(width=(-50,200), italic=0), False),
# ("aniso_width_xtra_VL", dict(width=(-50,200), italic=0), True),
]
g = CurrentGlyph()
dstName = g.name
useVarlib = False
for layerName, loc, _ in test:
res = doc.makeOneGlyph(dstName, location=loc, bend=True, decomposeComponents=False, useVarlib=useVarlib, roundGeometry=True)
dst = font[dstName].getLayer(layerName)
dst.clear()
if res is not None:
res.guidelines = [] # delete guidelines in mathglyph until fontparts issue is solved
dst.fromMathGlyph(res)
dst.width = max(0, res.width)
#print(len(dst.components))
for comp in dst.components:
#print("-- processing baseglyph", comp.baseGlyph)
res2 = doc.makeOneGlyph(comp.baseGlyph, location=loc, bend=True, decomposeComponents=False, useVarlib=useVarlib, roundGeometry=True)
# let's make sure the glyph exists in the layer
#print('layerName:', layerName)
dstLayer = font.getLayer(layerName)
if not comp.baseGlyph in dstLayer:
dstLayer.newGlyph(comp.baseGlyph)
dst2 = dstLayer[comp.baseGlyph]
dst2.clear()
#print('dst.anchors:', dst.anchors)
#print('dst.guidelines:', dst.guidelines)
for item in res2.guidelines:
print(item)
res2.guidelines = [] # delete guidelines in mathglyph until fontparts issue is solved
#print('dst.guidelines:', res2.guidelines)
dst2.fromMathGlyph(res2)
dst2.width = max(0, res2.width)
dst2.update()
dst.update()
ufoProcessor.ufoOperator.inspectMemoizeCache()