diff --git a/Lib/fontTools/varLib/designspace.py b/Lib/fontTools/varLib/designspace.py deleted file mode 100644 index 21de0270c..000000000 --- a/Lib/fontTools/varLib/designspace.py +++ /dev/null @@ -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)) diff --git a/Tests/varLib/data/Designspace.designspace b/Tests/varLib/data/Designspace.designspace deleted file mode 100644 index df1036eab..000000000 --- a/Tests/varLib/data/Designspace.designspace +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - Contrast - Kontrast - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Tests/varLib/data/Designspace2.designspace b/Tests/varLib/data/Designspace2.designspace deleted file mode 100644 index ac7d403f7..000000000 --- a/Tests/varLib/data/Designspace2.designspace +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/Tests/varLib/designspace_test.py b/Tests/varLib/designspace_test.py deleted file mode 100644 index fbdaab37a..000000000 --- a/Tests/varLib/designspace_test.py +++ /dev/null @@ -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())