Merge pull request #1671 from anthrotype/varlib-single-master-vf
varLib: don't build empty HVAR or gvar tables
This commit is contained in:
commit
f3c99cfef2
@ -311,15 +311,13 @@ def _add_gvar(font, masterModel, master_ttfs, tolerance=0.5, optimize=True):
|
|||||||
|
|
||||||
log.info("Generating gvar")
|
log.info("Generating gvar")
|
||||||
assert "gvar" not in font
|
assert "gvar" not in font
|
||||||
gvar = font["gvar"] = newTable('gvar')
|
|
||||||
gvar.version = 1
|
|
||||||
gvar.reserved = 0
|
|
||||||
gvar.variations = {}
|
|
||||||
|
|
||||||
glyf = font['glyf']
|
glyf = font['glyf']
|
||||||
|
|
||||||
# use hhea.ascent of base master as default vertical origin when vmtx is missing
|
# use hhea.ascent of base master as default vertical origin when vmtx is missing
|
||||||
defaultVerticalOrigin = font['hhea'].ascent
|
defaultVerticalOrigin = font['hhea'].ascent
|
||||||
|
|
||||||
|
variations = {}
|
||||||
for glyph in font.getGlyphOrder():
|
for glyph in font.getGlyphOrder():
|
||||||
|
|
||||||
isComposite = glyf[glyph].isComposite()
|
isComposite = glyf[glyph].isComposite()
|
||||||
@ -339,7 +337,6 @@ def _add_gvar(font, masterModel, master_ttfs, tolerance=0.5, optimize=True):
|
|||||||
del allControls
|
del allControls
|
||||||
|
|
||||||
# Update gvar
|
# Update gvar
|
||||||
gvar.variations[glyph] = []
|
|
||||||
deltas = model.getDeltas(allCoords)
|
deltas = model.getDeltas(allCoords)
|
||||||
supports = model.supports
|
supports = model.supports
|
||||||
assert len(deltas) == len(supports)
|
assert len(deltas) == len(supports)
|
||||||
@ -378,7 +375,14 @@ def _add_gvar(font, masterModel, master_ttfs, tolerance=0.5, optimize=True):
|
|||||||
if optimized_len < unoptimized_len:
|
if optimized_len < unoptimized_len:
|
||||||
var = var_opt
|
var = var_opt
|
||||||
|
|
||||||
gvar.variations[glyph].append(var)
|
variations.setdefault(glyph, []).append(var)
|
||||||
|
|
||||||
|
if variations:
|
||||||
|
gvar = font["gvar"] = newTable('gvar')
|
||||||
|
gvar.version = 1
|
||||||
|
gvar.reserved = 0
|
||||||
|
gvar.variations = variations
|
||||||
|
|
||||||
|
|
||||||
def _remove_TTHinting(font):
|
def _remove_TTHinting(font):
|
||||||
for tag in ("cvar", "cvt ", "fpgm", "prep"):
|
for tag in ("cvar", "cvt ", "fpgm", "prep"):
|
||||||
@ -482,10 +486,6 @@ def _add_VHVAR(font, masterModel, master_ttfs, axisTags, tableFields):
|
|||||||
tableTag = tableFields.tableTag
|
tableTag = tableFields.tableTag
|
||||||
assert tableTag not in font
|
assert tableTag not in font
|
||||||
log.info("Generating " + tableTag)
|
log.info("Generating " + tableTag)
|
||||||
VHVAR = newTable(tableTag)
|
|
||||||
tableClass = getattr(ot, tableTag)
|
|
||||||
vhvar = VHVAR.table = tableClass()
|
|
||||||
vhvar.Version = 0x00010000
|
|
||||||
|
|
||||||
glyphOrder = font.getGlyphOrder()
|
glyphOrder = font.getGlyphOrder()
|
||||||
|
|
||||||
@ -505,7 +505,15 @@ def _add_VHVAR(font, masterModel, master_ttfs, axisTags, tableFields):
|
|||||||
masterModel, master_ttfs, axisTags, glyphOrder, advMetricses,
|
masterModel, master_ttfs, axisTags, glyphOrder, advMetricses,
|
||||||
vOrigMetricses)
|
vOrigMetricses)
|
||||||
|
|
||||||
|
if not metricsStore.VarRegionList.Region: # VarStore is empty
|
||||||
|
return
|
||||||
|
|
||||||
|
VHVAR = newTable(tableTag)
|
||||||
|
tableClass = getattr(ot, tableTag)
|
||||||
|
vhvar = VHVAR.table = tableClass()
|
||||||
|
vhvar.Version = 0x00010000
|
||||||
vhvar.VarStore = metricsStore
|
vhvar.VarStore = metricsStore
|
||||||
|
|
||||||
if advanceMapping is None:
|
if advanceMapping is None:
|
||||||
setattr(vhvar, tableFields.advMapping, None)
|
setattr(vhvar, tableFields.advMapping, None)
|
||||||
else:
|
else:
|
||||||
@ -516,7 +524,7 @@ def _add_VHVAR(font, masterModel, master_ttfs, axisTags, tableFields):
|
|||||||
setattr(vhvar, tableFields.sb2, None)
|
setattr(vhvar, tableFields.sb2, None)
|
||||||
|
|
||||||
font[tableTag] = VHVAR
|
font[tableTag] = VHVAR
|
||||||
return
|
|
||||||
|
|
||||||
def _get_advance_metrics(font, masterModel, master_ttfs,
|
def _get_advance_metrics(font, masterModel, master_ttfs,
|
||||||
axisTags, glyphOrder, advMetricses, vOrigMetricses=None):
|
axisTags, glyphOrder, advMetricses, vOrigMetricses=None):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user