[MultiVarStore] Fix up XML read/write

Looks complete now.
This commit is contained in:
Behdad Esfahbod 2023-12-15 17:27:31 -07:00
parent c78ba01c80
commit ec78b572c9
6 changed files with 15 additions and 17 deletions

View File

@ -1146,7 +1146,7 @@ class BaseTable(object):
except KeyError:
raise # XXX on KeyError, raise nice error
value = conv.xmlRead(attrs, content, font)
if conv.repeat:
if conv.repeat is not None:
seq = getattr(self, conv.name, None)
if seq is None:
seq = []

View File

@ -1912,11 +1912,9 @@ class CFF2Index(BaseConverter):
writer.writeData(item)
def xmlRead(self, attrs, content, font):
abort
items = []
for eName, eAttrs, _eContent in filter(istuple, content):
print(eName)
return items
obj = self.itemClass()
obj.fromXML(None, attrs, content, font)
return obj
def xmlWrite(self, xmlWriter, font, value, name, attrs):
for i, item in enumerate(value):

View File

@ -3337,8 +3337,8 @@ otData = [
[
("uint16", "Format", None, None, "Set to 1."),
("LOffset", "VarRegionList", None, None, ""),
("uint16", "VarDataCount", None, None, ""),
("LOffsetTo(MultiVarData)", "VarData", "VarDataCount", 0, ""),
("uint16", "MultiVarDataCount", None, None, ""),
("LOffset", "MultiVarData", "MultiVarDataCount", 0, ""),
],
),
# VariableComposites

View File

@ -344,7 +344,7 @@ class CvarEncodedValues(BaseTable):
def fromXML(self, name, attrs, content, font):
self.populateDefaults()
values = safeEval(attrs["value"])
self.values = safeEval(attrs["value"])
class VarCompositeGlyph(BaseTable):

View File

@ -144,12 +144,12 @@ def buildMultiVarData(varRegionIndices, items):
return self
def buildMultiVarStore(varRegionList, varDataList):
def buildMultiVarStore(varRegionList, multiVarDataList):
self = ot.MultiVarStore()
self.Format = 1
self.VarRegionList = varRegionList
self.VarData = list(varDataList)
self.VarDataCount = len(self.VarData)
self.MultiVarData = list(multiVarDataList)
self.MultiVarDataCount = len(self.MultiVarData)
return self

View File

@ -48,7 +48,7 @@ class OnlineMultiVarStoreBuilder(object):
def finish(self, optimize=True):
self._regionList.RegionCount = len(self._regionList.Region)
self._store.VarDataCount = len(self._store.VarData)
self._store.MultiVarDataCount = len(self._store.MultiVarData)
return self._store
def _add_MultiVarData(self):
@ -71,7 +71,7 @@ class OnlineMultiVarStoreBuilder(object):
varDataIdx = self._varDataIndices.get(key)
if varDataIdx is not None:
self._outer = varDataIdx
self._data = self._store.VarData[varDataIdx]
self._data = self._store.MultiVarData[varDataIdx]
self._cache = self._varDataCaches[key]
if len(self._data.Item) == 0xFFFF:
# This is full. Need new one.
@ -79,8 +79,8 @@ class OnlineMultiVarStoreBuilder(object):
if varDataIdx is None:
self._data = buildMultiVarData(regionIndices, [])
self._outer = len(self._store.VarData)
self._store.VarData.append(self._data)
self._outer = len(self._store.MultiVarData)
self._store.MultiVarData.append(self._data)
self._varDataIndices[key] = self._outer
if key not in self._varDataCaches:
self._varDataCaches[key] = {}
@ -133,7 +133,7 @@ ot.MultiVarData.addItem = MultiVarData_addItem
def MultiVarStore___bool__(self):
return bool(self.VarData)
return bool(self.MultiVarData)
ot.MultiVarStore.__bool__ = MultiVarStore___bool__