• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1from fontTools.misc import sstruct
2from fontTools.misc.textTools import safeEval
3from fontTools.misc.timeTools import timestampFromString, timestampToString
4from . import DefaultTable
5
6FFTMFormat = """
7		>	# big endian
8		version:        I
9		FFTimeStamp:    Q
10		sourceCreated:  Q
11		sourceModified: Q
12"""
13
14
15class table_F_F_T_M_(DefaultTable.DefaultTable):
16    def decompile(self, data, ttFont):
17        dummy, rest = sstruct.unpack2(FFTMFormat, data, self)
18
19    def compile(self, ttFont):
20        data = sstruct.pack(FFTMFormat, self)
21        return data
22
23    def toXML(self, writer, ttFont):
24        writer.comment(
25            "FontForge's timestamp, font source creation and modification dates"
26        )
27        writer.newline()
28        formatstring, names, fixes = sstruct.getformat(FFTMFormat)
29        for name in names:
30            value = getattr(self, name)
31            if name in ("FFTimeStamp", "sourceCreated", "sourceModified"):
32                value = timestampToString(value)
33            writer.simpletag(name, value=value)
34            writer.newline()
35
36    def fromXML(self, name, attrs, content, ttFont):
37        value = attrs["value"]
38        if name in ("FFTimeStamp", "sourceCreated", "sourceModified"):
39            value = timestampFromString(value)
40        else:
41            value = safeEval(value)
42        setattr(self, name, value)
43