1*2d1272b8SAndroid Build Coastguard Worker#!/usr/bin/env python3 2*2d1272b8SAndroid Build Coastguard Worker 3*2d1272b8SAndroid Build Coastguard Worker"""usage: ./gen-arabic-pua.py 4*2d1272b8SAndroid Build Coastguard Worker""" 5*2d1272b8SAndroid Build Coastguard Worker 6*2d1272b8SAndroid Build Coastguard Workerimport packTab 7*2d1272b8SAndroid Build Coastguard Worker 8*2d1272b8SAndroid Build Coastguard Worker 9*2d1272b8SAndroid Build Coastguard Workerprint ("/* == Start of generated table == */") 10*2d1272b8SAndroid Build Coastguard Workerprint ("/*") 11*2d1272b8SAndroid Build Coastguard Workerprint (" * The following table is generated by running:") 12*2d1272b8SAndroid Build Coastguard Workerprint (" *") 13*2d1272b8SAndroid Build Coastguard Workerprint (" * ./gen-arabic-pua.py") 14*2d1272b8SAndroid Build Coastguard Workerprint (" *") 15*2d1272b8SAndroid Build Coastguard Workerprint (" */") 16*2d1272b8SAndroid Build Coastguard Workerprint () 17*2d1272b8SAndroid Build Coastguard Workerprint ("#ifndef HB_OT_SHAPER_ARABIC_PUA_HH") 18*2d1272b8SAndroid Build Coastguard Workerprint ("#define HB_OT_SHAPER_ARABIC_PUA_HH") 19*2d1272b8SAndroid Build Coastguard Workerprint () 20*2d1272b8SAndroid Build Coastguard Worker 21*2d1272b8SAndroid Build Coastguard Workercode = packTab.Code('_hb_arabic') 22*2d1272b8SAndroid Build Coastguard Worker 23*2d1272b8SAndroid Build Coastguard Workerfor p in ("ArabicPUASimplified.txt", "ArabicPUATraditional.txt"): 24*2d1272b8SAndroid Build Coastguard Worker with open (p, encoding='utf-8') as f: 25*2d1272b8SAndroid Build Coastguard Worker fields = [l.split('\t') for l in f if l[:1] != '#'] 26*2d1272b8SAndroid Build Coastguard Worker data = {int(fs[1], 16):int(fs[0], 16) for fs in fields} 27*2d1272b8SAndroid Build Coastguard Worker sol = packTab.pack_table(data, compression=9) 28*2d1272b8SAndroid Build Coastguard Worker sol.genCode(code, f'pua_{p[9:13].lower()}_map') 29*2d1272b8SAndroid Build Coastguard Worker 30*2d1272b8SAndroid Build Coastguard Workercode.print_c(linkage='static inline') 31*2d1272b8SAndroid Build Coastguard Worker 32*2d1272b8SAndroid Build Coastguard Workerprint () 33*2d1272b8SAndroid Build Coastguard Workerprint ("#endif /* HB_OT_SHAPER_ARABIC_PUA_HH */") 34*2d1272b8SAndroid Build Coastguard Workerprint () 35*2d1272b8SAndroid Build Coastguard Workerprint ("/* == End of generated table == */") 36