diff options
Diffstat (limited to 'Build/source/libs/poppler/poppler-0.33.0/poppler/gen-unicode-tables.py')
-rw-r--r-- | Build/source/libs/poppler/poppler-0.33.0/poppler/gen-unicode-tables.py | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/Build/source/libs/poppler/poppler-0.33.0/poppler/gen-unicode-tables.py b/Build/source/libs/poppler/poppler-0.33.0/poppler/gen-unicode-tables.py new file mode 100644 index 00000000000..282f6e52518 --- /dev/null +++ b/Build/source/libs/poppler/poppler-0.33.0/poppler/gen-unicode-tables.py @@ -0,0 +1,38 @@ +UNICODE_LAST_CHAR_PART1 = 0x2FAFF +HANGUL_S_BASE = 0xAC00 +HANGUL_S_COUNT = 19 * 21 * 28 +import unicodedata + +print """// Generated by gen-unicode-tables.py + +typedef struct { + Unicode character; + int length; + int offset; +} decomposition; +""" + +decomp_table = [] +max_index = 0 +decomp_expansion_index = {} +decomp_expansion = [] +for u in xrange(0, UNICODE_LAST_CHAR_PART1): + if (u >= HANGUL_S_BASE and u < HANGUL_S_BASE + HANGUL_S_COUNT): + continue + norm = tuple(map(ord, unicodedata.normalize("NFKD", unichr(u)))) + if norm != (u,): + try: + i = decomp_expansion_index[norm] + decomp_table.append((u, len(norm), i)) + except KeyError: + decomp_table.append((u, len(norm), max_index)) + decomp_expansion_index[norm] = max_index + decomp_expansion.append((norm, max_index)) + max_index += len(norm) +print "#define DECOMP_TABLE_LENGTH %d\n" % len(decomp_table) +print "static const decomposition decomp_table[] = {\n%s\n};\n" % ", \n".join( + " { 0x%x, %d, %d }" % (character, length, offset) + for character, length, offset in decomp_table) +print "static const Unicode decomp_expansion[] = {\n%s\n};\n" % ", \n".join( + " %s /* offset %d */ " % (", ".join("0x%x" % u for u in norm), + index) for norm, index in decomp_expansion) |