Example #1
2
 def __init__(self, file, checkChecksums=1):
         self.file = file
         self.checkChecksums = checkChecksums
         data = self.file.read(sfntDirectorySize)
         if len(data) <> sfntDirectorySize:
                 from kiva.fonttools.fontTools import ttLib
                 raise ttLib.TTLibError, "Not a TrueType or OpenType font (not enough data)"
         sstruct.unpack(sfntDirectoryFormat, data, self)
         if self.sfntVersion not in ("\000\001\000\000", "OTTO", "true"):
                 from kiva.fonttools.fontTools import ttLib
                 raise ttLib.TTLibError, "Not a TrueType or OpenType font (bad sfntVersion)"
         self.tables = {}
         for i in range(self.numTables):
                 entry = SFNTDirectoryEntry()
                 entry.fromFile(self.file)
                 if entry.length > 0:
                         self.tables[entry.tag] = entry
                 else:
                         # Ignore zero-length tables. This doesn't seem to be documented,
                         # yet it's apparently how the Windows TT rasterizer behaves.
                         # Besides, at least one font has been sighted which actually
                         # *has* a zero-length table.
                         pass
Example #2
0
 def fromString(self, str):
         sstruct.unpack(sfntDirectoryEntryFormat, str, self)
Example #3
0
 def fromFile(self, file):
         sstruct.unpack(sfntDirectoryEntryFormat,
                         file.read(sfntDirectoryEntrySize), self)