@@ -311,15 +311,13 @@ def _add_gvar(font, masterModel, master_ttfs, tolerance=0.5, optimize=True):
311
311
312
312
log .info ("Generating gvar" )
313
313
assert "gvar" not in font
314
- gvar = font ["gvar" ] = newTable ('gvar' )
315
- gvar .version = 1
316
- gvar .reserved = 0
317
- gvar .variations = {}
318
314
319
315
glyf = font ['glyf' ]
320
316
321
317
# use hhea.ascent of base master as default vertical origin when vmtx is missing
322
318
defaultVerticalOrigin = font ['hhea' ].ascent
319
+
320
+ variations = {}
323
321
for glyph in font .getGlyphOrder ():
324
322
325
323
isComposite = glyf [glyph ].isComposite ()
@@ -339,7 +337,6 @@ def _add_gvar(font, masterModel, master_ttfs, tolerance=0.5, optimize=True):
339
337
del allControls
340
338
341
339
# Update gvar
342
- gvar .variations [glyph ] = []
343
340
deltas = model .getDeltas (allCoords )
344
341
supports = model .supports
345
342
assert len (deltas ) == len (supports )
@@ -378,7 +375,14 @@ def _add_gvar(font, masterModel, master_ttfs, tolerance=0.5, optimize=True):
378
375
if optimized_len < unoptimized_len :
379
376
var = var_opt
380
377
381
- gvar .variations [glyph ].append (var )
378
+ variations .setdefault (glyph , []).append (var )
379
+
380
+ if variations :
381
+ gvar = font ["gvar" ] = newTable ('gvar' )
382
+ gvar .version = 1
383
+ gvar .reserved = 0
384
+ gvar .variations = variations
385
+
382
386
383
387
def _remove_TTHinting (font ):
384
388
for tag in ("cvar" , "cvt " , "fpgm" , "prep" ):
@@ -482,10 +486,6 @@ def _add_VHVAR(font, masterModel, master_ttfs, axisTags, tableFields):
482
486
tableTag = tableFields .tableTag
483
487
assert tableTag not in font
484
488
log .info ("Generating " + tableTag )
485
- VHVAR = newTable (tableTag )
486
- tableClass = getattr (ot , tableTag )
487
- vhvar = VHVAR .table = tableClass ()
488
- vhvar .Version = 0x00010000
489
489
490
490
glyphOrder = font .getGlyphOrder ()
491
491
@@ -505,7 +505,15 @@ def _add_VHVAR(font, masterModel, master_ttfs, axisTags, tableFields):
505
505
masterModel , master_ttfs , axisTags , glyphOrder , advMetricses ,
506
506
vOrigMetricses )
507
507
508
+ if not metricsStore .VarRegionList .Region : # VarStore is empty
509
+ return
510
+
511
+ VHVAR = newTable (tableTag )
512
+ tableClass = getattr (ot , tableTag )
513
+ vhvar = VHVAR .table = tableClass ()
514
+ vhvar .Version = 0x00010000
508
515
vhvar .VarStore = metricsStore
516
+
509
517
if advanceMapping is None :
510
518
setattr (vhvar , tableFields .advMapping , None )
511
519
else :
@@ -516,7 +524,7 @@ def _add_VHVAR(font, masterModel, master_ttfs, axisTags, tableFields):
516
524
setattr (vhvar , tableFields .sb2 , None )
517
525
518
526
font [tableTag ] = VHVAR
519
- return
527
+
520
528
521
529
def _get_advance_metrics (font , masterModel , master_ttfs ,
522
530
axisTags , glyphOrder , advMetricses , vOrigMetricses = None ):
0 commit comments