diff --git a/Lib/fontTools/encodings/codecs.py b/Lib/fontTools/encodings/codecs.py index 857791eea..30e46914e 100644 --- a/Lib/fontTools/encodings/codecs.py +++ b/Lib/fontTools/encodings/codecs.py @@ -12,7 +12,7 @@ class ExtendCodec(codecs.Codec): self.name = name self.base_encoding = base_encoding self.mapping = mapping - self.reverse = dict((v,k) for k,v in mapping.items()) + self.reverse = {v:k for k,v in mapping.items()} self.max_len = max(len(v) for v in mapping.values()) self.info = codecs.CodecInfo(name=self.name, encode=self.encode, decode=self.decode) codecs.register_error(name, self.error) diff --git a/Lib/fontTools/merge.py b/Lib/fontTools/merge.py index 5f9b4c445..c621f5e55 100644 --- a/Lib/fontTools/merge.py +++ b/Lib/fontTools/merge.py @@ -463,8 +463,8 @@ def merge(self, m, tables): for i,(table,dups) in enumerate(zip(tables, m.duplicateGlyphsPerFont)): if not dups: continue assert (table is not None and table is not NotImplemented), "Have duplicates to resolve for font %d but no GSUB" % (i + 1) - lookupMap = dict((id(v),v) for v in table.table.LookupList.Lookup) - featureMap = dict((id(v),v) for v in table.table.FeatureList.FeatureRecord) + lookupMap = {id(v):v for v in table.table.LookupList.Lookup} + featureMap = {id(v):v for v in table.table.FeatureList.FeatureRecord} synthFeature = None synthLookup = None for script in table.table.ScriptList.ScriptRecord: @@ -830,14 +830,14 @@ class Merger(object): if not t: continue if t.table.LookupList: - lookupMap = dict((i,id(v)) for i,v in enumerate(t.table.LookupList.Lookup)) + lookupMap = {i:id(v) for i,v in enumerate(t.table.LookupList.Lookup)} t.table.LookupList.mapLookups(lookupMap) if t.table.FeatureList: # XXX Handle present FeatureList but absent LookupList t.table.FeatureList.mapLookups(lookupMap) if t.table.FeatureList and t.table.ScriptList: - featureMap = dict((i,id(v)) for i,v in enumerate(t.table.FeatureList.FeatureRecord)) + featureMap = {i:id(v) for i,v in enumerate(t.table.FeatureList.FeatureRecord)} t.table.ScriptList.mapFeatures(featureMap) # TODO GDEF/Lookup MarkFilteringSets @@ -855,7 +855,7 @@ class Merger(object): if not t: continue if t.table.LookupList: - lookupMap = dict((id(v),i) for i,v in enumerate(t.table.LookupList.Lookup)) + lookupMap = {id(v):i for i,v in enumerate(t.table.LookupList.Lookup)} t.table.LookupList.mapLookups(lookupMap) if t.table.FeatureList: # XXX Handle present FeatureList but absent LookupList @@ -863,7 +863,7 @@ class Merger(object): if t.table.FeatureList and t.table.ScriptList: # XXX Handle present ScriptList but absent FeatureList - featureMap = dict((id(v),i) for i,v in enumerate(t.table.FeatureList.FeatureRecord)) + featureMap = {id(v):i for i,v in enumerate(t.table.FeatureList.FeatureRecord)} t.table.ScriptList.mapFeatures(featureMap) # TODO GDEF/Lookup MarkFilteringSets diff --git a/Lib/fontTools/misc/psCharStrings.py b/Lib/fontTools/misc/psCharStrings.py index 5ec1c0879..c1d2c5e46 100644 --- a/Lib/fontTools/misc/psCharStrings.py +++ b/Lib/fontTools/misc/psCharStrings.py @@ -83,7 +83,7 @@ cffDictOperandEncoding[255] = read_reserved realNibbles = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.', 'E', 'E-', None, '-'] -realNibblesDict = dict((v,i) for i,v in enumerate(realNibbles)) +realNibblesDict = {v:i for i,v in enumerate(realNibbles)} class ByteCodeBase(object): diff --git a/Lib/fontTools/subset.py b/Lib/fontTools/subset.py index c2b5a4b71..2c821f4bf 100644 --- a/Lib/fontTools/subset.py +++ b/Lib/fontTools/subset.py @@ -369,7 +369,7 @@ def intersect_class(self, glyphs, klass): @_add_method(otTables.ClassDef) def subset(self, glyphs, remap=False): """Returns ascending list of remaining classes.""" - self.classDefs = dict((g,v) for g,v in self.classDefs.items() if g in glyphs) + self.classDefs = {g:v for g,v in self.classDefs.items() if g in glyphs} # Note: while class 0 has the special meaning of "not matched", # if no glyph will ever /not match/, we can optimize class 0 out too. indices = _uniq_sort( @@ -382,8 +382,7 @@ def subset(self, glyphs, remap=False): @_add_method(otTables.ClassDef) def remap(self, class_map): """Remaps classes.""" - self.classDefs = dict((g,class_map.index(v)) - for g,v in self.classDefs.items()) + self.classDefs = {g:class_map.index(v) for g,v in self.classDefs.items()} @_add_method(otTables.SingleSubst) def closure_glyphs(self, s, cur_glyphs): @@ -391,8 +390,8 @@ def closure_glyphs(self, s, cur_glyphs): @_add_method(otTables.SingleSubst) def subset_glyphs(self, s): - self.mapping = dict((g,v) for g,v in self.mapping.items() - if g in s.glyphs and v in s.glyphs) + self.mapping = {g:v for g,v in self.mapping.items() + if g in s.glyphs and v in s.glyphs} return bool(self.mapping) @_add_method(otTables.MultipleSubst) @@ -419,10 +418,10 @@ def closure_glyphs(self, s, cur_glyphs): @_add_method(otTables.AlternateSubst) def subset_glyphs(self, s): - self.alternates = dict((g,vlist) - for g,vlist in self.alternates.items() - if g in s.glyphs and - all(v in s.glyphs for v in vlist)) + self.alternates = {g:vlist + for g,vlist in self.alternates.items() + if g in s.glyphs and + all(v in s.glyphs for v in vlist)} return bool(self.alternates) @_add_method(otTables.LigatureSubst) @@ -434,13 +433,13 @@ def closure_glyphs(self, s, cur_glyphs): @_add_method(otTables.LigatureSubst) def subset_glyphs(self, s): - self.ligatures = dict((g,v) for g,v in self.ligatures.items() - if g in s.glyphs) - self.ligatures = dict((g,[seq for seq in seqs - if seq.LigGlyph in s.glyphs and - all(c in s.glyphs for c in seq.Component)]) - for g,seqs in self.ligatures.items()) - self.ligatures = dict((g,v) for g,v in self.ligatures.items() if v) + self.ligatures = {g:v for g,v in self.ligatures.items() + if g in s.glyphs} + self.ligatures = {g:[seq for seq in seqs + if seq.LigGlyph in s.glyphs and + all(c in s.glyphs for c in seq.Component)] + for g,seqs in self.ligatures.items()} + self.ligatures = {g:v for g,v in self.ligatures.items() if v} return bool(self.ligatures) @_add_method(otTables.ReverseChainSingleSubst) @@ -1482,12 +1481,12 @@ def subset_glyphs(self, s): table.LigCaretList.LigGlyphCount = len(table.LigCaretList.LigGlyph) if table.MarkAttachClassDef: table.MarkAttachClassDef.classDefs = \ - dict((g,v) for g,v in table.MarkAttachClassDef.classDefs.items() - if g in glyphs) + {g:v for g,v in table.MarkAttachClassDef.classDefs.items() + if g in glyphs} if table.GlyphClassDef: table.GlyphClassDef.classDefs = \ - dict((g,v) for g,v in table.GlyphClassDef.classDefs.items() - if g in glyphs) + {g:v for g,v in table.GlyphClassDef.classDefs.items() + if g in glyphs} if table.AttachList: indices = table.AttachList.Coverage.subset(glyphs) GlyphCount = table.AttachList.GlyphCount @@ -1538,31 +1537,31 @@ def prune_pre_subset(self, options): def subset_glyphs(self, s): glyphs = s.glyphs_gsubed for t in self.kernTables: - t.kernTable = dict(((a,b),v) for (a,b),v in t.kernTable.items() - if a in glyphs and b in glyphs) + t.kernTable = {(a,b):v for (a,b),v in t.kernTable.items() + if a in glyphs and b in glyphs} self.kernTables = [t for t in self.kernTables if t.kernTable] return bool(self.kernTables) @_add_method(ttLib.getTableClass('vmtx')) def subset_glyphs(self, s): - self.metrics = dict((g,v) for g,v in self.metrics.items() if g in s.glyphs) + self.metrics = {g:v for g,v in self.metrics.items() if g in s.glyphs} return bool(self.metrics) @_add_method(ttLib.getTableClass('hmtx')) def subset_glyphs(self, s): - self.metrics = dict((g,v) for g,v in self.metrics.items() if g in s.glyphs) + self.metrics = {g:v for g,v in self.metrics.items() if g in s.glyphs} return True # Required table @_add_method(ttLib.getTableClass('hdmx')) def subset_glyphs(self, s): - self.hdmx = dict((sz,dict((g,v) for g,v in l.items() if g in s.glyphs)) - for sz,l in self.hdmx.items()) + self.hdmx = {sz:{g:v for g,v in l.items() if g in s.glyphs} + for sz,l in self.hdmx.items()} return bool(self.hdmx) @_add_method(ttLib.getTableClass('VORG')) def subset_glyphs(self, s): - self.VOriginRecords = dict((g,v) for g,v in self.VOriginRecords.items() - if g in s.glyphs) + self.VOriginRecords = {g:v for g,v in self.VOriginRecords.items() + if g in s.glyphs} self.numVertOriginYMetrics = len(self.VOriginRecords) return True # Never drop; has default metrics @@ -1632,7 +1631,7 @@ def prune_pre_subset(self, options): @_add_method(ttLib.getTableClass('glyf')) def subset_glyphs(self, s): - self.glyphs = dict((g,v) for g,v in self.glyphs.items() if g in s.glyphs) + self.glyphs = {g:v for g,v in self.glyphs.items() if g in s.glyphs} indices = [i for i,g in enumerate(self.glyphOrder) if g in s.glyphs] for v in self.glyphs.values(): if hasattr(v, "data"): @@ -1695,13 +1694,13 @@ def subset_glyphs(self, s): #sel.format = None sel.format = 3 sel.gidArray = [sel.gidArray[i] for i in indices] - cs.charStrings = dict((g,indices.index(v)) - for g,v in cs.charStrings.items() - if g in s.glyphs) + cs.charStrings = {g:indices.index(v) + for g,v in cs.charStrings.items() + if g in s.glyphs} else: - cs.charStrings = dict((g,v) - for g,v in cs.charStrings.items() - if g in s.glyphs) + cs.charStrings = {g:v + for g,v in cs.charStrings.items() + if g in s.glyphs} font.charset = [g for g in font.charset if g in s.glyphs] font.numGlyphs = len(font.charset) @@ -2129,16 +2128,16 @@ def subset_glyphs(self, s): if t.format == 14: # TODO(behdad) We drop all the default-UVS mappings # for glyphs_requested. I don't think we care about that... - t.uvsDict = dict((v,[(u,g) for u,g in l - if g in s.glyphs or u in s.unicodes_requested]) - for v,l in t.uvsDict.items()) - t.uvsDict = dict((v,l) for v,l in t.uvsDict.items() if l) + t.uvsDict = {v:[(u,g) for u,g in l + if g in s.glyphs or u in s.unicodes_requested] + for v,l in t.uvsDict.items()} + t.uvsDict = {v:l for v,l in t.uvsDict.items() if l} elif t.isUnicode(): - t.cmap = dict((u,g) for u,g in t.cmap.items() - if g in s.glyphs_requested or u in s.unicodes_requested) + t.cmap = {u:g for u,g in t.cmap.items() + if g in s.glyphs_requested or u in s.unicodes_requested} else: - t.cmap = dict((u,g) for u,g in t.cmap.items() - if g in s.glyphs_requested) + t.cmap = {u:g for u,g in t.cmap.items() + if g in s.glyphs_requested} self.tables = [t for t in self.tables if (t.cmap if t.format != 14 else t.uvsDict)] self.numSubTables = len(self.tables) diff --git a/Lib/fontTools/ttLib/tables/_g_v_a_r.py b/Lib/fontTools/ttLib/tables/_g_v_a_r.py index 67d378bf8..1cf509cef 100644 --- a/Lib/fontTools/ttLib/tables/_g_v_a_r.py +++ b/Lib/fontTools/ttLib/tables/_g_v_a_r.py @@ -55,7 +55,7 @@ class table__g_v_a_r(DefaultTable.DefaultTable): axisTags = [axis.AxisTag for axis in ttFont["fvar"].table.VariationAxis] sharedCoords = self.compileSharedCoords_(axisTags) - sharedCoordIndices = dict([(coord, i) for i, coord in enumerate(sharedCoords)]) + sharedCoordIndices = {coord:i for i, coord in enumerate(sharedCoords)} sharedCoordSize = sum([len(c) for c in sharedCoords]) compiledGlyphs = self.compileGlyphs_(ttFont, axisTags, sharedCoordIndices) diff --git a/Lib/fontTools/ttLib/tables/_g_v_a_r_test.py b/Lib/fontTools/ttLib/tables/_g_v_a_r_test.py index 05b9c59f7..7148e0189 100644 --- a/Lib/fontTools/ttLib/tables/_g_v_a_r_test.py +++ b/Lib/fontTools/ttLib/tables/_g_v_a_r_test.py @@ -363,7 +363,7 @@ class GlyphVariationTest(unittest.TestCase): # Make sure we are not affected by https://github.com/behdad/fonttools/issues/286 data = deHexStr("7F B9 80 35") values, _ = GlyphVariation.decompileCoord_(["wght", "wdth"], data, 0) - axisValues = dict([(axis, (val, val, val)) for axis, val in values.items()]) + axisValues = {axis:(val, val, val) for axis, val in values.items()} gvar = GlyphVariation(axisValues, [None] * 4) self.assertEqual("7F B9 80 35", hexencode(gvar.compileCoord(["wght", "wdth"])))