[MultiVarStore] Fix up XML read/write
Looks complete now.
This commit is contained in:
parent
c78ba01c80
commit
ec78b572c9
@ -1146,7 +1146,7 @@ class BaseTable(object):
|
|||||||
except KeyError:
|
except KeyError:
|
||||||
raise # XXX on KeyError, raise nice error
|
raise # XXX on KeyError, raise nice error
|
||||||
value = conv.xmlRead(attrs, content, font)
|
value = conv.xmlRead(attrs, content, font)
|
||||||
if conv.repeat:
|
if conv.repeat is not None:
|
||||||
seq = getattr(self, conv.name, None)
|
seq = getattr(self, conv.name, None)
|
||||||
if seq is None:
|
if seq is None:
|
||||||
seq = []
|
seq = []
|
||||||
|
@ -1912,11 +1912,9 @@ class CFF2Index(BaseConverter):
|
|||||||
writer.writeData(item)
|
writer.writeData(item)
|
||||||
|
|
||||||
def xmlRead(self, attrs, content, font):
|
def xmlRead(self, attrs, content, font):
|
||||||
abort
|
obj = self.itemClass()
|
||||||
items = []
|
obj.fromXML(None, attrs, content, font)
|
||||||
for eName, eAttrs, _eContent in filter(istuple, content):
|
return obj
|
||||||
print(eName)
|
|
||||||
return items
|
|
||||||
|
|
||||||
def xmlWrite(self, xmlWriter, font, value, name, attrs):
|
def xmlWrite(self, xmlWriter, font, value, name, attrs):
|
||||||
for i, item in enumerate(value):
|
for i, item in enumerate(value):
|
||||||
|
@ -3337,8 +3337,8 @@ otData = [
|
|||||||
[
|
[
|
||||||
("uint16", "Format", None, None, "Set to 1."),
|
("uint16", "Format", None, None, "Set to 1."),
|
||||||
("LOffset", "VarRegionList", None, None, ""),
|
("LOffset", "VarRegionList", None, None, ""),
|
||||||
("uint16", "VarDataCount", None, None, ""),
|
("uint16", "MultiVarDataCount", None, None, ""),
|
||||||
("LOffsetTo(MultiVarData)", "VarData", "VarDataCount", 0, ""),
|
("LOffset", "MultiVarData", "MultiVarDataCount", 0, ""),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
# VariableComposites
|
# VariableComposites
|
||||||
|
@ -344,7 +344,7 @@ class CvarEncodedValues(BaseTable):
|
|||||||
|
|
||||||
def fromXML(self, name, attrs, content, font):
|
def fromXML(self, name, attrs, content, font):
|
||||||
self.populateDefaults()
|
self.populateDefaults()
|
||||||
values = safeEval(attrs["value"])
|
self.values = safeEval(attrs["value"])
|
||||||
|
|
||||||
|
|
||||||
class VarCompositeGlyph(BaseTable):
|
class VarCompositeGlyph(BaseTable):
|
||||||
|
@ -144,12 +144,12 @@ def buildMultiVarData(varRegionIndices, items):
|
|||||||
return self
|
return self
|
||||||
|
|
||||||
|
|
||||||
def buildMultiVarStore(varRegionList, varDataList):
|
def buildMultiVarStore(varRegionList, multiVarDataList):
|
||||||
self = ot.MultiVarStore()
|
self = ot.MultiVarStore()
|
||||||
self.Format = 1
|
self.Format = 1
|
||||||
self.VarRegionList = varRegionList
|
self.VarRegionList = varRegionList
|
||||||
self.VarData = list(varDataList)
|
self.MultiVarData = list(multiVarDataList)
|
||||||
self.VarDataCount = len(self.VarData)
|
self.MultiVarDataCount = len(self.MultiVarData)
|
||||||
return self
|
return self
|
||||||
|
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ class OnlineMultiVarStoreBuilder(object):
|
|||||||
|
|
||||||
def finish(self, optimize=True):
|
def finish(self, optimize=True):
|
||||||
self._regionList.RegionCount = len(self._regionList.Region)
|
self._regionList.RegionCount = len(self._regionList.Region)
|
||||||
self._store.VarDataCount = len(self._store.VarData)
|
self._store.MultiVarDataCount = len(self._store.MultiVarData)
|
||||||
return self._store
|
return self._store
|
||||||
|
|
||||||
def _add_MultiVarData(self):
|
def _add_MultiVarData(self):
|
||||||
@ -71,7 +71,7 @@ class OnlineMultiVarStoreBuilder(object):
|
|||||||
varDataIdx = self._varDataIndices.get(key)
|
varDataIdx = self._varDataIndices.get(key)
|
||||||
if varDataIdx is not None:
|
if varDataIdx is not None:
|
||||||
self._outer = varDataIdx
|
self._outer = varDataIdx
|
||||||
self._data = self._store.VarData[varDataIdx]
|
self._data = self._store.MultiVarData[varDataIdx]
|
||||||
self._cache = self._varDataCaches[key]
|
self._cache = self._varDataCaches[key]
|
||||||
if len(self._data.Item) == 0xFFFF:
|
if len(self._data.Item) == 0xFFFF:
|
||||||
# This is full. Need new one.
|
# This is full. Need new one.
|
||||||
@ -79,8 +79,8 @@ class OnlineMultiVarStoreBuilder(object):
|
|||||||
|
|
||||||
if varDataIdx is None:
|
if varDataIdx is None:
|
||||||
self._data = buildMultiVarData(regionIndices, [])
|
self._data = buildMultiVarData(regionIndices, [])
|
||||||
self._outer = len(self._store.VarData)
|
self._outer = len(self._store.MultiVarData)
|
||||||
self._store.VarData.append(self._data)
|
self._store.MultiVarData.append(self._data)
|
||||||
self._varDataIndices[key] = self._outer
|
self._varDataIndices[key] = self._outer
|
||||||
if key not in self._varDataCaches:
|
if key not in self._varDataCaches:
|
||||||
self._varDataCaches[key] = {}
|
self._varDataCaches[key] = {}
|
||||||
@ -133,7 +133,7 @@ ot.MultiVarData.addItem = MultiVarData_addItem
|
|||||||
|
|
||||||
|
|
||||||
def MultiVarStore___bool__(self):
|
def MultiVarStore___bool__(self):
|
||||||
return bool(self.VarData)
|
return bool(self.MultiVarData)
|
||||||
|
|
||||||
|
|
||||||
ot.MultiVarStore.__bool__ = MultiVarStore___bool__
|
ot.MultiVarStore.__bool__ = MultiVarStore___bool__
|
||||||
|
Loading…
x
Reference in New Issue
Block a user