diff options
Diffstat (limited to 'glib/glib/gen-iswide-table.py')
-rwxr-xr-x | glib/glib/gen-iswide-table.py | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/glib/glib/gen-iswide-table.py b/glib/glib/gen-iswide-table.py new file mode 100755 index 0000000..292addc --- /dev/null +++ b/glib/glib/gen-iswide-table.py @@ -0,0 +1,58 @@ +#!/usr/bin/python + +import sys + +W = {} +W['A'] = [] +W['W'] = [] +W['F'] = W['W'] + +for line in sys.stdin: + i = line.find ('#') + if i >= 0: + line = line[:i] + line = line.strip () + if not len (line): + continue + + fields = [x.strip () for x in line.split (';')] + chars = fields[0] + width = fields[1] + + if width not in ['A', 'W', 'F']: + continue + + if chars.find ('..') > 0: + (start,end) = chars.split ('..') + else: + start = chars + end = chars + start, end = int(start,16), int(end,16) + + for i in range (start, end+1): + W[width].append (i) + + +def write_intervals (S): + S.sort () + start = S[0]; + end = start - 1 + for c in S: + if c == end+1: + end += 1 + continue + else: + print "{0x%04X, 0x%04X}, " % (start, end) + start = c + end = start + print "{0x%04X, 0x%04X} " % (start, end) + + + +print "table for g_unichar_iswide():" +print +write_intervals (W['W']) +print +print "table for g_unichar_iswide_cjk():" +print +write_intervals (W['A']) |