diff options
Diffstat (limited to 'Lib/fontTools/ttLib/tables/S__i_l_l.py')
-rw-r--r-- | Lib/fontTools/ttLib/tables/S__i_l_l.py | 57 |
1 files changed, 32 insertions, 25 deletions
diff --git a/Lib/fontTools/ttLib/tables/S__i_l_l.py b/Lib/fontTools/ttLib/tables/S__i_l_l.py index 5ab9ee34..12b0b8f6 100644 --- a/Lib/fontTools/ttLib/tables/S__i_l_l.py +++ b/Lib/fontTools/ttLib/tables/S__i_l_l.py @@ -5,13 +5,13 @@ from . import DefaultTable from . import grUtils import struct -Sill_hdr = ''' +Sill_hdr = """ > version: 16.16F -''' +""" -class table_S__i_l_l(DefaultTable.DefaultTable): +class table_S__i_l_l(DefaultTable.DefaultTable): def __init__(self, tag=None): DefaultTable.DefaultTable.__init__(self, tag) self.langs = {} @@ -19,26 +19,27 @@ class table_S__i_l_l(DefaultTable.DefaultTable): def decompile(self, data, ttFont): (_, data) = sstruct.unpack2(Sill_hdr, data, self) self.version = float(floatToFixedToStr(self.version, precisionBits=16)) - numLangs, = struct.unpack('>H', data[:2]) + (numLangs,) = struct.unpack(">H", data[:2]) data = data[8:] maxsetting = 0 langinfo = [] for i in range(numLangs): - (langcode, numsettings, offset) = struct.unpack(">4sHH", - data[i * 8:(i+1) * 8]) + (langcode, numsettings, offset) = struct.unpack( + ">4sHH", data[i * 8 : (i + 1) * 8] + ) offset = int(offset / 8) - (numLangs + 1) - langcode = langcode.replace(b'\000', b'') + langcode = langcode.replace(b"\000", b"") langinfo.append((langcode.decode("utf-8"), numsettings, offset)) maxsetting = max(maxsetting, offset + numsettings) - data = data[numLangs * 8:] + data = data[numLangs * 8 :] finfo = [] for i in range(maxsetting): - (fid, val, _) = struct.unpack(">LHH", data[i * 8:(i+1) * 8]) + (fid, val, _) = struct.unpack(">LHH", data[i * 8 : (i + 1) * 8]) finfo.append((fid, val)) self.langs = {} for c, n, o in langinfo: self.langs[c] = [] - for i in range(o, o+n): + for i in range(o, o + n): self.langs[c].append(finfo[i]) def compile(self, ttFont): @@ -46,35 +47,41 @@ class table_S__i_l_l(DefaultTable.DefaultTable): fdat = b"" offset = len(self.langs) for c, inf in sorted(self.langs.items()): - ldat += struct.pack(">4sHH", c.encode('utf8'), len(inf), 8 * offset + 20) + ldat += struct.pack(">4sHH", c.encode("utf8"), len(inf), 8 * offset + 20) for fid, val in inf: fdat += struct.pack(">LHH", fid, val, 0) offset += len(inf) ldat += struct.pack(">LHH", 0x80808080, 0, 8 * offset + 20) - return sstruct.pack(Sill_hdr, self) + grUtils.bininfo(len(self.langs)) + \ - ldat + fdat + return ( + sstruct.pack(Sill_hdr, self) + + grUtils.bininfo(len(self.langs)) + + ldat + + fdat + ) def toXML(self, writer, ttFont): - writer.simpletag('version', version=self.version) + writer.simpletag("version", version=self.version) writer.newline() for c, inf in sorted(self.langs.items()): - writer.begintag('lang', name=c) + writer.begintag("lang", name=c) writer.newline() for fid, val in inf: - writer.simpletag('feature', fid=grUtils.num2tag(fid), val=val) + writer.simpletag("feature", fid=grUtils.num2tag(fid), val=val) writer.newline() - writer.endtag('lang') + writer.endtag("lang") writer.newline() def fromXML(self, name, attrs, content, ttFont): - if name == 'version': - self.version = float(safeEval(attrs['version'])) - elif name == 'lang': - c = attrs['name'] + if name == "version": + self.version = float(safeEval(attrs["version"])) + elif name == "lang": + c = attrs["name"] self.langs[c] = [] for element in content: - if not isinstance(element, tuple): continue + if not isinstance(element, tuple): + continue tag, a, subcontent = element - if tag == 'feature': - self.langs[c].append((grUtils.tag2num(a['fid']), - int(safeEval(a['val'])))) + if tag == "feature": + self.langs[c].append( + (grUtils.tag2num(a["fid"]), int(safeEval(a["val"]))) + ) |