Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

56 lines
1.5 KiB
Python
Raw Normal View History

from fontTools.misc.textTools import safeEval
2013-11-27 02:34:11 -05:00
from . import DefaultTable
import sys
import array
2015-04-26 02:01:01 -04:00
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
2022-12-13 11:26:36 +00:00
def compile(self, ttFont):
values = self.values[:]
if sys.byteorder != "big":
values.byteswap()
return values.tobytes()
2022-12-13 11:26:36 +00:00
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()
2022-12-13 11:26:36 +00:00
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
2022-12-13 11:26:36 +00:00
def __len__(self):
return len(self.values)
2022-12-13 11:26:36 +00:00
def __getitem__(self, index):
return self.values[index]
2022-12-13 11:26:36 +00:00
def __setitem__(self, index, value):
self.values[index] = value
2022-12-13 11:26:36 +00:00
def __delitem__(self, index):
del self.values[index]