~ubuntu-branches/ubuntu/maverick/fonttools/maverick

« back to all changes in this revision

Viewing changes to Lib/fontTools/ttLib/tables/_g_a_s_p.py

  • Committer: Bazaar Package Importer
  • Author(s): Anthony Fok
  • Date: 2003-11-18 00:53:59 UTC
  • Revision ID: james.westby@ubuntu.com-20031118005359-pqirsxbgdz0f0xmx
Tags: upstream-1.99+2.0b1+cvs20031014
ImportĀ upstreamĀ versionĀ 1.99+2.0b1+cvs20031014

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
import DefaultTable
 
2
import struct
 
3
from fontTools.misc.textTools import safeEval
 
4
 
 
5
 
 
6
GASP_DOGRAY = 0x0002
 
7
GASP_GRIDFIT = 0x0001
 
8
 
 
9
class table__g_a_s_p(DefaultTable.DefaultTable):
 
10
        
 
11
        def decompile(self, data, ttFont):
 
12
                self.version, numRanges = struct.unpack(">HH", data[:4])
 
13
                assert self.version == 0, "unknown 'gasp' format: %s" % self.version
 
14
                data = data[4:]
 
15
                self.gaspRange = {}
 
16
                for i in range(numRanges):
 
17
                        rangeMaxPPEM, rangeGaspBehavior = struct.unpack(">HH", data[:4])
 
18
                        self.gaspRange[int(rangeMaxPPEM)] = int(rangeGaspBehavior)
 
19
                        data = data[4:]
 
20
                assert not data, "too much data"
 
21
        
 
22
        def compile(self, ttFont):
 
23
                numRanges = len(self.gaspRange)
 
24
                data = struct.pack(">HH", 0, numRanges)
 
25
                items = self.gaspRange.items()
 
26
                items.sort()
 
27
                for rangeMaxPPEM, rangeGaspBehavior in items:
 
28
                        data = data + struct.pack(">HH", rangeMaxPPEM, rangeGaspBehavior)
 
29
                return data
 
30
        
 
31
        def toXML(self, writer, ttFont):
 
32
                items = self.gaspRange.items()
 
33
                items.sort()
 
34
                for rangeMaxPPEM, rangeGaspBehavior in items:
 
35
                        writer.simpletag("gaspRange", [
 
36
                                        ("rangeMaxPPEM", rangeMaxPPEM),
 
37
                                        ("rangeGaspBehavior", rangeGaspBehavior)])
 
38
                        writer.newline()
 
39
        
 
40
        def fromXML(self, (name, attrs, content), ttFont):
 
41
                if name <> "gaspRange":
 
42
                        return
 
43
                if not hasattr(self, "gaspRange"):
 
44
                        self.gaspRange = {}
 
45
                self.gaspRange[safeEval(attrs["rangeMaxPPEM"])] = safeEval(attrs["rangeGaspBehavior"])
 
46