remove deprecated fontTools.varLib.designspace

This commit is contained in:
Cosimo Lupo 2018-10-18 18:40:54 +01:00
parent 9557c6a229
commit 6db88d7cb7
No known key found for this signature in database
GPG Key ID: 59D54DB0C9976482
4 changed files with 0 additions and 239 deletions

View File

@ -1,123 +0,0 @@
"""Rudimentary support for loading MutatorMath .designspace files.
DEPRECATED. Use ``fonttools.designspaceLib`` instead.
"""
from __future__ import print_function, division, absolute_import
from fontTools.misc.py23 import *
try:
import xml.etree.cElementTree as ET
except ImportError:
import xml.etree.ElementTree as ET
import warnings
warnings.warn(
"fontTools.varLib.designspace is deprecated. "
"Use fontTools.designspaceLib instead.",
DeprecationWarning,
)
__all__ = ['load', 'loads']
namespaces = {'xml': '{http://www.w3.org/XML/1998/namespace}'}
def _xml_parse_location(et):
loc = {}
for dim in et.find('location'):
assert dim.tag == 'dimension'
name = dim.attrib['name']
value = float(dim.attrib['xvalue'])
assert name not in loc
loc[name] = value
return loc
def _load_item(et):
item = dict(et.attrib)
for element in et:
if element.tag == 'location':
value = _xml_parse_location(et)
else:
value = {}
if 'copy' in element.attrib:
value['copy'] = bool(int(element.attrib['copy']))
# TODO load more?!
item[element.tag] = value
return item
def _xml_parse_axis_or_map(element):
dic = {}
for name in element.attrib:
if name in ['name', 'tag']:
dic[name] = element.attrib[name]
else:
dic[name] = float(element.attrib[name])
return dic
def _load_axis(et):
item = _xml_parse_axis_or_map(et)
maps = []
labelnames = {}
for element in et:
assert element.tag in ['labelname', 'map']
if element.tag == 'labelname':
lang = element.attrib["{0}lang".format(namespaces['xml'])]
labelnames[lang] = element.text
elif element.tag == 'map':
maps.append(_xml_parse_axis_or_map(element))
if labelnames:
item['labelname'] = labelnames
if maps:
item['map'] = maps
return item
def _load(et):
designspace = {}
ds = et.getroot()
axes_element = ds.find('axes')
if axes_element is not None:
axes = []
for et in axes_element:
axes.append(_load_axis(et))
designspace['axes'] = axes
sources_element = ds.find('sources')
if sources_element is not None:
sources = []
for et in sources_element:
sources.append(_load_item(et))
designspace['sources'] = sources
instances_element = ds.find('instances')
if instances_element is not None:
instances = []
for et in instances_element:
instances.append(_load_item(et))
designspace['instances'] = instances
return designspace
def load(filename):
"""Load designspace from a file name or object.
Returns a dictionary containing three (optional) items:
- list of "axes"
- list of "sources" (aka masters)
- list of "instances"
"""
return _load(ET.parse(filename))
def loads(string):
"""Load designspace from a string."""
return _load(ET.fromstring(string))
if __name__ == '__main__':
import sys
from pprint import pprint
for f in sys.argv[1:]:
pprint(load(f))

View File

@ -1,39 +0,0 @@
<?xml version="1.0"?>
<designspace format="3">
<axes>
<axis default="0.0" maximum="1000.0" minimum="0.0" name="weight" tag="wght">
<map input="0.0" output="10.0" />
<map input="401.0" output="66.0" />
<map input="1000.0" output="990.0" />
</axis>
<axis default="250.0" maximum="1000.0" minimum="0.0" name="width" tag="wdth" />
<axis default="0.0" maximum="100.0" minimum="0.0" name="contrast" tag="cntr">
<labelname xml:lang="en">Contrast</labelname>
<labelname xml:lang="de">Kontrast</labelname>
</axis>
</axes>
<sources>
<source filename="DesignspaceTest-Light.ufo" name="master_1">
<lib copy="1"/>
<groups copy="1"/>
<info copy="1"/>
<location>
<dimension name="weight" xvalue="0.0"/>
</location>
</source>
<source filename="DesignspaceTest-Bold.ufo" name="master_2">
<location>
<dimension name="weight" xvalue="1.0"/>
</location>
</source>
</sources>
<instances>
<instance familyname="DesignspaceTest" filename="instance/DesignspaceTest-Medium.ufo" stylename="Medium">
<location>
<dimension name="weight" xvalue="0.5"/>
</location>
<info/>
<kerning/>
</instance>
</instances>
</designspace>

View File

@ -1,8 +0,0 @@
<?xml version="1.0"?>
<designspace format="3">
<!-- no <axes> element -->
<sources/><!-- empty <sources> element -->
<instances>
<instance/><!-- bare-bones <instance> element -->
</instances>
</designspace>

View File

@ -1,69 +0,0 @@
from __future__ import print_function, division, absolute_import
from __future__ import unicode_literals
from fontTools.varLib import designspace
import os
import unittest
class DesignspaceTest(unittest.TestCase):
def test_load(self):
self.maxDiff = None
self.assertEqual(
designspace.load(_getpath("Designspace.designspace")),
{'sources':
[{'location': {'weight': 0.0},
'groups': {'copy': True},
'filename': 'DesignspaceTest-Light.ufo',
'info': {'copy': True},
'name': 'master_1',
'lib': {'copy': True}},
{'location': {'weight': 1.0},
'name': 'master_2',
'filename': 'DesignspaceTest-Bold.ufo'}],
'instances':
[{'location': {'weight': 0.5},
'familyname': 'DesignspaceTest',
'filename': 'instance/DesignspaceTest-Medium.ufo',
'kerning': {},
'info': {},
'stylename': 'Medium'}],
'axes':
[{'name': 'weight',
'map': [{'input': 0.0, 'output': 10.0},
{'input': 401.0, 'output': 66.0},
{'input': 1000.0, 'output': 990.0}],
'tag': 'wght',
'maximum': 1000.0,
'minimum': 0.0,
'default': 0.0},
{'maximum': 1000.0,
'default': 250.0,
'minimum': 0.0,
'name': 'width',
'tag': 'wdth'},
{'name': 'contrast',
'tag': 'cntr',
'maximum': 100.0,
'minimum': 0.0,
'default': 0.0,
'labelname': {'de': 'Kontrast', 'en': 'Contrast'}}]
}
)
def test_load2(self):
self.assertEqual(
designspace.load(_getpath("Designspace2.designspace")),
{'sources': [], 'instances': [{}]})
def _getpath(testfile):
path, _ = os.path.split(__file__)
return os.path.join(path, "data", testfile)
if __name__ == "__main__":
import sys
sys.exit(unittest.main())