1 UNICODE_LAST_CHAR_PART1
= 0x2FAFF
3 HANGUL_S_COUNT
= 19 * 21 * 28
6 print """// Generated by gen-unicode-tables.py
17 decomp_expansion_index
= {}
19 for u
in xrange(0, UNICODE_LAST_CHAR_PART1
):
20 if (u
>= HANGUL_S_BASE
and u
< HANGUL_S_BASE
+ HANGUL_S_COUNT
):
22 norm
= tuple(map(ord, unicodedata
.normalize("NFKD", unichr(u
))))
25 i
= decomp_expansion_index
[norm
]
26 decomp_table
.append((u
, len(norm
), i
))
28 decomp_table
.append((u
, len(norm
), max_index
))
29 decomp_expansion_index
[norm
] = max_index
30 decomp_expansion
.append((norm
, max_index
))
31 max_index
+= len(norm
)
32 print "#define DECOMP_TABLE_LENGTH %d\n" % len(decomp_table
)
33 print "static const decomposition decomp_table[] = {\n%s\n};\n" % ", \n".join(
34 " { 0x%x, %d, %d }" % (character
, length
, offset
)
35 for character
, length
, offset
in decomp_table
)
36 print "static const Unicode decomp_expansion[] = {\n%s\n};\n" % ", \n".join(
37 " %s /* offset %d */ " % (", ".join("0x%x" % u
for u
in norm
),
38 index
) for norm
, index
in decomp_expansion
)