12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- from fontTools.misc.textTools import safeEval
- from . import DefaultTable
- import sys
- import array
- class table__c_v_t(DefaultTable.DefaultTable):
- """Control Value Table
- The Control Value Table holds a list of values that can be referenced
- by TrueType font instructions.
- See also https://learn.microsoft.com/en-us/typography/opentype/spec/cvt
- """
- def decompile(self, data, ttFont):
- values = array.array("h")
- values.frombytes(data)
- if sys.byteorder != "big":
- values.byteswap()
- self.values = values
- def compile(self, ttFont):
- values = self.values[:]
- if sys.byteorder != "big":
- values.byteswap()
- return values.tobytes()
- def toXML(self, writer, ttFont):
- for i in range(len(self.values)):
- value = self.values[i]
- writer.simpletag("cv", value=value, index=i)
- writer.newline()
- def fromXML(self, name, attrs, content, ttFont):
- if not hasattr(self, "values"):
- self.values = array.array("h")
- if name == "cv":
- index = safeEval(attrs["index"])
- value = safeEval(attrs["value"])
- for i in range(1 + index - len(self.values)):
- self.values.append(0)
- self.values[index] = value
- def __len__(self):
- return len(self.values)
- def __getitem__(self, index):
- return self.values[index]
- def __setitem__(self, index, value):
- self.values[index] = value
- def __delitem__(self, index):
- del self.values[index]
|