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:
ReadRoberts 2019-03-26 13:24:35 -07:00
parent c06c5c5087
commit ff0716f7b5

View File

@ -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")