OLD | NEW |
| (Empty) |
1 import sys | |
2 from unicode_parse_common import * | |
3 | |
4 # http://www.unicode.org/Public/UNIDATA/auxiliary/GraphemeBreakProperty.txt | |
5 | |
6 property_to_harfbuzz = { | |
7 'CR': 'HB_Grapheme_CR', | |
8 'LF': 'HB_Grapheme_LF', | |
9 'Control': 'HB_Grapheme_Control', | |
10 'Extend': 'HB_Grapheme_Extend', | |
11 'Prepend': 'HB_Grapheme_Other', | |
12 'SpacingMark': 'HB_Grapheme_Other', | |
13 'L': 'HB_Grapheme_L', | |
14 'V': 'HB_Grapheme_V', | |
15 'T': 'HB_Grapheme_T', | |
16 'LV': 'HB_Grapheme_LV', | |
17 'LVT': 'HB_Grapheme_LVT', | |
18 } | |
19 | |
20 def main(infile, outfile): | |
21 ranges = unicode_file_parse(infile, property_to_harfbuzz) | |
22 ranges.sort() | |
23 | |
24 print >>outfile, '// Generated from Unicode Grapheme break tables\n' | |
25 print >>outfile, '#ifndef GRAPHEME_BREAK_PROPERTY_H_' | |
26 print >>outfile, '#define GRAPHEME_BREAK_PROPERTY_H_\n' | |
27 print >>outfile, '#include <stdint.h>' | |
28 print >>outfile, '#include "harfbuzz-external.h"\n' | |
29 print >>outfile, 'struct grapheme_break_property {' | |
30 print >>outfile, ' uint32_t range_start;' | |
31 print >>outfile, ' uint32_t range_end;' | |
32 print >>outfile, ' HB_GraphemeClass klass;' | |
33 print >>outfile, '};\n' | |
34 print >>outfile, 'static const struct grapheme_break_property grapheme_break_p
roperties[] = {' | |
35 for (start, end, value) in ranges: | |
36 print >>outfile, ' {0x%x, 0x%x, %s},' % (start, end, value) | |
37 print >>outfile, '};\n' | |
38 print >>outfile, 'static const unsigned grapheme_break_properties_count = %d;\
n' % len(ranges) | |
39 print >>outfile, '#endif // GRAPHEME_BREAK_PROPERTY_H_' | |
40 | |
41 if __name__ == '__main__': | |
42 if len(sys.argv) != 3: | |
43 print 'Usage: %s <input .txt> <output .h>' % sys.argv[0] | |
44 else: | |
45 main(file(sys.argv[1], 'r'), file(sys.argv[2], 'w+')) | |
OLD | NEW |