Mercurial > hgrepos > Python2 > PyMuPDF
diff mupdf-source/scripts/glyphdump.py @ 2:b50eed0cc0ef upstream
ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
The directory name has changed: no version number in the expanded directory now.
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Mon, 15 Sep 2025 11:43:07 +0200 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mupdf-source/scripts/glyphdump.py Mon Sep 15 11:43:07 2025 +0200 @@ -0,0 +1,111 @@ +#!/usr/bin/env python3 + +import sys + +agl = [] +aglseen = {} +single_from_name = [] +multi_from_name = [] +name_from_single = {} +code_from_multi = {} + +print("/* This file was generated by scripts/glyphdump.py. Do not edit. */") +print() + +def readlist(filename): + f = open(filename, "r") + for line in f.readlines(): + if line[0] == '#': + continue + line = line[:-1] + name, alts = line.split(';') + for list in alts.split(','): + list = [int(x, 16) for x in list.split(' ')] + okay = True + for ucs in list: + if ucs > 0xffff: + okay = False + #if ucs >= 0xe000 and ucs <= 0xf8ff: + # okay = False + if okay and name not in aglseen: + agl.append((name, list)) + aglseen[name] = True + +readlist("scripts/glyphlist.txt") +readlist("scripts/texglyphlist.txt") + +for name, ucslist in agl: + num = len(ucslist) + if num == 1: + ucs = ucslist[0] + single_from_name.append((name, ucs)) + if ucs not in name_from_single: + name_from_single[ucs] = [] + name_from_single[ucs].append(name) + else: + multi_from_name.append((name, ucslist)) + +def dumplist(list): + for item in list: + sys.stdout.write(item) + +single_from_name.sort() +singlenames = [] +singlecodes = [] +for name, ucs in single_from_name: + singlenames.append("\"%s\",\n" % name) + singlecodes.append("0x%04x,\n" % ucs) + +multi_from_name.sort() +multinames = [] +multioffsets = [] +multicodes = [] +for name, ucslist in multi_from_name: + multinames.append("\"%s\",\n" % name) + multioffsets.append("%d,\n" % len(multicodes)) + multicodes.append("%d," % len(ucslist)) + for ucs in ucslist: + multicodes.append(" 0x%04x," % ucs) + multicodes.append("\n"); + +keys = list(name_from_single.keys()) +keys.sort() +dupoffsets = [] +dupnames = [] +for ucs in keys: + list = name_from_single[ucs] + if len(list) > 1: + ofs = len(dupnames) + dupoffsets.append("0x%04x, %d,\n" % (ucs, ofs)) + for name in list: + dupnames.append("\"%s\", " % name) + dupnames.append("0,\n") + +print("static const char *single_name_list[] = {") +dumplist(singlenames) +print("};") +print() +print("static const unsigned short single_code_list[] = {") +dumplist(singlecodes) +print("};") +print() +if False: + print("static const char *multi_name_list[] = {") + dumplist(multinames) + print("};") + print() + print("static const unsigned short multi_offset_list[] = {") + dumplist(multioffsets) + print("};") + print() + print("static const unsigned short multi_code_list[] = {") + dumplist(multicodes) + print("};") + print() +print("static const unsigned short agl_dup_offsets[] = {") +dumplist(dupoffsets) +print("};") +print() +print("static const char *agl_dup_names[] = {") +dumplist(dupnames) +print("};")
