F_F_T_M_.py 1.3 KB

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