summaryrefslogtreecommitdiff
path: root/Build/source/libs/poppler/poppler-0.33.0/poppler/gen-unicode-tables.py
diff options
context:
space:
mode:
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.py38
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)