def processFont(self, filepath): # extension = filepath[filepath.rindex('.'):] ftFont = None print print 'filepath', filepath leftSideBearings = [] rightSideBearings = [] try: ftFont = TFFreetypeFont(filepath) postscript_name = ftFont.postscriptName if postscript_name in self.processedPostscriptNames: return glyphIndexToCharacterMap = ftFont.getGlyphIndexToCharacterMap() # print '\t', 'postscript_name', postscript_name self.processedPostscriptNames.add(postscript_name) # characterToGlyphIndexMap = ftFont.getCharacterToGlyphIndexMap() for glyphIndex in ftFont.getGlyphIndices(): if glyphIndex not in glyphIndexToCharacterMap: continue unicode = glyphIndexToCharacterMap[glyphIndex] if unicode > 0x7f: ''' ignore code points not in first code block. ''' continue contours, xAdvance = ftFont.getGlyphContours(glyphIndex) if len(contours) < 1: ''' Ignore empty glyphs. ''' continue minmax = minmaxPaths(contours) leftSideBearing = minmax.minX rightSideBearing = xAdvance - minmax.maxX leftSideBearings.append(leftSideBearing) rightSideBearings.append(rightSideBearing) except Exception, e: print 'error filepath', filepath print e.message traceback.print_exc() del ftFont return