Skip to content

Commit 2e6b3fa

Browse files
committed
improve building stat table
1 parent fbff7c2 commit 2e6b3fa

File tree

1 file changed

+10
-2
lines changed
  • source/lib/batchGenerators/variableFontsGenerator

1 file changed

+10
-2
lines changed

source/lib/batchGenerators/variableFontsGenerator/__init__.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
from fontTools.cu2qu.ufo import fonts_to_quadratic
77
from fontTools import varLib
8+
from fontTools.varLib.stat import buildVFStatTable
89
from fontTools.ttLib import TTFont
910

1011
from fontPens.transformPointPen import TransformPointPen
@@ -20,13 +21,15 @@
2021

2122
class GenerateVariableFont:
2223

23-
def __init__(self, operator, destinationPath, autohint=False, fitToExtremes=False, releaseMode=True, glyphOrder=None, report=None, debug=False):
24+
def __init__(self, operator, destinationPath, designspace=None, discreteAxisName=None, autohint=False, fitToExtremes=False, releaseMode=True, glyphOrder=None, report=None, debug=False):
2425
# this must be an operator with no discrete axes.
2526
# split the designspace first first
2627
if report is None:
2728
report = Report()
2829
self.operator = operator
2930
self.destinationPath = destinationPath
31+
self.designspace = designspace
32+
self.discreteAxisName = discreteAxisName
3033
self.binaryFormat = os.path.splitext(self.destinationPath)[-1][1:].lower()
3134
self.autohint = autohint
3235
self.fitToExtremes = fitToExtremes
@@ -369,7 +372,7 @@ def makeLayerSource(self):
369372
self.operator.fonts[sourceDescriptor.name] = layeredSource
370373
self.generatedFiles.add(sourceDescriptor.path)
371374

372-
def generate(self):
375+
def generate(self, ):
373376
dirname = os.path.dirname(self.destinationPath)
374377

375378
# fontCompiler settings
@@ -451,6 +454,9 @@ def generate(self):
451454
try:
452455
# let varLib build the variation font
453456
varFont, _, _ = varLib.build(self.operator.doc)
457+
if self.designspace and self.discreteAxisName:
458+
# build the stat table from the full designspace and according discrete axis
459+
buildVFStatTable(varFont, self.designspace, self.discreteAxisName)
454460
# save the variation font
455461
varFont.save(self.destinationPath)
456462
except Exception:
@@ -506,6 +512,8 @@ def build(root, generateOptions, settings, progress, report):
506512
GenerateVariableFont(
507513
operator=interpolableOperator,
508514
destinationPath=os.path.join(fontDir, tempFileName),
515+
designspace=operator.doc,
516+
discreteAxisName=name,
509517
autohint=settings["variableFontsAutohint"],
510518
fitToExtremes=settings["variableFontsInterpolateToFitAxesExtremes"],
511519
releaseMode=False,

0 commit comments

Comments
 (0)