[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: 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 = []

View File

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

View File

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

View File

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

View File

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

View File

@ -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__