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