[varLib] Make designspace.load() return a dictionary instead of a tuple
This commit is contained in:
parent
43efa63732
commit
f061231049
@ -265,7 +265,11 @@ def build(designspace_filename, master_finder=lambda s:s, axisMap=None):
|
|||||||
(axis-tag, axis-name).
|
(axis-tag, axis-name).
|
||||||
"""
|
"""
|
||||||
|
|
||||||
axes, masters, instances = designspace.load(designspace_filename)
|
ds = designspace.load(designspace_filename)
|
||||||
|
axes = ds['axes']
|
||||||
|
masters = ds['masters']
|
||||||
|
instances = ds['instances']
|
||||||
|
|
||||||
base_idx = None
|
base_idx = None
|
||||||
for i,m in enumerate(masters):
|
for i,m in enumerate(masters):
|
||||||
if 'info' in m and m['info']['copy']:
|
if 'info' in m and m['info']['copy']:
|
||||||
|
@ -61,6 +61,7 @@ def _loadAxis(et):
|
|||||||
return item
|
return item
|
||||||
|
|
||||||
def _load(et):
|
def _load(et):
|
||||||
|
designspace = {}
|
||||||
ds = et.getroot()
|
ds = et.getroot()
|
||||||
|
|
||||||
axes = []
|
axes = []
|
||||||
@ -68,20 +69,23 @@ def _load(et):
|
|||||||
if ds_axes:
|
if ds_axes:
|
||||||
for et in ds_axes:
|
for et in ds_axes:
|
||||||
axes.append(_loadAxis(et))
|
axes.append(_loadAxis(et))
|
||||||
|
designspace['axes'] = axes
|
||||||
|
|
||||||
masters = []
|
masters = []
|
||||||
for et in ds.find('sources'):
|
for et in ds.find('sources'):
|
||||||
masters.append(_loadItem(et))
|
masters.append(_loadItem(et))
|
||||||
|
designspace['masters'] = masters
|
||||||
|
|
||||||
instances = []
|
instances = []
|
||||||
for et in ds.find('instances'):
|
for et in ds.find('instances'):
|
||||||
instances.append(_loadItem(et))
|
instances.append(_loadItem(et))
|
||||||
|
designspace['instances'] = instances
|
||||||
|
|
||||||
return axes, masters, instances
|
return designspace
|
||||||
|
|
||||||
def load(filename):
|
def load(filename):
|
||||||
"""Load designspace from a file name or object.
|
"""Load designspace from a file name or object.
|
||||||
Returns three items:
|
Returns a dictionary containing three items:
|
||||||
- list of axes
|
- list of axes
|
||||||
- list of masters (aka sources)
|
- list of masters (aka sources)
|
||||||
- list of instances"""
|
- list of instances"""
|
||||||
|
@ -12,7 +12,11 @@ import os.path
|
|||||||
|
|
||||||
def interpolate_layout(designspace_filename, loc, finder):
|
def interpolate_layout(designspace_filename, loc, finder):
|
||||||
|
|
||||||
axes, masters, instances = designspace.load(designspace_filename)
|
ds = designspace.load(designspace_filename)
|
||||||
|
axes = ds['axes']
|
||||||
|
masters = ds['masters']
|
||||||
|
instances = ds['instances']
|
||||||
|
|
||||||
base_idx = None
|
base_idx = None
|
||||||
for i,m in enumerate(masters):
|
for i,m in enumerate(masters):
|
||||||
if 'info' in m and m['info']['copy']:
|
if 'info' in m and m['info']['copy']:
|
||||||
|
3
NEWS.rst
3
NEWS.rst
@ -1,3 +1,6 @@
|
|||||||
|
- [varLib] designspace.load() now returns a dictionary, instead of a tuple,
|
||||||
|
and supports <axes> element (#864)
|
||||||
|
|
||||||
3.7.2 (released 2017-02-17)
|
3.7.2 (released 2017-02-17)
|
||||||
---------------------------
|
---------------------------
|
||||||
|
|
||||||
|
@ -10,45 +10,46 @@ class DesignspaceTest(unittest.TestCase):
|
|||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
designspace.load(_getpath("VarLibTest.designspace")),
|
designspace.load(_getpath("VarLibTest.designspace")),
|
||||||
|
|
||||||
# axes
|
{'instances':
|
||||||
([{'map': [{'input': 0.0, 'output': 10.0},
|
[{'info': {},
|
||||||
{'input': 401.0, 'output': 66.0},
|
'familyname': 'VarLibTest',
|
||||||
{'input': 1000.0, 'output': 990.0}],
|
'filename': 'instance/VarLibTest-Medium.ufo',
|
||||||
'name': 'weight',
|
'kerning': {},
|
||||||
'default': 0.0,
|
'location': {'weight': 0.5},
|
||||||
'tag': 'wght',
|
'stylename': 'Medium'}],
|
||||||
'maximum': 1000.0,
|
|
||||||
'minimum': 0.0},
|
|
||||||
{'default': 250.0,
|
|
||||||
'minimum': 0.0,
|
|
||||||
'tag': 'wdth',
|
|
||||||
'maximum': 1000.0,
|
|
||||||
'name': 'width'},
|
|
||||||
{'name': 'contrast',
|
|
||||||
'default': 0.0,
|
|
||||||
'tag': 'cntr',
|
|
||||||
'maximum': 100.0,
|
|
||||||
'minimum': 0.0,
|
|
||||||
'labelname': {'de': 'Kontrast', 'en': 'Contrast'}}],
|
|
||||||
|
|
||||||
# masters (aka sources)
|
'masters':
|
||||||
[{'info': {'copy': True},
|
[{'info': {'copy': True},
|
||||||
'name': 'master_1',
|
'name': 'master_1',
|
||||||
'lib': {'copy': True},
|
'lib': {'copy': True},
|
||||||
'filename': 'VarLibTest-Light.ufo',
|
'filename': 'VarLibTest-Light.ufo',
|
||||||
'location': {'weight': 0.0},
|
'location': {'weight': 0.0},
|
||||||
'groups': {'copy': True}},
|
'groups': {'copy': True}},
|
||||||
{'location': {'weight': 1.0},
|
{'location': {'weight': 1.0},
|
||||||
'name': 'master_2',
|
'name': 'master_2',
|
||||||
'filename': 'VarLibTest-Bold.ufo'}],
|
'filename': 'VarLibTest-Bold.ufo'}],
|
||||||
|
|
||||||
# instances
|
'axes':
|
||||||
[{'info': {},
|
[{'map': [{'input': 0.0, 'output': 10.0},
|
||||||
'familyname': 'VarLibTest',
|
{'input': 401.0, 'output': 66.0},
|
||||||
'filename': 'instance/VarLibTest-Medium.ufo',
|
{'input': 1000.0, 'output': 990.0}],
|
||||||
'kerning': {},
|
'name': 'weight',
|
||||||
'location': {'weight': 0.5},
|
'default': 0.0,
|
||||||
'stylename': 'Medium'}])
|
'tag': 'wght',
|
||||||
|
'maximum': 1000.0,
|
||||||
|
'minimum': 0.0},
|
||||||
|
{'default': 250.0,
|
||||||
|
'minimum': 0.0,
|
||||||
|
'tag': 'wdth',
|
||||||
|
'maximum': 1000.0,
|
||||||
|
'name': 'width'},
|
||||||
|
{'name': 'contrast',
|
||||||
|
'default': 0.0,
|
||||||
|
'tag': 'cntr',
|
||||||
|
'maximum': 100.0,
|
||||||
|
'minimum': 0.0,
|
||||||
|
'labelname': {'de': 'Kontrast', 'en': 'Contrast'}}]
|
||||||
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user