_c_v_t.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. from fontTools.misc.textTools import safeEval
  2. from . import DefaultTable
  3. import sys
  4. import array
  5. class table__c_v_t(DefaultTable.DefaultTable):
  6. def decompile(self, data, ttFont):
  7. values = array.array("h")
  8. values.frombytes(data)
  9. if sys.byteorder != "big":
  10. values.byteswap()
  11. self.values = values
  12. def compile(self, ttFont):
  13. values = self.values[:]
  14. if sys.byteorder != "big":
  15. values.byteswap()
  16. return values.tobytes()
  17. def toXML(self, writer, ttFont):
  18. for i in range(len(self.values)):
  19. value = self.values[i]
  20. writer.simpletag("cv", value=value, index=i)
  21. writer.newline()
  22. def fromXML(self, name, attrs, content, ttFont):
  23. if not hasattr(self, "values"):
  24. self.values = array.array("h")
  25. if name == "cv":
  26. index = safeEval(attrs["index"])
  27. value = safeEval(attrs["value"])
  28. for i in range(1 + index - len(self.values)):
  29. self.values.append(0)
  30. self.values[index] = value
  31. def __len__(self):
  32. return len(self.values)
  33. def __getitem__(self, index):
  34. return self.values[index]
  35. def __setitem__(self, index, value):
  36. self.values[index] = value
  37. def __delitem__(self, index):
  38. del self.values[index]