File: testRefactor_RF.py

package info (click to toggle)
ufoprocessor 1.13.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,460 kB
  • sloc: python: 3,126; makefile: 5
file content (84 lines) | stat: -rw-r--r-- 3,279 bytes parent folder | download
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()