tooling: fixes for variable font metadata
This commit is contained in:
parent
9ebede5a55
commit
dd2f374bfd
3 changed files with 85 additions and 31 deletions
|
|
@ -9,27 +9,43 @@ def remove_whitespace(s):
|
|||
return WHITESPACE_RE.sub("", s)
|
||||
|
||||
|
||||
def fixup_instances_text(designspace):
|
||||
# makes the "text" (non-display) instances the default ones
|
||||
def fixup_names(instance_or_source):
|
||||
instance_or_source.name = instance_or_source.name.replace(' Display', '')
|
||||
if instance_or_source.styleName == 'Display':
|
||||
instance_or_source.styleName = 'Regular'
|
||||
else:
|
||||
instance_or_source.styleName = instance_or_source.styleName.replace('Display ', '')
|
||||
|
||||
|
||||
def fixup_source(designspace, source):
|
||||
fixup_names(source)
|
||||
|
||||
|
||||
def fixup_instance(designspace, instance):
|
||||
fixup_names(instance)
|
||||
|
||||
psFamilyName = 'Inter'
|
||||
instance.postScriptFontName = psFamilyName + remove_whitespace(instance.styleName)
|
||||
instance.styleMapFamilyName = instance.styleMapFamilyName.replace(' Display', '')
|
||||
|
||||
# remove WWSFamilyName and WWSSubfamilyName properties
|
||||
del instance.lib['com.schriftgestaltung.properties']
|
||||
|
||||
customParameters = instance.lib['com.schriftgestaltung.customParameters']
|
||||
i = len(customParameters)
|
||||
while i > 0:
|
||||
i -= 1
|
||||
if customParameters[i][0] == 'Has WWS Names':
|
||||
del customParameters[i]
|
||||
|
||||
|
||||
def fixup_instances(designspace):
|
||||
i = len(designspace.instances)
|
||||
while i > 0:
|
||||
i -= 1
|
||||
instance = designspace.instances[i]
|
||||
if instance.name.find('Inter Display') != -1:
|
||||
del designspace.instances[i]
|
||||
|
||||
|
||||
def fixup_instances_display(designspace):
|
||||
# makes the display instances the default ones
|
||||
i = len(designspace.instances)
|
||||
while i > 0:
|
||||
i -= 1
|
||||
instance = designspace.instances[i]
|
||||
if instance.name.find('Inter Display') != -1:
|
||||
if instance.styleName == 'Display':
|
||||
instance.styleName = 'Regular'
|
||||
else:
|
||||
instance.styleName = instance.styleName.replace('Display ', '')
|
||||
fixup_instance(designspace, instance)
|
||||
else:
|
||||
del designspace.instances[i]
|
||||
# change default opsz value
|
||||
|
|
@ -39,11 +55,15 @@ def fixup_instances_display(designspace):
|
|||
break
|
||||
|
||||
|
||||
def fixup_postscript_instance_names(designspace):
|
||||
# make sure there are PostScript names assigned (fontmake does not create these)
|
||||
psFamilyName = remove_whitespace(designspace.instances[0].familyName)
|
||||
for instance in designspace.instances:
|
||||
instance.postScriptFontName = psFamilyName + remove_whitespace(instance.styleName)
|
||||
def fixup_sources(designspace):
|
||||
i = len(designspace.sources)
|
||||
while i > 0:
|
||||
i -= 1
|
||||
source = designspace.sources[i]
|
||||
if source.name.find('Inter Display') != -1:
|
||||
fixup_source(designspace, source)
|
||||
else:
|
||||
del designspace.sources[i]
|
||||
|
||||
|
||||
def main(argv):
|
||||
|
|
@ -56,10 +76,8 @@ def main(argv):
|
|||
|
||||
designspace = DesignSpaceDocument.fromfile(args.input_designspace)
|
||||
|
||||
# fixup_instances_text(designspace)
|
||||
fixup_instances_display(designspace)
|
||||
|
||||
fixup_postscript_instance_names(designspace)
|
||||
fixup_instances(designspace)
|
||||
fixup_sources(designspace)
|
||||
|
||||
designspace.write(args.output_designspace)
|
||||
|
||||
|
|
|
|||
Reference in a new issue