17db96d56Sopenharmony_ci# 27db96d56Sopenharmony_ci# genmap_korean.py: Korean Codecs Map Generator 37db96d56Sopenharmony_ci# 47db96d56Sopenharmony_ci# Original Author: Hye-Shik Chang <perky@FreeBSD.org> 57db96d56Sopenharmony_ci# Modified Author: Dong-hee Na <donghee.na92@gmail.com> 67db96d56Sopenharmony_ci# 77db96d56Sopenharmony_ciimport os 87db96d56Sopenharmony_ci 97db96d56Sopenharmony_cifrom genmap_support import * 107db96d56Sopenharmony_ci 117db96d56Sopenharmony_ci 127db96d56Sopenharmony_ciKSX1001_C1 = (0x21, 0x7e) 137db96d56Sopenharmony_ciKSX1001_C2 = (0x21, 0x7e) 147db96d56Sopenharmony_ciUHCL1_C1 = (0x81, 0xa0) 157db96d56Sopenharmony_ciUHCL1_C2 = (0x41, 0xfe) 167db96d56Sopenharmony_ciUHCL2_C1 = (0xa1, 0xfe) 177db96d56Sopenharmony_ciUHCL2_C2 = (0x41, 0xa0) 187db96d56Sopenharmony_ciMAPPINGS_CP949 = 'http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP949.TXT' 197db96d56Sopenharmony_ci 207db96d56Sopenharmony_ci 217db96d56Sopenharmony_cidef main(): 227db96d56Sopenharmony_ci mapfile = open_mapping_file('python-mappings/CP949.TXT', MAPPINGS_CP949) 237db96d56Sopenharmony_ci print("Loading Mapping File...") 247db96d56Sopenharmony_ci decmap = loadmap(mapfile) 257db96d56Sopenharmony_ci uhcdecmap, ksx1001decmap, cp949encmap = {}, {}, {} 267db96d56Sopenharmony_ci for c1, c2map in decmap.items(): 277db96d56Sopenharmony_ci for c2, code in c2map.items(): 287db96d56Sopenharmony_ci if c1 >= 0xa1 and c2 >= 0xa1: 297db96d56Sopenharmony_ci ksx1001decmap.setdefault(c1 & 0x7f, {}) 307db96d56Sopenharmony_ci ksx1001decmap[c1 & 0x7f][c2 & 0x7f] = c2map[c2] 317db96d56Sopenharmony_ci cp949encmap.setdefault(code >> 8, {}) 327db96d56Sopenharmony_ci cp949encmap[code >> 8][code & 0xFF] = (c1 << 8 | c2) & 0x7f7f 337db96d56Sopenharmony_ci else: 347db96d56Sopenharmony_ci # uhc 357db96d56Sopenharmony_ci uhcdecmap.setdefault(c1, {}) 367db96d56Sopenharmony_ci uhcdecmap[c1][c2] = c2map[c2] 377db96d56Sopenharmony_ci cp949encmap.setdefault(code >> 8, {}) # MSB set 387db96d56Sopenharmony_ci cp949encmap[code >> 8][code & 0xFF] = (c1 << 8 | c2) 397db96d56Sopenharmony_ci 407db96d56Sopenharmony_ci with open('mappings_kr.h', 'w') as fp: 417db96d56Sopenharmony_ci print_autogen(fp, os.path.basename(__file__)) 427db96d56Sopenharmony_ci 437db96d56Sopenharmony_ci print("Generating KS X 1001 decode map...") 447db96d56Sopenharmony_ci writer = DecodeMapWriter(fp, "ksx1001", ksx1001decmap) 457db96d56Sopenharmony_ci writer.update_decode_map(KSX1001_C1, KSX1001_C2) 467db96d56Sopenharmony_ci writer.generate() 477db96d56Sopenharmony_ci 487db96d56Sopenharmony_ci print("Generating UHC decode map...") 497db96d56Sopenharmony_ci writer = DecodeMapWriter(fp, "cp949ext", uhcdecmap) 507db96d56Sopenharmony_ci writer.update_decode_map(UHCL1_C1, UHCL1_C2) 517db96d56Sopenharmony_ci writer.update_decode_map(UHCL2_C1, UHCL2_C2) 527db96d56Sopenharmony_ci writer.generate() 537db96d56Sopenharmony_ci 547db96d56Sopenharmony_ci print("Generating CP949 (includes KS X 1001) encode map...") 557db96d56Sopenharmony_ci writer = EncodeMapWriter(fp, "cp949", cp949encmap) 567db96d56Sopenharmony_ci writer.generate() 577db96d56Sopenharmony_ci 587db96d56Sopenharmony_ci print("Done!") 597db96d56Sopenharmony_ci 607db96d56Sopenharmony_ci 617db96d56Sopenharmony_ciif __name__ == '__main__': 627db96d56Sopenharmony_ci main() 63