diff options
Diffstat (limited to 'third_party/harfbuzz/contrib/tables/grapheme-break-parse.py')
-rw-r--r-- | third_party/harfbuzz/contrib/tables/grapheme-break-parse.py | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/third_party/harfbuzz/contrib/tables/grapheme-break-parse.py b/third_party/harfbuzz/contrib/tables/grapheme-break-parse.py new file mode 100644 index 0000000..a4b3534 --- /dev/null +++ b/third_party/harfbuzz/contrib/tables/grapheme-break-parse.py @@ -0,0 +1,45 @@ +import sys +from unicode_parse_common import * + +# http://www.unicode.org/Public/UNIDATA/auxiliary/GraphemeBreakProperty.txt + +property_to_harfbuzz = { + 'CR': 'HB_Grapheme_CR', + 'LF': 'HB_Grapheme_LF', + 'Control': 'HB_Grapheme_Control', + 'Extend': 'HB_Grapheme_Extend', + 'Prepend': 'HB_Grapheme_Other', + 'SpacingMark': 'HB_Grapheme_Other', + 'L': 'HB_Grapheme_L', + 'V': 'HB_Grapheme_V', + 'T': 'HB_Grapheme_T', + 'LV': 'HB_Grapheme_LV', + 'LVT': 'HB_Grapheme_LVT', +} + +def main(infile, outfile): + ranges = unicode_file_parse(infile, property_to_harfbuzz) + ranges.sort() + + print >>outfile, '// Generated from Unicode Grapheme break tables\n' + print >>outfile, '#ifndef GRAPHEME_BREAK_PROPERTY_H_' + print >>outfile, '#define GRAPHEME_BREAK_PROPERTY_H_\n' + print >>outfile, '#include <stdint.h>' + print >>outfile, '#include "harfbuzz-external.h"\n' + print >>outfile, 'struct grapheme_break_property {' + print >>outfile, ' uint32_t range_start;' + print >>outfile, ' uint32_t range_end;' + print >>outfile, ' HB_GraphemeClass klass;' + print >>outfile, '};\n' + print >>outfile, 'static const struct grapheme_break_property grapheme_break_properties[] = {' + for (start, end, value) in ranges: + print >>outfile, ' {0x%x, 0x%x, %s},' % (start, end, value) + print >>outfile, '};\n' + print >>outfile, 'static const unsigned grapheme_break_properties_count = %d;\n' % len(ranges) + print >>outfile, '#endif // GRAPHEME_BREAK_PROPERTY_H_' + +if __name__ == '__main__': + if len(sys.argv) != 3: + print 'Usage: %s <input .txt> <output .h>' % sys.argv[0] + else: + main(file(sys.argv[1], 'r'), file(sys.argv[2], 'w+')) |