Code clean-up of items pointed out in review.
re-named variables from snake-case to camel-case throughout functions, except for 'master_ttfs' (which is ugly when camel-cased, and is the lone snake-cased in other functions) and the function names (which follows the precedent set in almost all of the rest of the module).
This commit is contained in:
parent
c06c5c5087
commit
ff0716f7b5
@ -464,81 +464,80 @@ def _merge_TTHinting(font, masterModel, master_ttfs, tolerance=0.5):
|
|||||||
cvar.variations.append(var)
|
cvar.variations.append(var)
|
||||||
|
|
||||||
MetricsFields = namedtuple('MetricsFields',
|
MetricsFields = namedtuple('MetricsFields',
|
||||||
['table_tag', 'metrics_tag', 'sb1', 'sb2', 'adv_mapping', 'vorig_mapping'])
|
['tableTag', 'metricsTag', 'sb1', 'sb2', 'advMapping', 'vOrigMapping'])
|
||||||
|
|
||||||
hvar_fields = MetricsFields(table_tag='HVAR', metrics_tag='hmtx', sb1='LsbMap',
|
hvarFields = MetricsFields(tableTag='HVAR', metricsTag='hmtx', sb1='LsbMap',
|
||||||
sb2='RsbMap', adv_mapping='AdvWidthMap', vorig_mapping=None)
|
sb2='RsbMap', advMapping='AdvWidthMap', vOrigMapping=None)
|
||||||
|
|
||||||
vvar_fields = MetricsFields(table_tag='VVAR', metrics_tag='vmtx', sb1='TsbMap',
|
vvarFields = MetricsFields(tableTag='VVAR', metricsTag='vmtx', sb1='TsbMap',
|
||||||
sb2='BsbMap', adv_mapping='AdvHeightMap', vorig_mapping='VOrgMap')
|
sb2='BsbMap', advMapping='AdvHeightMap', vOrigMapping='VOrgMap')
|
||||||
|
|
||||||
def _add_HVAR(font, masterModel, master_ttfs, axisTags):
|
def _add_HVAR(font, masterModel, master_ttfs, axisTags):
|
||||||
_add_VHVAR(font, masterModel, master_ttfs, axisTags, hvar_fields)
|
_add_VHVAR(font, masterModel, master_ttfs, axisTags, hvarFields)
|
||||||
|
|
||||||
def _add_VVAR(font, masterModel, master_ttfs, axisTags):
|
def _add_VVAR(font, masterModel, master_ttfs, axisTags):
|
||||||
_add_VHVAR(font, masterModel, master_ttfs, axisTags, vvar_fields)
|
_add_VHVAR(font, masterModel, master_ttfs, axisTags, vvarFields)
|
||||||
|
|
||||||
|
def _add_VHVAR(font, masterModel, master_ttfs, axisTags, tableFields):
|
||||||
|
|
||||||
def _add_VHVAR(font, masterModel, master_ttfs, axisTags, table_fields):
|
tableTag = tableFields.tableTag
|
||||||
|
assert tableTag not in font
|
||||||
table_tag = table_fields.table_tag
|
log.info("Generating " + tableTag)
|
||||||
assert table_tag not in font
|
VHVAR = newTable(tableTag)
|
||||||
log.info("Generating " + table_tag)
|
table_class = getattr(ot, tableTag)
|
||||||
VHVAR = newTable(table_tag)
|
|
||||||
table_class = getattr(ot, table_tag)
|
|
||||||
vhvar = VHVAR.table = table_class()
|
vhvar = VHVAR.table = table_class()
|
||||||
vhvar.Version = 0x00010000
|
vhvar.Version = 0x00010000
|
||||||
|
|
||||||
glyphOrder = font.getGlyphOrder()
|
glyphOrder = font.getGlyphOrder()
|
||||||
|
|
||||||
# Build list of source font advance widths for each glyph
|
# Build list of source font advance widths for each glyph
|
||||||
metrics_tag = table_fields.metrics_tag
|
metricsTag = tableFields.metricsTag
|
||||||
adv_metricses = [m[metrics_tag].metrics for m in master_ttfs]
|
advMetricses = [m[metricsTag].metrics for m in master_ttfs]
|
||||||
|
|
||||||
# Build list of source font vertical origin coords for each glyph
|
# Build list of source font vertical origin coords for each glyph
|
||||||
if table_tag == 'VVAR' and 'VORG' in master_ttfs[0]:
|
if tableTag == 'VVAR' and 'VORG' in master_ttfs[0]:
|
||||||
v_orig_metricses = [m['VORG'].VOriginRecords for m in master_ttfs]
|
vOrigMetricses = [m['VORG'].VOriginRecords for m in master_ttfs]
|
||||||
default_y_origs = [m['VORG'].defaultVertOriginY for m in master_ttfs]
|
defaultYOrigs = [m['VORG'].defaultVertOriginY for m in master_ttfs]
|
||||||
v_orig_metricses = list(zip(v_orig_metricses, default_y_origs))
|
vOrigMetricses = list(zip(vOrigMetricses, defaultYOrigs))
|
||||||
else:
|
else:
|
||||||
v_orig_metricses = None
|
vOrigMetricses = None
|
||||||
|
|
||||||
metricsStore, advanceMapping, vOrigMapping = _get_advance_metrics(font,
|
metricsStore, advanceMapping, vOrigMapping = _get_advance_metrics(font,
|
||||||
masterModel, master_ttfs, axisTags, glyphOrder, adv_metricses,
|
masterModel, master_ttfs, axisTags, glyphOrder, advMetricses,
|
||||||
v_orig_metricses)
|
vOrigMetricses)
|
||||||
|
|
||||||
vhvar.VarStore = metricsStore
|
vhvar.VarStore = metricsStore
|
||||||
if advanceMapping is None:
|
if advanceMapping is None:
|
||||||
setattr(vhvar, table_fields.adv_mapping, None)
|
setattr(vhvar, tableFields.advMapping, None)
|
||||||
else:
|
else:
|
||||||
setattr(vhvar, table_fields.adv_mapping, advanceMapping)
|
setattr(vhvar, tableFields.advMapping, advanceMapping)
|
||||||
if vOrigMapping is not None:
|
if vOrigMapping is not None:
|
||||||
setattr(vhvar, table_fields.vorig_mapping, vOrigMapping)
|
setattr(vhvar, tableFields.vOrigMapping, vOrigMapping)
|
||||||
setattr(vhvar, table_fields.sb1, None)
|
setattr(vhvar, tableFields.sb1, None)
|
||||||
setattr(vhvar, table_fields.sb2, None)
|
setattr(vhvar, tableFields.sb2, None)
|
||||||
|
|
||||||
font[table_tag] = VHVAR
|
font[tableTag] = VHVAR
|
||||||
return
|
return
|
||||||
|
|
||||||
def _get_advance_metrics(font, masterModel, master_ttfs,
|
def _get_advance_metrics(font, masterModel, master_ttfs,
|
||||||
axisTags, glyphOrder, adv_metricses, v_orig_metricses=None):
|
axisTags, glyphOrder, advMetricses, vOrigMetricses=None):
|
||||||
|
|
||||||
vhAdvanceDeltasAndSupports = {}
|
vhAdvanceDeltasAndSupports = {}
|
||||||
vOrigDeltasAndSupports = {}
|
vOrigDeltasAndSupports = {}
|
||||||
for glyph in glyphOrder:
|
for glyph in glyphOrder:
|
||||||
vhAdvances = [metrics[glyph][0] if glyph in metrics else None for metrics in adv_metricses]
|
vhAdvances = [metrics[glyph][0] if glyph in metrics else None for metrics in advMetricses]
|
||||||
vhAdvanceDeltasAndSupports[glyph] = masterModel.getDeltasAndSupports(vhAdvances)
|
vhAdvanceDeltasAndSupports[glyph] = masterModel.getDeltasAndSupports(vhAdvances)
|
||||||
|
|
||||||
singleModel = models.allEqual(id(v[1]) for v in vhAdvanceDeltasAndSupports.values())
|
singleModel = models.allEqual(id(v[1]) for v in vhAdvanceDeltasAndSupports.values())
|
||||||
|
|
||||||
if v_orig_metricses:
|
if vOrigMetricses:
|
||||||
singleModel = False
|
singleModel = False
|
||||||
for glyph in glyphOrder:
|
for glyph in glyphOrder:
|
||||||
# We need to supply a vOrigs tuple with non-None default values
|
# We need to supply a vOrigs tuple with non-None default values
|
||||||
# for each glyph. v_orig_metricses contains values only for those
|
# for each glyph. vOrigMetricses contains values only for those
|
||||||
# glyphs which have a non-default vOrig.
|
# glyphs which have a non-default vOrig.
|
||||||
vOrigs = [metrics[glyph] if glyph in metrics else defaultVOrig
|
vOrigs = [metrics[glyph] if glyph in metrics else defaultVOrig
|
||||||
for metrics, defaultVOrig in v_orig_metricses]
|
for metrics, defaultVOrig in vOrigMetricses]
|
||||||
vOrigDeltasAndSupports[glyph] = masterModel.getDeltasAndSupports(vOrigs)
|
vOrigDeltasAndSupports[glyph] = masterModel.getDeltasAndSupports(vOrigs)
|
||||||
|
|
||||||
directStore = None
|
directStore = None
|
||||||
@ -555,28 +554,28 @@ def _get_advance_metrics(font, masterModel, master_ttfs,
|
|||||||
|
|
||||||
# Build optimized indirect mapping
|
# Build optimized indirect mapping
|
||||||
storeBuilder = varStore.OnlineVarStoreBuilder(axisTags)
|
storeBuilder = varStore.OnlineVarStoreBuilder(axisTags)
|
||||||
adv_mapping = {}
|
advMapping = {}
|
||||||
for glyphName in glyphOrder:
|
for glyphName in glyphOrder:
|
||||||
deltas, supports = vhAdvanceDeltasAndSupports[glyphName]
|
deltas, supports = vhAdvanceDeltasAndSupports[glyphName]
|
||||||
storeBuilder.setSupports(supports)
|
storeBuilder.setSupports(supports)
|
||||||
adv_mapping[glyphName] = storeBuilder.storeDeltas(deltas)
|
advMapping[glyphName] = storeBuilder.storeDeltas(deltas)
|
||||||
|
|
||||||
if v_orig_metricses:
|
if vOrigMetricses:
|
||||||
v_orig_mapping = {}
|
vOrigMap = {}
|
||||||
for glyphName in glyphOrder:
|
for glyphName in glyphOrder:
|
||||||
deltas, supports = vOrigDeltasAndSupports[glyphName]
|
deltas, supports = vOrigDeltasAndSupports[glyphName]
|
||||||
storeBuilder.setSupports(supports)
|
storeBuilder.setSupports(supports)
|
||||||
v_orig_mapping[glyphName] = storeBuilder.storeDeltas(deltas)
|
vOrigMap[glyphName] = storeBuilder.storeDeltas(deltas)
|
||||||
|
|
||||||
indirectStore = storeBuilder.finish()
|
indirectStore = storeBuilder.finish()
|
||||||
mapping2 = indirectStore.optimize()
|
mapping2 = indirectStore.optimize()
|
||||||
adv_mapping = [mapping2[adv_mapping[g]] for g in glyphOrder]
|
advMapping = [mapping2[advMapping[g]] for g in glyphOrder]
|
||||||
advanceMapping = builder.buildVarIdxMap(adv_mapping, glyphOrder)
|
advanceMapping = builder.buildVarIdxMap(advMapping, glyphOrder)
|
||||||
|
|
||||||
if v_orig_metricses:
|
if vOrigMetricses:
|
||||||
v_orig_mapping = [mapping2[v_orig_mapping[g]] for g in glyphOrder]
|
vOrigMap = [mapping2[vOrigMap[g]] for g in glyphOrder]
|
||||||
|
|
||||||
use_direct = False
|
useDirect = False
|
||||||
vOrigMapping = None
|
vOrigMapping = None
|
||||||
if directStore:
|
if directStore:
|
||||||
# Compile both, see which is more compact
|
# Compile both, see which is more compact
|
||||||
@ -590,19 +589,18 @@ def _get_advance_metrics(font, masterModel, master_ttfs,
|
|||||||
advanceMapping.compile(writer, font)
|
advanceMapping.compile(writer, font)
|
||||||
indirectSize = len(writer.getAllData())
|
indirectSize = len(writer.getAllData())
|
||||||
|
|
||||||
use_direct = directSize < indirectSize
|
useDirect = directSize < indirectSize
|
||||||
|
|
||||||
if use_direct:
|
if useDirect:
|
||||||
metricsStore = directStore
|
metricsStore = directStore
|
||||||
advanceMapping = None
|
advanceMapping = None
|
||||||
else:
|
else:
|
||||||
metricsStore = indirectStore
|
metricsStore = indirectStore
|
||||||
if v_orig_metricses:
|
if vOrigMetricses:
|
||||||
vOrigMapping = builder.buildVarIdxMap(v_orig_mapping, glyphOrder)
|
vOrigMapping = builder.buildVarIdxMap(vOrigMap, glyphOrder)
|
||||||
|
|
||||||
return metricsStore, advanceMapping, vOrigMapping
|
return metricsStore, advanceMapping, vOrigMapping
|
||||||
|
|
||||||
|
|
||||||
def _add_MVAR(font, masterModel, master_ttfs, axisTags):
|
def _add_MVAR(font, masterModel, master_ttfs, axisTags):
|
||||||
|
|
||||||
log.info("Generating MVAR")
|
log.info("Generating MVAR")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user