[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).
|
||||
"""
|
||||
|
||||
axes, masters, instances = designspace.load(designspace_filename)
|
||||
ds = designspace.load(designspace_filename)
|
||||
axes = ds['axes']
|
||||
masters = ds['masters']
|
||||
instances = ds['instances']
|
||||
|
||||
base_idx = None
|
||||
for i,m in enumerate(masters):
|
||||
if 'info' in m and m['info']['copy']:
|
||||
|
@ -61,6 +61,7 @@ def _loadAxis(et):
|
||||
return item
|
||||
|
||||
def _load(et):
|
||||
designspace = {}
|
||||
ds = et.getroot()
|
||||
|
||||
axes = []
|
||||
@ -68,20 +69,23 @@ def _load(et):
|
||||
if ds_axes:
|
||||
for et in ds_axes:
|
||||
axes.append(_loadAxis(et))
|
||||
designspace['axes'] = axes
|
||||
|
||||
masters = []
|
||||
for et in ds.find('sources'):
|
||||
masters.append(_loadItem(et))
|
||||
designspace['masters'] = masters
|
||||
|
||||
instances = []
|
||||
for et in ds.find('instances'):
|
||||
instances.append(_loadItem(et))
|
||||
designspace['instances'] = instances
|
||||
|
||||
return axes, masters, instances
|
||||
return designspace
|
||||
|
||||
def load(filename):
|
||||
"""Load designspace from a file name or object.
|
||||
Returns three items:
|
||||
Returns a dictionary containing three items:
|
||||
- list of axes
|
||||
- list of masters (aka sources)
|
||||
- list of instances"""
|
||||
|
@ -12,7 +12,11 @@ import os.path
|
||||
|
||||
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
|
||||
for i,m in enumerate(masters):
|
||||
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)
|
||||
---------------------------
|
||||
|
||||
|
@ -10,8 +10,27 @@ class DesignspaceTest(unittest.TestCase):
|
||||
self.assertEqual(
|
||||
designspace.load(_getpath("VarLibTest.designspace")),
|
||||
|
||||
# axes
|
||||
([{'map': [{'input': 0.0, 'output': 10.0},
|
||||
{'instances':
|
||||
[{'info': {},
|
||||
'familyname': 'VarLibTest',
|
||||
'filename': 'instance/VarLibTest-Medium.ufo',
|
||||
'kerning': {},
|
||||
'location': {'weight': 0.5},
|
||||
'stylename': 'Medium'}],
|
||||
|
||||
'masters':
|
||||
[{'info': {'copy': True},
|
||||
'name': 'master_1',
|
||||
'lib': {'copy': True},
|
||||
'filename': 'VarLibTest-Light.ufo',
|
||||
'location': {'weight': 0.0},
|
||||
'groups': {'copy': True}},
|
||||
{'location': {'weight': 1.0},
|
||||
'name': 'master_2',
|
||||
'filename': 'VarLibTest-Bold.ufo'}],
|
||||
|
||||
'axes':
|
||||
[{'map': [{'input': 0.0, 'output': 10.0},
|
||||
{'input': 401.0, 'output': 66.0},
|
||||
{'input': 1000.0, 'output': 990.0}],
|
||||
'name': 'weight',
|
||||
@ -29,26 +48,8 @@ class DesignspaceTest(unittest.TestCase):
|
||||
'tag': 'cntr',
|
||||
'maximum': 100.0,
|
||||
'minimum': 0.0,
|
||||
'labelname': {'de': 'Kontrast', 'en': 'Contrast'}}],
|
||||
|
||||
# masters (aka sources)
|
||||
[{'info': {'copy': True},
|
||||
'name': 'master_1',
|
||||
'lib': {'copy': True},
|
||||
'filename': 'VarLibTest-Light.ufo',
|
||||
'location': {'weight': 0.0},
|
||||
'groups': {'copy': True}},
|
||||
{'location': {'weight': 1.0},
|
||||
'name': 'master_2',
|
||||
'filename': 'VarLibTest-Bold.ufo'}],
|
||||
|
||||
# instances
|
||||
[{'info': {},
|
||||
'familyname': 'VarLibTest',
|
||||
'filename': 'instance/VarLibTest-Medium.ufo',
|
||||
'kerning': {},
|
||||
'location': {'weight': 0.5},
|
||||
'stylename': 'Medium'}])
|
||||
'labelname': {'de': 'Kontrast', 'en': 'Contrast'}}]
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user