diff options
Diffstat (limited to 'Lib/fontTools/ttLib/tables/_g_a_s_p.py')
-rw-r--r-- | Lib/fontTools/ttLib/tables/_g_a_s_p.py | 76 |
1 files changed, 41 insertions, 35 deletions
diff --git a/Lib/fontTools/ttLib/tables/_g_a_s_p.py b/Lib/fontTools/ttLib/tables/_g_a_s_p.py index 2c80913c..10c32a87 100644 --- a/Lib/fontTools/ttLib/tables/_g_a_s_p.py +++ b/Lib/fontTools/ttLib/tables/_g_a_s_p.py @@ -8,42 +8,48 @@ GASP_SYMMETRIC_SMOOTHING = 0x0008 GASP_DOGRAY = 0x0002 GASP_GRIDFIT = 0x0001 -class table__g_a_s_p(DefaultTable.DefaultTable): - def decompile(self, data, ttFont): - self.version, numRanges = struct.unpack(">HH", data[:4]) - assert 0 <= self.version <= 1, "unknown 'gasp' format: %s" % self.version - data = data[4:] - self.gaspRange = {} - for i in range(numRanges): - rangeMaxPPEM, rangeGaspBehavior = struct.unpack(">HH", data[:4]) - self.gaspRange[int(rangeMaxPPEM)] = int(rangeGaspBehavior) - data = data[4:] - assert not data, "too much data" +class table__g_a_s_p(DefaultTable.DefaultTable): + def decompile(self, data, ttFont): + self.version, numRanges = struct.unpack(">HH", data[:4]) + assert 0 <= self.version <= 1, "unknown 'gasp' format: %s" % self.version + data = data[4:] + self.gaspRange = {} + for i in range(numRanges): + rangeMaxPPEM, rangeGaspBehavior = struct.unpack(">HH", data[:4]) + self.gaspRange[int(rangeMaxPPEM)] = int(rangeGaspBehavior) + data = data[4:] + assert not data, "too much data" - def compile(self, ttFont): - version = 0 # ignore self.version - numRanges = len(self.gaspRange) - data = b"" - items = sorted(self.gaspRange.items()) - for rangeMaxPPEM, rangeGaspBehavior in items: - data = data + struct.pack(">HH", rangeMaxPPEM, rangeGaspBehavior) - if rangeGaspBehavior & ~(GASP_GRIDFIT | GASP_DOGRAY): - version = 1 - data = struct.pack(">HH", version, numRanges) + data - return data + def compile(self, ttFont): + version = 0 # ignore self.version + numRanges = len(self.gaspRange) + data = b"" + items = sorted(self.gaspRange.items()) + for rangeMaxPPEM, rangeGaspBehavior in items: + data = data + struct.pack(">HH", rangeMaxPPEM, rangeGaspBehavior) + if rangeGaspBehavior & ~(GASP_GRIDFIT | GASP_DOGRAY): + version = 1 + data = struct.pack(">HH", version, numRanges) + data + return data - def toXML(self, writer, ttFont): - items = sorted(self.gaspRange.items()) - for rangeMaxPPEM, rangeGaspBehavior in items: - writer.simpletag("gaspRange", [ - ("rangeMaxPPEM", rangeMaxPPEM), - ("rangeGaspBehavior", rangeGaspBehavior)]) - writer.newline() + def toXML(self, writer, ttFont): + items = sorted(self.gaspRange.items()) + for rangeMaxPPEM, rangeGaspBehavior in items: + writer.simpletag( + "gaspRange", + [ + ("rangeMaxPPEM", rangeMaxPPEM), + ("rangeGaspBehavior", rangeGaspBehavior), + ], + ) + writer.newline() - def fromXML(self, name, attrs, content, ttFont): - if name != "gaspRange": - return - if not hasattr(self, "gaspRange"): - self.gaspRange = {} - self.gaspRange[safeEval(attrs["rangeMaxPPEM"])] = safeEval(attrs["rangeGaspBehavior"]) + def fromXML(self, name, attrs, content, ttFont): + if name != "gaspRange": + return + if not hasattr(self, "gaspRange"): + self.gaspRange = {} + self.gaspRange[safeEval(attrs["rangeMaxPPEM"])] = safeEval( + attrs["rangeGaspBehavior"] + ) |