aboutsummaryrefslogtreecommitdiff
path: root/Lib/fontTools/ttLib/tables/S__i_l_f.py
diff options
context:
space:
mode:
authorHaibo Huang <hhb@google.com>2019-01-08 14:14:22 -0800
committerHaibo Huang <hhb@google.com>2019-01-08 14:22:09 -0800
commit79019a0d336efb722a395ed2db4c5d638104494e (patch)
treec53dd801899ade2bca1472885cc513b49469348c /Lib/fontTools/ttLib/tables/S__i_l_f.py
parent69c9acab6a81c7bce36329972332cdbd0d11f449 (diff)
downloadfonttools-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.py53
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