| OLD | NEW |
| (Empty) |
| 1 import sys | |
| 2 from unicode_parse_common import * | |
| 3 | |
| 4 # http://www.unicode.org/Public/5.1.0/ucd/Scripts.txt | |
| 5 | |
| 6 script_to_harfbuzz = { | |
| 7 # This is the list of HB_Script_* at the time of writing | |
| 8 'Common': 'HB_Script_Common', | |
| 9 'Greek': 'HB_Script_Greek', | |
| 10 'Cyrillic': 'HB_Script_Cyrillic', | |
| 11 'Armenian': 'HB_Script_Armenian', | |
| 12 'Hebrew': 'HB_Script_Hebrew', | |
| 13 'Arabic': 'HB_Script_Arabic', | |
| 14 'Syriac': 'HB_Script_Syriac', | |
| 15 'Thaana': 'HB_Script_Thaana', | |
| 16 'Devanagari': 'HB_Script_Devanagari', | |
| 17 'Bengali': 'HB_Script_Bengali', | |
| 18 'Gurmukhi': 'HB_Script_Gurmukhi', | |
| 19 'Gujarati': 'HB_Script_Gujarati', | |
| 20 'Oriya': 'HB_Script_Oriya', | |
| 21 'Tamil': 'HB_Script_Tamil', | |
| 22 'Telugu': 'HB_Script_Telugu', | |
| 23 'Kannada': 'HB_Script_Kannada', | |
| 24 'Malayalam': 'HB_Script_Malayalam', | |
| 25 'Sinhala': 'HB_Script_Sinhala', | |
| 26 'Thai': 'HB_Script_Thai', | |
| 27 'Lao': 'HB_Script_Lao', | |
| 28 'Tibetan': 'HB_Script_Tibetan', | |
| 29 'Myanmar': 'HB_Script_Myanmar', | |
| 30 'Georgian': 'HB_Script_Georgian', | |
| 31 'Hangul': 'HB_Script_Hangul', | |
| 32 'Ogham': 'HB_Script_Ogham', | |
| 33 'Runic': 'HB_Script_Runic', | |
| 34 'Khmer': 'HB_Script_Khmer', | |
| 35 'Inherited': 'HB_Script_Inherited', | |
| 36 } | |
| 37 | |
| 38 class ScriptDict(object): | |
| 39 def __init__(self, base): | |
| 40 self.base = base | |
| 41 | |
| 42 def __getitem__(self, key): | |
| 43 r = self.base.get(key, None) | |
| 44 if r is None: | |
| 45 return 'HB_Script_Common' | |
| 46 return r | |
| 47 | |
| 48 def main(infile, outfile): | |
| 49 ranges = unicode_file_parse(infile, | |
| 50 ScriptDict(script_to_harfbuzz), | |
| 51 'HB_Script_Common') | |
| 52 ranges = sort_and_merge(ranges) | |
| 53 | |
| 54 print >>outfile, '// Generated from Unicode script tables\n' | |
| 55 print >>outfile, '#ifndef SCRIPT_PROPERTIES_H_' | |
| 56 print >>outfile, '#define SCRIPT_PROPERTIES_H_\n' | |
| 57 print >>outfile, '#include <stdint.h>' | |
| 58 print >>outfile, '#include "harfbuzz-shaper.h"\n' | |
| 59 print >>outfile, 'struct script_property {' | |
| 60 print >>outfile, ' uint32_t range_start;' | |
| 61 print >>outfile, ' uint32_t range_end;' | |
| 62 print >>outfile, ' HB_Script script;' | |
| 63 print >>outfile, '};\n' | |
| 64 print >>outfile, 'static const struct script_property script_properties[] = {' | |
| 65 for (start, end, value) in ranges: | |
| 66 print >>outfile, ' {0x%x, 0x%x, %s},' % (start, end, value) | |
| 67 print >>outfile, '};\n' | |
| 68 print >>outfile, 'static const unsigned script_properties_count = %d;\n' % len
(ranges) | |
| 69 print >>outfile, '#endif // SCRIPT_PROPERTIES_H_' | |
| 70 | |
| 71 if __name__ == '__main__': | |
| 72 if len(sys.argv) != 3: | |
| 73 print 'Usage: %s <input .txt> <output .h>' % sys.argv[0] | |
| 74 else: | |
| 75 main(file(sys.argv[1], 'r'), file(sys.argv[2], 'w+')) | |
| OLD | NEW |