[varLib] Start OnlineVarStoreBuilder

This commit is contained in:
Behdad Esfahbod 2016-08-15 11:14:52 -07:00
parent c3a87f3fe4
commit 44fda3ac0b
2 changed files with 29 additions and 4 deletions

View File

@ -545,8 +545,8 @@ def _merge_OTL(font, model, master_ttfs, axes, base_idx):
GPOS = font['GPOS'].table
getAnchor = lambda GPOS: GPOS.LookupList.Lookup[4].SubTable[0].MarkArray.MarkRecord[28].MarkAnchor
store = None
store_builder = None # store, model
store_builder = builder.OnlineVarStoreBuilder(axes.keys())
store_builder.setModel(model)
anchors = [getAnchor(G) for G in GPOSs]
anchor = getAnchor(GPOS)
@ -558,6 +558,9 @@ def _merge_OTL(font, model, master_ttfs, axes, base_idx):
anchor.XDeviceTable = XDeviceTable
anchor.YDeviceTable = YDeviceTable
store = store_builder.finish()
# TODO insert in GDEF
def main(args=None):

View File

@ -71,18 +71,40 @@ def buildVarData(varRegionIndices, items, optimize=True):
return self
def buildVarStore(varTupleList, varDataList):
def buildVarStore(varRegionList, varDataList):
self = ot.VarStore()
self.Format = 1
self.Reserved = 0
self.VarRegionList = varTupleList
self.VarRegionList = varRegionList
self.VarData = list(varDataList)
self.VarDataCount = len(self.VarData)
return self
class OnlineVarStoreBuilder(object):
def __init__(self, axisTags):
self._regions = buildVarRegionList([], axisTags)
self._store = buildVarStore(self._regions, [])
def setModel(self, model):
self._model = model
# Store model's regions
def finish(self, optimize=True):
self._regions.VarRegionCount = len(self._regions.VarRegion)
self._store.VarDataCount = len(self._store.VarData)
for data in self._store.VarData:
data.ItemCount = len(data.Item)
if optimize:
optimizeVarData(data)
return self._store
# Variation helpers
def buildVarIdxMap(varIdxes):
# TODO Change VarIdxMap mapping to hold separate outer,inner indices
self = ot.VarIdxMap()
self.mapping = list(varIdxes)
return self