[varLib] Start OnlineVarStoreBuilder
This commit is contained in:
parent
c3a87f3fe4
commit
44fda3ac0b
@ -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):
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user