xref: /aosp_15_r20/external/harfbuzz_ng/src/gen-arabic-pua.py (revision 2d1272b857b1f7575e6e246373e1cb218663db8a)
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