Home | History | Annotate | Download | only in tables
      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_properties[] = {'
     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+'))
     46