diff options
author | Haibo Huang <hhb@google.com> | 2019-01-08 14:14:22 -0800 |
---|---|---|
committer | Haibo Huang <hhb@google.com> | 2019-01-08 14:22:09 -0800 |
commit | 79019a0d336efb722a395ed2db4c5d638104494e (patch) | |
tree | c53dd801899ade2bca1472885cc513b49469348c /Lib/fontTools/ttLib/tables/S__i_l_f.py | |
parent | 69c9acab6a81c7bce36329972332cdbd0d11f449 (diff) | |
download | fonttools-79019a0d336efb722a395ed2db4c5d638104494e.tar.gz |
Upgrade fonttools from 3.31.0 to 3.35.0
Ran `tools/external_updater/updater.sh update fonttools`.
Test: builds
Change-Id: I40f991612bf5a41fdd90fc298aef7b02e5a283ad
Diffstat (limited to 'Lib/fontTools/ttLib/tables/S__i_l_f.py')
-rw-r--r-- | Lib/fontTools/ttLib/tables/S__i_l_f.py | 53 |
1 files changed, 27 insertions, 26 deletions
diff --git a/Lib/fontTools/ttLib/tables/S__i_l_f.py b/Lib/fontTools/ttLib/tables/S__i_l_f.py index 44dd69b0..e68b9b2e 100644 --- a/Lib/fontTools/ttLib/tables/S__i_l_f.py +++ b/Lib/fontTools/ttLib/tables/S__i_l_f.py @@ -6,6 +6,7 @@ from itertools import * from . import DefaultTable from . import grUtils from array import array +from functools import reduce import struct, operator, warnings, re, sys Silf_hdr_format = ''' @@ -220,23 +221,23 @@ def disassemble(aCode): instre = re.compile("^\s*([^(]+)\s*(?:\(([^)]+)\))?") def assemble(instrs): - res = [] + res = b"" for inst in instrs: m = instre.match(inst) if not m or not m.group(1) in aCode_map: continue opcode, parmfmt = aCode_map[m.group(1)] - res.append(struct.pack("B", opcode)) + res += struct.pack("B", opcode) if m.group(2): if parmfmt == 0: continue parms = [int(x) for x in re.split(",\s*", m.group(2))] if parmfmt == -1: l = len(parms) - res.append(struct.pack(("%dB" % (l+1)), l, *parms)) + res += struct.pack(("%dB" % (l+1)), l, *parms) else: - res.append(struct.pack(parmfmt, *parms)) - return b"".join(res) + res += struct.pack(parmfmt, *parms) + return res def writecode(tag, writer, instrs): writer.begintag(tag) @@ -334,7 +335,7 @@ class table_S__i_l_f(DefaultTable.DefaultTable): else: hdr = sstruct.pack(Silf_hdr_format_3, self) offset = len(hdr) + 4 * self.numSilf - data = "" + data = b"" for s in self.silfs: hdr += struct.pack(">L", offset) subdata = s.compile(ttFont, self.version) @@ -427,7 +428,7 @@ class Silf(object): self.numJLevels = len(self.jLevels) self.numCritFeatures = len(self.critFeatures) numPseudo = len(self.pMap) - data = "" + data = b"" if version >= 3.0: hdroffset = sstruct.calcsize(Silf_part1_format_v3) else: @@ -453,8 +454,8 @@ class Silf(object): u, ttFont.getGlyphID(p)) data1 += self.classes.compile(ttFont, version) currpos += len(data1) - data2 = "" - datao = "" + data2 = b"" + datao = b"" for i, p in enumerate(self.passes): base = currpos + len(data2) datao += struct.pack(">L", base) @@ -464,7 +465,7 @@ class Silf(object): if version >= 3.0: data3 = sstruct.pack(Silf_part1_format_v3, self) else: - data3 = "" + data3 = b"" return data3 + data + datao + data1 + data2 @@ -592,8 +593,8 @@ class Classes(object): oClasses = struct.unpack((">%dH" % (self.numClass+1)), data[4:6+2*self.numClass]) for s,e in zip(oClasses[:self.numLinear], oClasses[1:self.numLinear+1]): - self.linear.append(map(ttFont.getGlyphName, - struct.unpack((">%dH" % ((e-s)/2)), data[s:e]))) + self.linear.append(ttFont.getGlyphName(x) for x in + struct.unpack((">%dH" % ((e-s)/2)), data[s:e])) for s,e in zip(oClasses[self.numLinear:self.numClass], oClasses[self.numLinear+1:self.numClass+1]): nonLinids = [struct.unpack(">HH", data[x:x+4]) for x in range(s+8, e, 4)] @@ -601,7 +602,7 @@ class Classes(object): self.nonLinear.append(nonLin) def compile(self, ttFont, version=2.0): - data = "" + data = b"" oClasses = [] if version >= 4.0: offset = 8 + 4 * (len(self.linear) + len(self.nonLinear)) @@ -609,13 +610,13 @@ class Classes(object): offset = 6 + 2 * (len(self.linear) + len(self.nonLinear)) for l in self.linear: oClasses.append(len(data) + offset) - gs = map(ttFont.getGlyphID, l) + gs = [ttFont.getGlyphID(x) for x in l] data += struct.pack((">%dH" % len(l)), *gs) for l in self.nonLinear: oClasses.append(len(data) + offset) gs = [(ttFont.getGlyphID(x[0]), x[1]) for x in l.items()] data += grUtils.bininfo(len(gs)) - data += "".join([struct.pack(">HH", *x) for x in sorted(gs)]) + data += b"".join([struct.pack(">HH", *x) for x in sorted(gs)]) oClasses.append(len(data) + offset) self.numClass = len(oClasses) - 1 self.numLinear = len(self.linear) @@ -680,7 +681,7 @@ class Pass(object): self.rulePreContexts = [] self.ruleSortKeys = [] self.ruleConstraints = [] - self.passConstraints = "" + self.passConstraints = b"" self.actions = [] self.stateTrans = [] self.startStates = [] @@ -725,7 +726,7 @@ class Pass(object): for i in range(len(oConstraints)-2,-1,-1): if oConstraints[i] == 0 : oConstraints[i] = oConstraints[i+1] - self.ruleConstraints = [(data[s:e] if (e-s > 1) else "") for (s,e) in zip(oConstraints, oConstraints[1:])] + self.ruleConstraints = [(data[s:e] if (e-s > 1) else b"") for (s,e) in zip(oConstraints, oConstraints[1:])] data = data[oConstraints[-1]:] self.actions = [(data[s:e] if (e-s > 1) else "") for (s,e) in zip(oActions, oActions[1:])] data = data[oActions[-1]:] @@ -733,9 +734,9 @@ class Pass(object): def compile(self, ttFont, base, version=2.0): # build it all up backwards - oActions = reduce(lambda a, x: (a[0]+len(x), a[1]+[a[0]]), self.actions + [""], (0, []))[1] - oConstraints = reduce(lambda a, x: (a[0]+len(x), a[1]+[a[0]]), self.ruleConstraints + [""], (1, []))[1] - constraintCode = "\000" + "".join(self.ruleConstraints) + oActions = reduce(lambda a, x: (a[0]+len(x), a[1]+[a[0]]), self.actions + [b""], (0, []))[1] + oConstraints = reduce(lambda a, x: (a[0]+len(x), a[1]+[a[0]]), self.ruleConstraints + [b""], (1, []))[1] + constraintCode = b"\000" + b"".join(self.ruleConstraints) transes = [] for t in self.stateTrans: if sys.byteorder != "big": t.byteswap() @@ -761,7 +762,7 @@ class Pass(object): # now generate output data = sstruct.pack(Silf_pass_format, self) data += grUtils.bininfo(len(passRanges), 6) - data += "".join(struct.pack(">3H", *p) for p in passRanges) + data += b"".join(struct.pack(">3H", *p) for p in passRanges) data += struct.pack((">%dH" % len(oRuleMap)), *oRuleMap) flatrules = reduce(lambda a,x: a+x, self.rules, []) data += struct.pack((">%dH" % oRuleMap[-1]), *flatrules) @@ -772,8 +773,8 @@ class Pass(object): data += struct.pack(">BH", self.collisionThreshold, len(self.passConstraints)) data += struct.pack((">%dH" % (self.numRules+1)), *oConstraints) data += struct.pack((">%dH" % (self.numRules+1)), *oActions) - return data + "".join(transes) + struct.pack("B", 0) + \ - self.passConstraints + constraintCode + "".join(self.actions) + return data + b"".join(transes) + struct.pack("B", 0) + \ + self.passConstraints + constraintCode + b"".join(self.actions) def toXML(self, writer, ttFont, version=2.0): writesimple('info', self, writer, *pass_attrs_info) @@ -839,7 +840,7 @@ class Pass(object): if not isinstance(e, tuple): continue tag, a, c = e if tag == 'state': - self.rules.append(map(int, a['rules'].split(" "))) + self.rules.append([int(x) for x in a['rules'].split(" ")]) elif name == 'rules': for element in content: if not isinstance(element, tuple): continue @@ -847,8 +848,8 @@ class Pass(object): if tag != 'rule': continue self.rulePreContexts.append(int(a['precontext'])) self.ruleSortKeys.append(int(a['sortkey'])) - con = "" - act = "" + con = b"" + act = b"" for e in c: if not isinstance(e, tuple): continue tag, a, subc = e |