summaryrefslogtreecommitdiff
path: root/misc/tools/subset-designspace.py
blob: 2b7c6b566bd58c740677c47434e3d7a0e7b7d711 (plain)
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
#!/usr/bin/env python
import sys, os
from os.path import dirname, basename, abspath, relpath, join as pjoin
from fontTools.designspaceLib import DesignSpaceDocument


def subset_designspace(designspace, filename):
  italic = filename.find('italic') != -1

  rmlist = []
  for a in designspace.axes:
    if a.tag == "slnt" or a.tag == "ital" or a.tag == "opsz":
      rmlist.append(a)
  for a in rmlist:
    designspace.axes.remove(a)

  rmlist = []
  hasDefault = not italic
  for source in designspace.sources:
    isitalic = source.name.find('Italic') != -1
    if italic != isitalic or source.name.endswith('Display') or source.name.endswith('opsz'):
      rmlist.append(source)
    elif italic and not hasDefault:
      source.copyLib = True
      source.copyInfo = True
      source.copyGroups = True
      source.copyFeatures = True
      hasDefault = True
  for source in rmlist:
    designspace.sources.remove(source)

  rmlist = []
  for instance in designspace.instances:
    isitalic = instance.name.find('Italic') != -1
    if italic != isitalic:
      rmlist.append(instance)
  for instance in rmlist:
    designspace.instances.remove(instance)

  print("write %s" % relpath(filename, os.getcwd()))
  designspace.write(filename)


def main(argv):
  src_designspace_file = argv[1]
  dst_designspace_file = argv[2]
  designspace = DesignSpaceDocument.fromfile(src_designspace_file)
  designspace.lib.clear()
  subset_designspace(designspace, dst_designspace_file)


if __name__ == '__main__':
  main(sys.argv)