def build_designspace(masters, master_dir, out_dir, instance_data): """Just create MutatorMath designspace without generating instances. Returns the path of the resulting designspace document and a list of (instance_path, instance_data) tuples which map instance UFO filenames to Glyphs data for that instance. """ from mutatorMath.ufo.document import DesignSpaceDocumentWriter for font in masters: write_ufo(font, master_dir) # needed so that added masters and instances have correct relative paths tmp_path = os.path.join(master_dir, 'tmp.designspace') writer = DesignSpaceDocumentWriter(tmp_path) base_family, base_style = add_masters_to_writer(writer, masters) instance_files = add_instances_to_writer(writer, base_family, instance_data, out_dir) basename = '%s%s.designspace' % (base_family, ('-' + base_style) if base_style else '') writer.path = os.path.join(master_dir, basename.replace(' ', '')) writer.save() return writer.path, instance_files
def build_designspace(masters, master_dir, out_dir, instance_data): """Just create MutatorMath designspace without generating instances. Returns the path of the resulting designspace document and a list of (instance_path, instance_data) tuples which map instance UFO filenames to Glyphs data for that instance. """ from mutatorMath.ufo.document import DesignSpaceDocumentWriter for font in masters: write_ufo(font, master_dir) # needed so that added masters and instances have correct relative paths tmp_path = os.path.join(master_dir, 'tmp.designspace') writer = DesignSpaceDocumentWriter(tmp_path) base_family, base_style = add_masters_to_writer(writer, masters) instance_files = add_instances_to_writer( writer, base_family, instance_data, out_dir) basename = '%s%s.designspace' % ( base_family, ('-' + base_style) if base_style else '') writer.path = os.path.join(master_dir, basename.replace(' ', '')) writer.save() return writer.path, instance_files
def build_designspace(masters, master_dir, out_dir, instance_data): """Just create MutatorMath designspace without generating instances. Returns the path of the resulting designspace document and a list of (instance_path, instance_data) tuples which map instance UFO filenames to Glyphs data for that instance. """ from mutatorMath.ufo.document import DesignSpaceDocumentWriter for font in masters: write_ufo(font, master_dir) # needed so that added masters and instances have correct relative paths tmp_path = os.path.join(master_dir, 'tmp.designspace') writer = DesignSpaceDocumentWriter(tmp_path) instances = list(filter(is_instance_active, instance_data.get('data', []))) regular = find_regular_master( masters=masters, regularName=instance_data.get('Variation Font Origin')) axes = get_axes(masters, regular, instances) write_axes(axes, writer) add_masters_to_writer(masters, regular, axes, writer) base_family = instance_data.get('defaultFamilyName', regular.info.familyName) instance_files = add_instances_to_writer(writer, base_family, axes, instances, out_dir) basename = '%s.designspace' % base_family writer.path = os.path.join(master_dir, basename.replace(' ', '')) writer.save() return writer.path, instance_files
def build_designspace(masters, master_dir, out_dir, instance_data): """Just create MutatorMath designspace without generating instances. Returns the path of the resulting designspace document and a list of (instance_path, instance_data) tuples which map instance UFO filenames to Glyphs data for that instance. """ from mutatorMath.ufo.document import DesignSpaceDocumentWriter base_family = masters[0].info.familyName assert all(m.info.familyName == base_family for m in masters), \ 'Masters must all have same family' for font in masters: write_ufo(font, master_dir) # needed so that added masters and instances have correct relative paths tmp_path = os.path.join(master_dir, 'tmp.designspace') writer = DesignSpaceDocumentWriter(tmp_path) instances = list(filter(is_instance_active, instance_data.get('data', []))) regular = find_regular_master( masters=masters, regularName=instance_data.get('Variation Font Origin')) axes = get_axes(masters, regular, instances) write_axes(axes, writer) add_masters_to_writer(masters, regular, axes, writer) instance_files = add_instances_to_writer(writer, base_family, axes, instances, out_dir) # append base style shared by all masters to designspace file name base_style = find_base_style(masters) if base_style: base_style = "-" + base_style ds_name = (base_family + base_style).replace(' ', '') + '.designspace' writer.path = os.path.join(master_dir, ds_name) writer.save() return writer.path, instance_files