[gs-commits] mupdf 1.16.1.39 Update scripts to python3 with "2to3".
[email protected] (Tor Andersson)
| Newsgroups | gmane.comp.printing.ghostscript.cvs |
|---|---|
| Message-ID | <[email protected]> |
commit f28c624fb10a4d5a429341d892f6fe60f38c1304 Author: Tor Andersson <[email protected]> Date: Tue Sep 10 12:03:53 2019 +0200 Update scripts to python3 with "2to3". Python 2 is being sunset in 2020, so this is as good a time as any to switch. diff --git a/Makefile b/Makefile index c5bc541..691765c 100644 --- a/Makefile +++ b/Makefile @@ -176,7 +176,7 @@ CMAP_GEN := $(notdir $(sort $(wildcard resources/cmaps/*))) CMAP_GEN := $(CMAP_GEN:%=source/pdf/cmaps/%.h) source/pdf/cmaps/%.h: resources/cmaps/% scripts/cmapdump.py - $(QUIET_GEN) python scripts/cmapdump.py > $@ $< + $(QUIET_GEN) python3 scripts/cmapdump.py > $@ $< generate: $(CMAP_GEN) diff --git a/scripts/cmapclean.py b/scripts/cmapclean.py index f41f8af..5d9c853 100644 --- a/scripts/cmapclean.py +++ b/scripts/cmapclean.py @@ -1,3 +1,5 @@ +#!/usr/bin/env python3 + # Parse a CMap file and dump it back out. import sys @@ -41,16 +43,16 @@ def cleancmap(filename): elif len(v) <= 8: map[lo] = v[:] else: - print "/* warning: too long one-to-many mapping: %s */" % (v) + print("/* warning: too long one-to-many mapping: %s */" % (v)) def map_bfchar(lo, bf): bf = bf[1:-1] # drop < > - v = [int(bf[i:i+4],16) for i in xrange(0, len(bf), 4)] + v = [int(bf[i:i+4],16) for i in range(0, len(bf), 4)] add_bf(lo, v) def map_bfrange(lo, hi, bf): bf = bf[1:-1] # drop < > - v = [int(bf[i:i+4],16) for i in xrange(0, len(bf), 4)] + v = [int(bf[i:i+4],16) for i in range(0, len(bf), 4)] while lo <= hi: add_bf(lo, v) lo = lo + 1 @@ -116,7 +118,7 @@ def cleancmap(filename): else: ranges.append((out_lo, out_hi, out_v_lo)) - keys = map.keys() + keys = list(map.keys()) keys.sort() for code in keys: v = map[code] @@ -136,69 +138,69 @@ def cleancmap(filename): # Print CMap file - print "%!PS-Adobe-3.0 Resource-CMap" - print "%%DocumentNeededResources: procset (CIDInit)" - print "%%IncludeResource: procset (CIDInit)" - print "%%%%BeginResource: CMap (%s)" % cmapname - print "%%%%Version: %s" % cmapversion - print "%%EndComments" - print "/CIDInit /ProcSet findresource begin" - print "12 dict begin" - print "begincmap" - if usecmap: print "/%s usecmap" % usecmap - print "/CIDSystemInfo 3 dict dup begin" - print " /Registry %s def" % csi_registry - print " /Ordering %s def" % csi_ordering - print " /Supplement %s def" % csi_supplement - print "end def" - print "/CMapName /%s def" % cmapname - print "/CMapVersion %s def" % cmapversion - print "/CMapType 1 def" - print "/WMode %d def" % wmode + print("%!PS-Adobe-3.0 Resource-CMap") + print("%%DocumentNeededResources: procset (CIDInit)") + print("%%IncludeResource: procset (CIDInit)") + print("%%%%BeginResource: CMap (%s)" % cmapname) + print("%%%%Version: %s" % cmapversion) + print("%%EndComments") + print("/CIDInit /ProcSet findresource begin") + print("12 dict begin") + print("begincmap") + if usecmap: print("/%s usecmap" % usecmap) + print("/CIDSystemInfo 3 dict dup begin") + print(" /Registry %s def" % csi_registry) + print(" /Ordering %s def" % csi_ordering) + print(" /Supplement %s def" % csi_supplement) + print("end def") + print("/CMapName /%s def" % cmapname) + print("/CMapVersion %s def" % cmapversion) + print("/CMapType 1 def") + print("/WMode %d def" % wmode) if len(codespacerange): - print "%d begincodespacerange" % len(codespacerange) + print("%d begincodespacerange" % len(codespacerange)) for r in codespacerange: fmt = "<%%0%dx> <%%0%dx>" % (r[0]*2, r[0]*2) - print fmt % (r[1], r[2]) - print "endcodespacerange" + print(fmt % (r[1], r[2])) + print("endcodespacerange") if len(singles) > 0: if isbf: - print "%d beginbfchar" % len(singles) + print("%d beginbfchar" % len(singles)) for s in singles: - print "<%04x> <%04x>" % s - print "endbfchar" + print("<%04x> <%04x>" % s) + print("endbfchar") else: - print "%d begincidchar" % len(singles) + print("%d begincidchar" % len(singles)) for s in singles: - print "<%04x> %d" % s - print "endcidchar" + print("<%04x> %d" % s) + print("endcidchar") if len(ranges) > 0: if isbf: - print "%d beginbfrange" % len(ranges) + print("%d beginbfrange" % len(ranges)) for r in ranges: - print "<%04x> <%04x> <%04x>" % r - print "endbfrange" + print("<%04x> <%04x> <%04x>" % r) + print("endbfrange") else: - print "%d begincidrange" % len(ranges) + print("%d begincidrange" % len(ranges)) for r in ranges: - print "<%04x> <%04x> %d" % r - print "endcidrange" + print("<%04x> <%04x> %d" % r) + print("endcidrange") if len(mranges) > 0: - print "%d beginbfchar" % len(mranges) + print("%d beginbfchar" % len(mranges)) for cid, v in mranges: - print "<%04x> <%s>" % (cid, "".join(["%04x" % ch for ch in v])) - print "endbfchar" - - print "endcmap" - print "CMapName currentdict /CMap defineresource pop" - print "end" - print "end" - print "%%EndResource" - print "%%EOF" + print("<%04x> <%s>" % (cid, "".join(["%04x" % ch for ch in v]))) + print("endbfchar") + + print("endcmap") + print("CMapName currentdict /CMap defineresource pop") + print("end") + print("end") + print("%%EndResource") + print("%%EOF") for arg in sys.argv[1:]: cleancmap(arg) diff --git a/scripts/cmapdump.py b/scripts/cmapdump.py index 1f1c50d..b7858d8 100644 --- a/scripts/cmapdump.py +++ b/scripts/cmapdump.py @@ -1,3 +1,5 @@ +#!/usr/bin/env python3 + # Parse a CMap file and dump it as a C struct. import sys @@ -36,16 +38,16 @@ def dumpcmap(filename): elif len(v) <= 8: map[lo] = v[:] else: - print "/* warning: too long one-to-many mapping: %s */" % (v) + print("/* warning: too long one-to-many mapping: %s */" % (v)) def map_bfchar(lo, bf): bf = bf[1:-1] # drop < > - v = [int(bf[i:i+4],16) for i in xrange(0, len(bf), 4)] + v = [int(bf[i:i+4],16) for i in range(0, len(bf), 4)] add_bf(lo, v) def map_bfrange(lo, hi, bf): bf = bf[1:-1] # drop < > - v = [int(bf[i:i+4],16) for i in xrange(0, len(bf), 4)] + v = [int(bf[i:i+4],16) for i in range(0, len(bf), 4)] while lo <= hi: add_bf(lo, v) lo = lo + 1 @@ -111,7 +113,7 @@ def dumpcmap(filename): else: ranges.append((out_lo, out_hi, out_v_lo)) - keys = map.keys() + keys = list(map.keys()) keys.sort() for code in keys: v = map[code] @@ -135,29 +137,29 @@ def dumpcmap(filename): cname = cmapname.replace('-', '_') - print - print "/*", cmapname, "*/" - print + print() + print("/*", cmapname, "*/") + print() if len(ranges) > 0: - print "static const pdf_range cmap_%s_ranges[] = {" % cname + print("static const pdf_range cmap_%s_ranges[] = {" % cname) for r in ranges: - print "{%d,%d,%d}," % r - print "};" - print + print("{%d,%d,%d}," % r) + print("};") + print() if len(xranges) > 0: - print "static const pdf_xrange cmap_%s_xranges[] = {" % cname + print("static const pdf_xrange cmap_%s_xranges[] = {" % cname) for r in xranges: - print "{%d,%d,%d}," % r - print "};" - print + print("{%d,%d,%d}," % r) + print("};") + print() if len(mranges) > 0: - print "static const pdf_mrange cmap_%s_mranges[] = {" % cname + print("static const pdf_mrange cmap_%s_mranges[] = {" % cname) for r in mranges: - print "{%d,%d}," % r - print "};" - print - print "static const int cmap_%s_table[] = {" % cname + print("{%d,%d}," % r) + print("};") + print() + print("static const int cmap_%s_table[] = {" % cname) n = mdata[0] i = 0 for r in mdata: @@ -169,47 +171,47 @@ def dumpcmap(filename): i = 1 n = r sys.stdout.write("\n") - print "};" - print - - print "static pdf_cmap cmap_%s = {" % cname - print "\t{ -1, pdf_drop_cmap_imp }," - print "\t/* cmapname */ \"%s\"," % cmapname - print "\t/* usecmap */ \"%s\", NULL," % usecmap - print "\t/* wmode */ %d," % wmode - print "\t/* codespaces */ %d, {" % len(codespacerange) + print("};") + print() + + print("static pdf_cmap cmap_%s = {" % cname) + print("\t{ -1, pdf_drop_cmap_imp },") + print("\t/* cmapname */ \"%s\"," % cmapname) + print("\t/* usecmap */ \"%s\", NULL," % usecmap) + print("\t/* wmode */ %d," % wmode) + print("\t/* codespaces */ %d, {" % len(codespacerange)) if len(codespacerange) > 0: for codespace in codespacerange: fmt = "\t\t{ %%d, 0x%%0%dx, 0x%%0%dx }," % (codespace[0]*2, codespace[0]*2) - print fmt % codespace + print(fmt % codespace) else: - print "\t\t{ 0, 0, 0 }," - print "\t}," + print("\t\t{ 0, 0, 0 },") + print("\t},") if len(ranges) > 0: - print "\t%d, %d, (pdf_range*)cmap_%s_ranges," % (len(ranges),len(ranges),cname) + print("\t%d, %d, (pdf_range*)cmap_%s_ranges," % (len(ranges),len(ranges),cname)) else: - print "\t0, 0, NULL, /* ranges */" + print("\t0, 0, NULL, /* ranges */") if len(xranges) > 0: - print "\t%d, %d, (pdf_xrange*)cmap_%s_xranges," % (len(xranges),len(xranges),cname) + print("\t%d, %d, (pdf_xrange*)cmap_%s_xranges," % (len(xranges),len(xranges),cname)) else: - print "\t0, 0, NULL, /* xranges */" + print("\t0, 0, NULL, /* xranges */") if len(mranges) > 0: - print "\t%d, %d, (pdf_mrange*)cmap_%s_mranges," % (len(mranges),len(mranges),cname) + print("\t%d, %d, (pdf_mrange*)cmap_%s_mranges," % (len(mranges),len(mranges),cname)) else: - print "\t0, 0, NULL, /* mranges */" + print("\t0, 0, NULL, /* mranges */") if len(mdata) > 0: - print "\t%d, %d, (int*)cmap_%s_table," % (len(mdata),len(mdata),cname) + print("\t%d, %d, (int*)cmap_%s_table," % (len(mdata),len(mdata),cname)) else: - print "\t0, 0, NULL, /* table */" + print("\t0, 0, NULL, /* table */") - print "\t0, 0, 0, NULL /* splay tree */" - print "};" + print("\t0, 0, 0, NULL /* splay tree */") + print("};") -print "/* This is an automatically generated file. Do not edit. */" +print("/* This is an automatically generated file. Do not edit. */") for arg in sys.argv[1:]: dumpcmap(arg) diff --git a/scripts/cmapflatten.py b/scripts/cmapflatten.py index 8bb2193..a8014a3 100644 --- a/scripts/cmapflatten.py +++ b/scripts/cmapflatten.py @@ -1,3 +1,5 @@ +#!/usr/bin/env python3 + # Parse a Uni* CMap file and flatten it. # # The Uni* CMap files only have 'cidchar' and 'cidrange' sections, never @@ -62,47 +64,47 @@ def flattencmap(filename): # Print flattened CMap file - print "%!PS-Adobe-3.0 Resource-CMap" - print "%%DocumentNeededResources: procset (CIDInit)" - print "%%IncludeResource: procset (CIDInit)" - print "%%%%BeginResource: CMap (%s)" % cmapname - print "%%%%Version: %s" % cmapversion - print "%%EndComments" - print "/CIDInit /ProcSet findresource begin" - print "12 dict begin" - print "begincmap" - if usecmap: print "/%s usecmap" % usecmap - print "/CIDSystemInfo 3 dict dup begin" - print " /Registry %s def" % csi_registry - print " /Ordering %s def" % csi_ordering - print " /Supplement %s def" % csi_supplement - print "end def" - print "/CMapName /%s def" % cmapname - print "/CMapVersion %s def" % cmapversion - print "/CMapType 1 def" - print "/WMode %d def" % wmode + print("%!PS-Adobe-3.0 Resource-CMap") + print("%%DocumentNeededResources: procset (CIDInit)") + print("%%IncludeResource: procset (CIDInit)") + print("%%%%BeginResource: CMap (%s)" % cmapname) + print("%%%%Version: %s" % cmapversion) + print("%%EndComments") + print("/CIDInit /ProcSet findresource begin") + print("12 dict begin") + print("begincmap") + if usecmap: print("/%s usecmap" % usecmap) + print("/CIDSystemInfo 3 dict dup begin") + print(" /Registry %s def" % csi_registry) + print(" /Ordering %s def" % csi_ordering) + print(" /Supplement %s def" % csi_supplement) + print("end def") + print("/CMapName /%s def" % cmapname) + print("/CMapVersion %s def" % cmapversion) + print("/CMapType 1 def") + print("/WMode %d def" % wmode) if len(codespacerange): - print "%d begincodespacerange" % len(codespacerange) + print("%d begincodespacerange" % len(codespacerange)) for r in codespacerange: fmt = "<%%0%dx> <%%0%dx>" % (r[0]*2, r[0]*2) - print fmt % (r[1], r[2]) - print "endcodespacerange" + print(fmt % (r[1], r[2])) + print("endcodespacerange") - keys = map.keys() + keys = list(map.keys()) keys.sort() - print "%d begincidchar" % len(keys) + print("%d begincidchar" % len(keys)) for code in keys: v = map[code] - print "<%04x> %d" % (code, v) - print "endcidchar" + print("<%04x> %d" % (code, v)) + print("endcidchar") - print "endcmap" - print "CMapName currentdict /CMap defineresource pop" - print "end" - print "end" - print "%%EndResource" - print "%%EOF" + print("endcmap") + print("CMapName currentdict /CMap defineresource pop") + print("end") + print("end") + print("%%EndResource") + print("%%EOF") for arg in sys.argv[1:]: flattencmap(arg) diff --git a/scripts/cmapshare.py b/scripts/cmapshare.py index f5e62d4..954964f 100644 --- a/scripts/cmapshare.py +++ b/scripts/cmapshare.py @@ -1,3 +1,5 @@ +#!/usr/bin/env python3 + # Find and extract common CMap subsets. # Taken flattened CMaps as input, using only the 'cidchar' sections. # The outputs are truncated; so use 'cmapflatten.py' to clean them up. @@ -38,14 +40,14 @@ def print_cmap(filename, prologue, cmap): out = open(filename, "w") for line in prologue: if not line.endswith("usecmap"): - print >>out, line + print(line, file=out) if line == 'begincmap': - print >>out, "/"+common_name, "usecmap" - print >>out, len(cmap), "begincidchar" + print("/"+common_name, "usecmap", file=out) + print(len(cmap), "begincidchar", file=out) for line in sorted(cmap): - print >>out, line + print(line, file=out) for line in epilogue: - print >>out, line + print(line, file=out) # Print common subset print_cmap(sys.argv[1], ["/CMapName /%s" % common_name], common) diff --git a/scripts/glyphdump.py b/scripts/glyphdump.py index 910ffba..9564be0 100755 --- a/scripts/glyphdump.py +++ b/scripts/glyphdump.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python3 import sys @@ -9,8 +9,8 @@ multi_from_name = [] name_from_single = {} code_from_multi = {} -print "/* This file was generated by scripts/glyphdump.py. Do not edit. */" -print +print("/* This file was generated by scripts/glyphdump.py. Do not edit. */") +print() def readlist(filename): f = open(filename, "r") @@ -20,7 +20,7 @@ def readlist(filename): line = line[:-1] name, alts = line.split(';') for list in alts.split(','): - list = map(lambda x: int(x, 16), list.split(' ')) + list = [int(x, 16) for x in list.split(' ')] okay = True for ucs in list: if ucs > 0xffff: @@ -68,7 +68,7 @@ for name, ucslist in multi_from_name: multicodes.append(" 0x%04x," % ucs) multicodes.append("\n"); -keys = name_from_single.keys() +keys = list(name_from_single.keys()) keys.sort() dupoffsets = [] dupnames = [] @@ -81,31 +81,31 @@ for ucs in keys: dupnames.append("\"%s\", " % name) dupnames.append("0,\n") -print "static const char *single_name_list[] = {" +print("static const char *single_name_list[] = {") dumplist(singlenames) -print "};" -print -print "static const unsigned short single_code_list[] = {" +print("};") +print() +print("static const unsigned short single_code_list[] = {") dumplist(singlecodes) -print "};" -print +print("};") +print() if False: - print "static const char *multi_name_list[] = {" + print("static const char *multi_name_list[] = {") dumplist(multinames) - print "};" - print - print "static const unsigned short multi_offset_list[] = {" + print("};") + print() + print("static const unsigned short multi_offset_list[] = {") dumplist(multioffsets) - print "};" - print - print "static const unsigned short multi_code_list[] = {" + print("};") + print() + print("static const unsigned short multi_code_list[] = {") dumplist(multicodes) - print "};" - print -print "static const unsigned short agl_dup_offsets[] = {" + print("};") + print() +print("static const unsigned short agl_dup_offsets[] = {") dumplist(dupoffsets) -print "};" -print -print "static const char *agl_dup_names[] = {" +print("};") +print() +print("static const char *agl_dup_names[] = {") dumplist(dupnames) -print "};" +print("};") diff --git a/scripts/makeencoding.py b/scripts/makeencoding.py index cf24b57..3dd7620 100644 --- a/scripts/makeencoding.py +++ b/scripts/makeencoding.py @@ -1,3 +1,5 @@ +#!/usr/bin/env python3 + # Convert unicode mapping table to C arrays mapping glyph names and unicode values. # # ftp://ftp.unicode.org/Public/MAPPINGS/VENDORS/MISC/KOI8-U.TXT @@ -45,20 +47,20 @@ def load_table(fn): return table def dump_table(name, table): - print "unsigned short fz_unicode_from_%s[256] = {" % name + print("unsigned short fz_unicode_from_%s[256] = {" % name) for u in table: - print '\t%d,' % u - print "};" - print + print('\t%d,' % u) + print("};") + print() - print "const char *fz_glyph_name_from_%s[%d] = {" % (name, len(table)) + print("const char *fz_glyph_name_from_%s[%d] = {" % (name, len(table))) for u in table: if u in glyphs: - print '\t"%s",' % glyphs[u] + print('\t"%s",' % glyphs[u]) else: - print '\t_notdef,' - print "};" - print + print('\t_notdef,') + print("};") + print() rev = [] i = 0 @@ -69,11 +71,11 @@ def dump_table(name, table): i = i + 1 rev.sort() - print "static const struct { unsigned short u, c; } %s_from_unicode[] = {" % name + print("static const struct { unsigned short u, c; } %s_from_unicode[] = {" % name) for s in rev: - print "\t" + s - print "};" - print + print("\t" + s) + print("};") + print() dump_table("iso8859_1", load_table("scripts/8859-1.TXT")) dump_table("iso8859_7", load_table("scripts/8859-7.TXT")) diff --git a/scripts/makenoto.py b/scripts/makenoto.py index 8bdc95a..692a81d 100644 --- a/scripts/makenoto.py +++ b/scripts/makenoto.py @@ -1,3 +1,5 @@ +#!/usr/bin/env python3 + import sys, glob, os scripts = [] @@ -40,13 +42,13 @@ fonts = glob.glob("resources/fonts/noto/*.?tf") lower = {} for f in fonts: lower[f.lower()] = os.path.basename(f) -unused = lower.keys() +unused = list(lower.keys()) unused.sort() def casefont(us, ss, n): if n in lower: nn = lower[n].replace('.','_').replace('-','_') - print "case %s: RETURN(noto_%s);" % (us,nn) + print("case %s: RETURN(noto_%s);" % (us,nn)) del lower[n] return True return False @@ -64,13 +66,13 @@ for us in scripts: found = True break if not found: - print "case %s: break;" % us + print("case %s: break;" % us) for font in list: if font.lower() in unused: unused.remove(font.lower()) for f in unused: - print "// unmapped font:", lower[f] + print("// unmapped font:", lower[f]) for f in lower: if not f in unused: - print "// unused font file:", lower[f] + print("// unused font file:", lower[f]) diff --git a/scripts/makesubset.py b/scripts/makesubset.py index 7e12b14..5572da5 100644 --- a/scripts/makesubset.py +++ b/scripts/makesubset.py @@ -1,3 +1,5 @@ +#!/usr/bin/env python3 + # Convert MES-2 (or WGL4) character set to list of glyphs for font subsetting. # Also add small-caps glyph names for small letters and ligatures. @@ -50,7 +52,7 @@ def load_ligs(): table['f_f_l.sc'] = 0xFB04 if len(sys.argv) < 2: - print >>sys.stderr, 'usage: python scripts/makesubset.py scripts/MES-2.TXT' + print('usage: python scripts/makesubset.py scripts/MES-2.TXT', file=sys.stderr) else: for input in sys.argv[1:]: if input == '-sc': @@ -62,13 +64,13 @@ else: if len(sys.argv) > 2 and sys.argv[2] == '-scdump': smcp = [] - for n in table.keys(): + for n in list(table.keys()): u = table[n] if u > 0 and n.endswith('.sc') and not n.startswith('uni'): smcp.append('{0x%04X, "%s"},' % (u,n)) smcp.sort() - print '\n\t'.join(smcp) + print('\n\t'.join(smcp)) else: - list = table.keys() + list = list(table.keys()) list.sort() - print ','.join(list) + print(','.join(list)) http://git.ghostscript.com/?p=mupdf.git;a=commit;h=f28c624fb10a4d5a429341d892f6fe60f38c1304 -- MuPDF library Artifex Software, Inc.