Changeset 241

Show
Ignore:
Timestamp:
07/02/08 09:33:34 (6 months ago)
Author:
tal
Message:
- Added some basic glyph caching.
- Changes to support new object initialization and loading methods.
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • packages/compositor/trunk/Lib/compositor/__init__.py

    r233 r241  
    3333        self.path = path 
    3434        self.fallbackGlyph = ".notdef" 
     35        self._glyphs = {} 
    3536        self.source = TTFont(path) 
    3637        self.loadGlyphSet() 
     
    4344 
    4445    def __del__(self): 
     46        del self._glyphs 
    4547        self.source.close() 
    4648        del self.source 
     
    118120        self.gdef = None 
    119121        if self.source.has_key("GDEF"): 
    120             self.gdef = GDEF(self.source["GDEF"]) 
     122            self.gdef = GDEF().loadFromFontTools(self.source["GDEF"]) 
    121123        if self.source.has_key("GSUB"): 
    122             self.gsub = GSUB(self.source["GSUB"], self.reversedCMAP, self.gdef) 
     124            self.gsub = GSUB().loadFromFontTools(self.source["GSUB"], self.reversedCMAP, self.gdef) 
    123125        if self.source.has_key("GPOS"): 
    124             self.gpos = GPOS(self.source["GPOS"], self.reversedCMAP, self.gdef) 
     126            self.gpos = GPOS().loadFromFontTools(self.source["GPOS"], self.reversedCMAP, self.gdef) 
    125127 
    126128    # ------------- 
     
    135137 
    136138    def __getitem__(self, name): 
    137         glyph = self.glyphSet[name] 
    138         index = self._glyphOrder[name] 
    139         return self.glyphClass(name, index, glyph, self) 
     139        if name not in self._glyphs: 
     140            glyph = self.glyphSet[name] 
     141            index = self._glyphOrder[name] 
     142            glyph = self.glyphClass(name, index, glyph, self) 
     143            self._glyphs[name] = glyph 
     144        return self._glyphs[name] 
    140145 
    141146    # -----------------