alphabet_detector 0.12.2

Natural language alphabet detection library
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
use super::{ScriptLanguage, UcdScript};
#[cfg(all(debug_assertions, feature = "test_chars"))]
use crate::ch_norm::test_chars;
use alphabet_detector_macros::alphabet_match;

/// uses unicode private area
pub(crate) fn char_compose_custom(ch: char, mark: char) -> Option<char> {
    match mark {
        '\u{300}' | '\u{340}' => match ch {
            '' | '' => Some('\u{f00b9}'), // Ẹ̀ẹ̀
            'm' | 'M' => Some('\u{f006d}'), // M̀m̀
            '' | '' => Some('\u{f00cd}'), // Ọ̀ọ̀
            _ => None,
        },
        '\u{301}' | '\u{341}' => match ch {
            '' | '' => Some('\u{f01b9}'), // Ẹ́ẹ́
            '' | '' => Some('\u{f01cd}'), // Ọ́ọ́
            'ɛ' | 'Ɛ' => Some('\u{f015b}'), // Ɛ́ɛ́
            'ɔ' | 'Ɔ' => Some('\u{f0154}'), // Ɔ́ɔ́
            _ => None,
        },
        '\u{302}' => match ch {
            'ɛ' | 'Ɛ' => Some('\u{f025b}'), // Ɛ̂ɛ̂
            'ɔ' | 'Ɔ' => Some('\u{f0254}'), // Ɔ̂ɔ̂
            _ => None,
        },
        '\u{303}' | '\u{342}' => match ch {
            'g' | 'G' => Some('\u{f0367}'), // G̃g̃
            _ => None,
        },
        '\u{304}' => match ch {
            // 'ẹ' | 'Ẹ' => '\u{f04b9}', // Ẹ̄ẹ̄
            // 'm' | 'M' => '\u{f046d}', // M̄m̄
            'n' | 'N' => Some('\u{f046e}'), // N̄n̄
            // 'ọ' | 'Ọ' => '\u{f04cd}', // Ọ̄ọ̄
            _ => None,
        },
        '\u{308}' => match ch {
            'ɛ' | 'Ɛ' => Some('\u{f0890}'), // Ɛ̈ɛ̈
            'ɔ' | 'Ɔ' => Some('\u{f0854}'), // Ɔ̈ɔ̈
            _ => None,
        },
        '\u{30c}' => match ch {
            'ɛ' | 'Ɛ' => Some('\u{f0c5b}'), // Ɛ̌ɛ̌
            'ɔ' | 'Ɔ' => Some('\u{f0c54}'), // Ɔ̌ɔ̌
            _ => None,
        },
        '\u{331}' | '\u{320}' => match ch {
            '\u{f0890}' => Some('\u{f3190}'), // Ɛ̱̈ɛ̱̈
            'a' | 'A' => Some('\u{f3161}'),   // A̱a̱
            'e' | 'E' => Some('\u{f3165}'),   // E̱e̱
            'i' | 'I' => Some('\u{f3169}'),   // I̱i̱
            'o' | 'O' => Some('\u{f316f}'),   // O̱o̱
            'ɔ' | 'Ɔ' => Some('\u{f3154}'),   // Ɔ̱ɔ̱
            _ => None,
        },
        /* '\u{658}'=> match ch {
            'ن' => Some('\u{5846}'), // ن٘
            _ => None,
        }, */
        _ => None,
    }
}

pub(crate) const WORD_COMMON_FIRST_CHAR_NOT_SKIPPABLE: &[char] = &['¡', '¿'];

// How to add a new alphabet:
// Add every letter for each alphabet within the script group.
// Do not add letters used only for foreign words (e.g. proper names of foreign origin), but save them in a comment.
// Even though it's possible to add not all of the letters,
//  (for example when all alphabets include them, like in `UcdScript::Han`),
//  it's recommended to add common letters (if alphabet is not very big),
//  anyway they will be filtered out by `alphabet_match!` macro.
// Do not add same `ScriptLanguage` to different scripts, except `UcdScript::Common` or
//  languages written with different scripts in a one word (like Japanese),
//  instead create a new `ScriptLanguage`.
// There is no reason to add any letters if a script contains only one `ScriptLanguage`.
// Verification info:
//  No info - generated by chatgpt;
//  + - verified on the internet;
//  ++ - also verified by a text frequency analysis (cli_alphabet_intersection);
//  +++ - verified by a native-level speaker.
/// Returns all `ScriptLanguage`s by `UcdScript` and `char`
#[inline]
pub fn script_char_to_slangs(script: UcdScript, ch: char) -> &'static [ScriptLanguage] {
    use UcdScript::*;
    match script {
        Adlam => &[ScriptLanguage::FulaPularAdlam],
        Ahom => &[ScriptLanguage::Ahom],
        AnatolianHieroglyphs => &[ScriptLanguage::LuwianHieroglyphic],
        Arabic => alphabet_match!([
            (
                ScriptLanguage::AcehneseJawi, //+?
                [
                    'ا', 'ب', 'ت', 'ث', 'ج', 'چ', 'ح', 'خ', 'د', 'ذ', 'ر', 'ز', 'س', 'ش', 'ص', 'ض',
                    'ط', 'ظ', 'ع', 'غ', 'ڠ', 'ف', 'ڤ', 'ق', 'ك', 'ل', 'م', 'ن', 'ڽ', 'و', 'ه', 'ء',
                    'ي', 'ى', 'ک', 'ئ', 'أ', 'إ', 'ؤ', /*unverified*/
                    'ڬ', 'ۏ', 'ݢ', '۔', '\u{64b}', '\u{651}', //
                    // loanwords
                    'ة',
                ]
            ),
            (
                ScriptLanguage::Arabic, //+
                [
                    'ا', 'ب', 'ت', 'ث', 'ج', 'ح', 'خ', 'د', 'ذ', 'ر', 'ز', 'س', 'ش', 'ص', 'ض', 'ط',
                    'ظ', 'ع', 'غ', 'ف', 'ق', 'ك', 'ل', 'م', 'ن', 'ه', 'و', 'ي', 'ء', 'ى', 'ئ', 'أ',
                    'ة', 'إ', 'ؤ', 'آ', '\u{64b}', '\u{64c}', '\u{64d}', '\u{64e}', '\u{64f}',
                    '\u{650}', '\u{651}', '\u{652}', '\u{670}',
                ]
            ),
            (
                ScriptLanguage::ArabicEgyptian,
                [
                    'ا', 'ب', 'ت', 'ث', 'ج', 'ح', 'خ', 'د', 'ذ', 'ر', 'ز', 'س', 'ش', 'ص', 'ض', 'ط',
                    'ظ', 'ع', 'غ', 'ف', 'ق', 'ك', 'ل', 'م', 'ن', 'ه', 'و', 'ي', 'ء', 'ى', 'ئ', 'أ',
                    'ة', 'إ', 'ؤ', 'آ', '\u{64b}', '\u{64c}', '\u{64d}', '\u{64e}', '\u{64f}',
                    '\u{650}', '\u{651}', '\u{652}',
                    '\u{670}',
                    // foreign words translit 'ڤ', 'چ'
                ]
            ),
            (
                ScriptLanguage::ArabicMesopotamian,
                [
                    'ا', 'ب', 'ت', 'ث', 'ج', 'ح', 'خ', 'د', 'ذ', 'ر', 'ز', 'س', 'ش', 'ص', 'ض', 'ط',
                    'ظ', 'ع', 'غ', 'ف', 'ق', 'ك', 'ل', 'م', 'ن', 'ه', 'و', 'ي', 'ء', 'ى', 'ئ', 'گ',
                    'أ', 'ة', 'إ', 'ؤ', 'آ', '\u{64b}', '\u{64c}', '\u{64d}', '\u{64e}', '\u{64f}',
                    '\u{650}', '\u{651}', '\u{652}', '\u{670}',
                ]
            ),
            (
                ScriptLanguage::ArabicMoroccan,
                [
                    'ا', 'ب', 'ت', 'ث', 'ج', 'ح', 'خ', 'د', 'ذ', 'ر', 'ز', 'س', 'ش', 'ص', 'ض', 'ط',
                    'ظ', 'ع', 'غ', 'ف', 'ق', 'ك', 'ل', 'م', 'ن', 'ه', 'و', 'ي', 'ء', 'گ', 'ݣ', 'ى',
                    'ئ', 'أ', 'ة', 'إ', 'ڭ', 'ؤ', 'آ', '\u{64b}', '\u{64c}', '\u{64d}', '\u{64e}',
                    '\u{64f}', '\u{650}', '\u{651}', '\u{652}',
                    '\u{670}' //
                               // transcription of loanwords 'پ', 'ڤ'
                ]
            ),
            (
                ScriptLanguage::ArabicNajdi,
                [
                    'ا', 'ب', 'ت', 'ث', 'ج', 'ح', 'خ', 'د', 'ذ', 'ر', 'ز', 'س', 'ش', 'ص', 'ض', 'ط',
                    'ظ', 'ع', 'غ', 'ف', 'ق', 'ك', 'ل', 'م', 'ن', 'ه', 'و', 'ي', 'ء', 'ى', 'ئ', 'أ',
                    'ة', 'إ', 'ؤ', 'آ', 'گ', '\u{64b}', '\u{64c}', '\u{64d}', '\u{64e}', '\u{64f}',
                    '\u{650}', '\u{651}', '\u{652}', '\u{670}',
                ]
            ),
            (
                ScriptLanguage::ArabicNorthLevantine,
                [
                    'ا', 'ب', 'ت', 'ث', 'ج', 'ح', 'خ', 'د', 'ذ', 'ر', 'ز', 'س', 'ش', 'ص', 'ض', 'ط',
                    'ظ', 'ع', 'غ', 'ف', 'ق', 'ك', 'ل', 'م', 'ن', 'ه', 'و', 'ي', 'ء', 'ى', 'ئ', 'أ',
                    'ة', 'إ', 'ؤ', 'آ', '\u{64b}', '\u{64d}', '\u{64e}', '\u{651}',
                ]
            ),
            (
                ScriptLanguage::ArabicSouthernYemeni,
                [
                    'ا', 'ب', 'ت', 'ث', 'ج', 'ح', 'خ', 'د', 'ذ', 'ر', 'ز', 'س', 'ش', 'ص', 'ض', 'ط',
                    'ظ', 'ع', 'غ', 'ف', 'ق', 'ك', 'ل', 'م', 'ن', 'ه', 'و', 'ي', 'ء', 'ى', 'ئ', 'أ',
                    'ة', 'إ', 'ؤ', 'آ',
                ]
            ),
            (
                ScriptLanguage::ArabicSouthLevantine,
                [
                    'ا', 'ب', 'ت', 'ث', 'ج', 'ح', 'خ', 'د', 'ذ', 'ر', 'ز', 'س', 'ش', 'ص', 'ض', 'ط',
                    'ظ', 'ع', 'غ', 'ف', 'ق', 'ك', 'ل', 'م', 'ن', 'ه', 'و', 'ي', 'ء', 'ى', 'ئ', 'أ',
                    'ة', 'إ', 'ؤ', 'آ', '\u{64b}', '\u{651}',
                ]
            ),
            (
                ScriptLanguage::ArabicSudanese,
                [
                    'أ', 'ب', 'ت', 'ث', 'ج', 'ح', 'خ', 'د', 'ذ', 'ر', 'ز', 'س', 'ش', 'ص', 'ض', 'ط',
                    'ظ', 'ع', 'غ', 'ف', 'ق', 'ك', 'ل', 'م', 'ن', 'ه', 'و', 'ي', 'ء', 'ى',
                    'ئ', /*unverified*/
                    'ؤ', 'آ', '\u{64b}',
                ]
            ),
            (
                ScriptLanguage::ArabicTunisian, //+?
                [
                    'ا', 'ب', 'ت', 'ث', 'ج', 'ح', 'خ', 'د', 'ذ', 'ر', 'ز', 'س', 'ش', 'ص', 'ض', 'ط',
                    'ظ', 'ع', 'غ', 'ف', 'ق', 'ك', 'ل', 'م', 'ن', 'ه', 'و', 'ي', 'ء', 'گ', 'ى', 'ئ',
                    'أ', 'ة', 'إ', 'ؤ', 'آ', '\u{64b}', '\u{64c}', '\u{64d}', '\u{64e}', '\u{64f}',
                    '\u{650}', '\u{651}', '\u{652}', '\u{670}',
                ]
            ),
            (
                ScriptLanguage::AzerbaijaniSouth, //+?
                [
                    'ا', 'ب', 'پ', 'ت', 'ث', 'ج', 'چ', 'ح', 'خ', 'د', 'ذ', 'ر', 'ز', 'ژ', 'س', 'ش',
                    'ص', 'ض', 'ط', 'ظ', 'ع', 'غ', 'ف', 'ق', 'ك', 'گ', 'ل', 'م', 'ن', 'و', 'ه', 'ی',
                    'ء', 'ک', 'ئ', 'ي', 'ۇ', 'ۆ', /*unverified*/
                    'آ', 'ؤ', '٫', '\u{64b}', '\u{64e}', '\u{64f}', '\u{651}', '\u{652}',
                    '\u{65b}',
                ]
            ),
            (
                ScriptLanguage::BanjarJawi, //+?
                [
                    'ا', 'ب', 'ت', 'ث', 'ج', 'چ', 'ح', 'خ', 'د', 'ذ', 'ر', 'ز', 'س', 'ش', 'ص', 'ض',
                    'ط', 'ظ', 'ع', 'غ', 'ڠ', 'ف', 'ڤ', 'ق', 'ك', 'ل', 'م', 'ن', 'ڽ', 'و', 'ه', 'ء',
                    'ي', 'ى', 'ک', 'ئ', 'پ', 'أ', 'إ', /*unverified*/
                    'ؤ', 'ڬ', 'ݢ', '۔', 'ۏ', //
                    // loanwords
                    'ة',
                ]
            ),
            (
                ScriptLanguage::DogriPersoArabic,
                [
                    'ا', 'ب', 'پ', 'ت', 'ٹ', 'ث', 'ج', 'چ', 'ح', 'خ', 'د', 'ڈ', 'ذ', 'ر', 'ڑ', 'ز',
                    'ژ', 'س', 'ش', 'ص', 'ض', 'ط', 'ظ', 'ع', 'غ', 'ف', 'ق', 'ک', 'گ', 'ل', 'م', 'ن',
                    'و', 'ہ', 'ء', 'ی', 'ے', 'ڤ',
                ]
            ),
            (
                ScriptLanguage::KanuriCentralAjami, //+?
                [
                    'ا', 'ب', 'ت', 'ث', 'ج', 'ح', 'خ', 'د', 'ذ', 'ر', 'ز', 'س', 'ش', 'ص', 'ض', 'ط',
                    'ظ', 'ع', 'غ', 'ف', 'ق', 'ك', 'ل', 'م', 'ن', 'و', 'ه', 'ي', 'ء', 'ى', 'ی', 'أ',
                    /*unverified*/
                    'إ', 'ؤ', 'آ', '۔', '\u{64b}', '\u{64c}', '\u{64d}', '\u{64e}', '\u{64f}',
                    '\u{650}', '\u{651}', '\u{652}', '\u{656}', '\u{657}', '\u{670}', '\u{6e7}',
                ]
            ),
            (
                ScriptLanguage::Kashmiri, //++
                [
                    'ا', 'ب', 'پ', 'ت', 'ٹ', 'ث', 'ج', 'چ', 'ح', 'خ', 'د', 'ڈ', 'ذ', 'ر', 'ڑ', 'ز',
                    'ژ', 'س', 'ش', 'ص', 'ض', 'ط', 'ظ', 'ع', 'غ', 'ف', 'ق', 'ک', 'گ', 'ل', 'م', 'ن',
                    'ں', 'و', 'ۆ', 'ۄ', 'ھ', 'ء', 'ی', 'ؠ', 'ے', 'ہ', 'ئ', 'أ', 'ٲ',
                    '\u{65f}', /*unverified*/
                    '۔', 'ۍ', 'آ', '\u{64b}', '\u{64e}', '\u{64f}', '\u{650}', '\u{651}',
                    '\u{654}', '\u{655}', '\u{656}', '\u{657}', '\u{65a}', '\u{65b}', '\u{670}',
                    '\u{6ed}', 'ؤ',
                ]
            ),
            (
                ScriptLanguage::KurdishCentral,
                [
                    'ا', 'ب', 'پ', 'ت', 'ج', 'چ', 'ح', 'خ', 'د', 'ر', 'ز', 'ژ', 'س', 'ش', 'ع', 'غ',
                    'ف', 'ڤ', 'ق', 'ک', 'گ', 'ل', 'م', 'ن', 'ه', 'و', 'ي', 'ێ', 'ە', 'ی', 'ۆ', 'ئ',
                    'ك', 'ھ', 'ى', 'ؤ', /*unverified*/
                    'ڵ', 'ڕ', '\u{64e}', '\u{64f}', '\u{650}', '\u{651}', '\u{652}',
                ]
            ),
            (
                ScriptLanguage::KurdishSouthern,
                [
                    'ا', 'ب', 'پ', 'ت', 'ج', 'چ', 'ح', 'خ', 'د', 'ر', 'ز', 'ژ', 'س', 'ش', 'ع', 'غ',
                    'ف', 'ڤ', 'ق', 'ک', 'گ', 'ل', 'م', 'ن', 'ه', 'و', 'ي', 'ێ', 'ە',
                ]
            ),
            (
                ScriptLanguage::MathArabic, //+
                [
                    // Digits (Mashriq)
                    '٠', '١', '٢', '٣', '٤', '٥', '٦', '٧', '٨', '٩',
                    // Digits (Persian/Urdu)
                    '۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹', //
                    // Extra
                    '٫', '٬', '٪',
                ],
                true, // Strict (no other chars)
            ),
            (
                ScriptLanguage::PashtoSouthern, //+?
                [
                    'ا', 'ب', 'پ', 'ت', 'ټ', 'ث', 'ج', 'چ', 'ح', 'خ', 'د', 'ډ', 'ذ', 'ر', 'ړ', 'ز',
                    'ژ', 'س', 'ش', 'ص', 'ض', 'ط', 'ظ', 'ع', 'غ', 'ف', 'ق', 'ک', 'ګ', 'ل', 'م', 'ن',
                    'ڼ', 'و', 'ه', 'ی', 'ې', 'ئ', 'ء', 'گ', 'ٹ', 'ڈ', 'ڑ', 'ي', 'ى', 'ے', 'ك',
                    '\u{659}', /*unverified*/
                    'ځ', 'ښ', 'څ', 'ږ', 'ۍ', '\u{64f}', '\u{64e}', 'ۀ', 'ؤ', '\u{650}', 'آ',
                    '\u{670}', '\u{64b}',
                ]
            ),
            (
                ScriptLanguage::PersianDari, //+? copy of PersianFarsi
                [
                    'ا', 'ب', 'پ', 'ت', 'ث', 'ج', 'چ', 'ح', 'خ', 'د', 'ذ', 'ر', 'ز', 'ژ', 'س', 'ش',
                    'ص', 'ض', 'ط', 'ظ', 'ع', 'غ', 'ف', 'ق', 'ک', 'گ', 'ل', 'م', 'ن', 'و', 'ه', 'ی',
                    'ء', 'ئ', 'ك', 'ي', 'آ', 'ى', 'أ', '\u{64b}', '\u{64e}', '\u{64f}', '\u{650}',
                    '\u{651}', '\u{654}',
                ]
            ),
            (
                ScriptLanguage::PersianFarsi, //++
                [
                    'ا', 'ب', 'پ', 'ت', 'ث', 'ج', 'چ', 'ح', 'خ', 'د', 'ذ', 'ر', 'ز', 'ژ', 'س', 'ش',
                    'ص', 'ض', 'ط', 'ظ', 'ع', 'غ', 'ف', 'ق', 'ک', 'گ', 'ل', 'م', 'ن', 'و', 'ه', 'ی',
                    'ء', 'ئ', 'ك', 'ي', 'آ', 'ى', 'أ', '\u{64b}', '\u{64e}', '\u{64f}', '\u{650}',
                    '\u{651}', '\u{654}',
                    // foreign 'ؤ'
                ]
            ),
            (
                ScriptLanguage::PunjabiEasternShahmukhi,
                [
                    'ا', 'ب', 'پ', 'ت', 'ٹ', 'ث', 'ج', 'چ', 'ح', 'خ', 'د', 'ڈ', 'ذ', 'ر', 'ڑ', 'ز',
                    'ژ', 'س', 'ش', 'ص', 'ض', 'ط', 'ظ', 'ع', 'غ', 'ف', 'ق', 'ک', 'گ', 'ل', 'م', 'ن',
                    'و', 'ہ', 'ء', 'ی', 'ے',
                ]
            ),
            (
                ScriptLanguage::Saraiki, //+
                [
                    'ا', 'ب', 'ٻ', 'پ', 'ت', 'ٹ', 'ث', 'ج', 'ڄ', 'چ', 'ح', 'خ', 'د', 'ڈ', 'ݙ', 'ذ',
                    'ر', 'ڑ', 'ز', 'س', 'ش', 'ص', 'ض', 'ط', 'ظ', 'ع', 'غ', 'ف', 'ق', 'ک', 'گ', 'ڳ',
                    'ل', 'م', 'ن', 'ں', 'ݨ', 'و', 'ہ', 'ھ', 'ی', 'ے',
                    // loanwords 'ژ'
                ]
            ),
            (
                ScriptLanguage::Sindhi, //+?
                [
                    'ا', 'ب', 'پ', 'ت', 'ٿ', 'ث', 'ج', 'ڄ', 'چ', 'ح', 'خ', 'د', 'ڊ', 'ذ', 'ر', 'ڙ',
                    'ز', 'ژ', 'س', 'ش', 'ص', 'ض', 'ط', 'ظ', 'ع', 'غ', 'ف', 'ق', 'ڪ', 'گ', 'ل', 'م',
                    'ن', 'ڻ', 'و', 'ه', 'ء', 'ي', 'ی', 'ے', 'ڑ', 'ئ', 'ک', 'ہ', 'ھ', 'ى', 'ٻ', 'ڳ',
                    'ڐ', 'ڱ', '۔', /*unverified*/
                    'آ', '۾', '۽', 'ٽ', 'ڏ', 'ڌ', 'ٺ', 'ڀ', 'ڇ', 'ڃ', 'ڍ', 'ڦ', '\u{64b}',
                    '\u{64c}', '\u{64e}', '\u{64f}', '\u{650}', '\u{651}', '\u{652}', '\u{670}',
                    // loanwords
                    'ؤ',
                ]
            ),
            (
                ScriptLanguage::Urdu, //+?
                [
                    'ا', 'ب', 'پ', 'ت', 'ٹ', 'ث', 'ج', 'چ', 'ح', 'خ', 'د', 'ڈ', 'ذ', 'ر', 'ڑ', 'ز',
                    'ژ', 'س', 'ش', 'ص', 'ض', 'ط', 'ظ', 'ع', 'غ', 'ف', 'ق', 'ک', 'گ', 'ل', 'م', 'ن',
                    'ں', 'و', 'ہ', 'ء', 'ی', 'ے', 'ئ', 'ه', 'ھ', 'ي', 'ݲ',
                    '\u{658}', /*unverified*/
                    '۔', 'آ', '\u{64b}', '\u{64e}', '\u{64f}', '\u{650}', '\u{651}', '\u{652}',
                    '\u{670}',
                    // foreign 'ؤ'
                ]
            ),
            (
                ScriptLanguage::Uyghur,
                [
                    'ا', 'ب', 'پ', 'ت', 'ج', 'چ', 'خ', 'د', 'ر', 'ز', 'ژ', 'س', 'ش', 'غ', 'ف', 'ق',
                    'ك', 'ڭ', 'ل', 'م', 'ن', 'و', 'ۇ', 'ۆ', 'ۋ', 'ې', 'ى', 'ي', 'ئ', 'ە', 'گ', 'ھ',
                    'ه', // loanwords 'ص'
                    /*unverified*/
                    'ۈ',
                ]
            ),
            // ScriptLanguage::UnknownArabic
        ]),
        Armenian => &[ScriptLanguage::Armenian],
        Avestan => &[ScriptLanguage::Avestan],
        Balinese => &[ScriptLanguage::BalineseBalinese],
        Bamum => &[ScriptLanguage::Bamum],
        BassaVah => &[ScriptLanguage::Bassa],
        Batak => &[
            ScriptLanguage::Angkola,
            ScriptLanguage::Karo,
            ScriptLanguage::MandailingBatak,
            ScriptLanguage::Pakpak,
            ScriptLanguage::Simalungun,
            ScriptLanguage::TobaBatak,
        ],
        Bengali => alphabet_match!([
            (ScriptLanguage::Assamese, []),
            (ScriptLanguage::Bengali, []),
            (ScriptLanguage::BishnupriyaManipuri, []),
            (
                ScriptLanguage::MathBengali, //+
                ['', '', '', '', '', '', '', '', '', ''],
                true, // Strict (no other chars)
            ),
            (ScriptLanguage::MeiteiBengali, []),
        ]),
        BeriaErfe => &[ScriptLanguage::ZaghawaBeriaErfe],
        Bhaiksuki => &[ScriptLanguage::SanskritBhaiksuki],
        Bopomofo => &[ScriptLanguage::ChineseMandarinBopomofo],
        Brahmi => &[ScriptLanguage::SanskritBrahmi, ScriptLanguage::Prakrit],
        Braille => alphabet_match!([
            (
                ScriptLanguage::MathBraille, //+
                ['', '', '', '', '', '', '', '', '', '']
            ),
            ScriptLanguage::UnknownBraille,
        ]),
        Buginese => &[
            ScriptLanguage::BugineseBuginese,
            ScriptLanguage::MakassareseBuginese,
        ],
        Buhid => &[ScriptLanguage::Buhid],
        CanadianAboriginal => &[
            ScriptLanguage::Cree,
            ScriptLanguage::Inuktitut,
            ScriptLanguage::Ojibwe,
        ],
        Carian => &[ScriptLanguage::Carian],
        CaucasianAlbanian => &[ScriptLanguage::CaucasianAlbanian],
        Chakma => &[ScriptLanguage::Chakma],
        Cham => &[ScriptLanguage::ChamEastern, ScriptLanguage::ChamWestern],
        Cherokee => &[ScriptLanguage::Cherokee],
        Chorasmian => &[ScriptLanguage::Chorasmian],
        // During parsing these considered as connectors
        // example1: `can't` for english is one word,
        //  but `one/two` will be parsed as separate words,
        //  because if alphabets of all 3 chars do not intersect, it will be two words
        // example2: `aaa' bbb` for all langs will be parsed as two words without `'`,
        //  because next char after `'` is space, which is not a char of any alphabet
        Common => match ch {
            '\'' => &[
                // Cyrillic
                ScriptLanguage::Belarusian,
                ScriptLanguage::Nenets,
                ScriptLanguage::Ossetian,
                ScriptLanguage::Ukrainian,
                // Latin
                ScriptLanguage::Acehnese,
                ScriptLanguage::Afrikaans,
                ScriptLanguage::AkanTwi,
                ScriptLanguage::AlbanianTosk,
                ScriptLanguage::Asturian,
                ScriptLanguage::AymaraCentral,
                ScriptLanguage::AzerbaijaniNorth,
                ScriptLanguage::Balinese,
                ScriptLanguage::Bambara,
                ScriptLanguage::Banjar,
                ScriptLanguage::Bemba,
                ScriptLanguage::Buginese,
                ScriptLanguage::Catalan,
                ScriptLanguage::Cebuano,
                ScriptLanguage::Chokwe,
                ScriptLanguage::CreoleHaitian,
                ScriptLanguage::Danish,
                ScriptLanguage::Dholuo,
                ScriptLanguage::Dutch,
                ScriptLanguage::Dyula,
                ScriptLanguage::English,
                ScriptLanguage::Faroese,
                ScriptLanguage::Fijian,
                ScriptLanguage::Filipino,
                ScriptLanguage::Finnish,
                ScriptLanguage::Fon,
                ScriptLanguage::French,
                ScriptLanguage::Friulian,
                ScriptLanguage::FulaPulaar,
                ScriptLanguage::FulfuldeNigerian,
                ScriptLanguage::GaelicScottish,
                ScriptLanguage::Galician,
                ScriptLanguage::Ganda,
                ScriptLanguage::GuaraniParaguayan,
                ScriptLanguage::Hausa,
                ScriptLanguage::Hawaiian,
                ScriptLanguage::Icelandic,
                ScriptLanguage::Igbo,
                ScriptLanguage::Ilocano,
                ScriptLanguage::Indonesian,
                ScriptLanguage::Irish,
                ScriptLanguage::Italian,
                ScriptLanguage::Javanese,
                ScriptLanguage::Jingpho,
                ScriptLanguage::Kabuverdianu,
                ScriptLanguage::Kamba,
                ScriptLanguage::KanuriCentral,
                ScriptLanguage::KikongoKituba,
                ScriptLanguage::Kikuyu,
                ScriptLanguage::Kimbundu,
                ScriptLanguage::Kinyarwanda,
                ScriptLanguage::Ligurian,
                ScriptLanguage::Limburgish,
                ScriptLanguage::Lingala,
                ScriptLanguage::Lombard,
                ScriptLanguage::LubaKasai,
                ScriptLanguage::Luxembourgish,
                ScriptLanguage::MalagasyPlateau,
                ScriptLanguage::Malay,
                ScriptLanguage::Maltese,
                ScriptLanguage::Maori,
                ScriptLanguage::Minangkabau,
                ScriptLanguage::Mizo,
                ScriptLanguage::Mossi,
                ScriptLanguage::NorwegianBokmal,
                ScriptLanguage::NorwegianNynorsk,
                ScriptLanguage::Nyanja,
                ScriptLanguage::Occitan,
                ScriptLanguage::OromoSouthern,
                ScriptLanguage::OromoWestCentral,
                ScriptLanguage::Pangasinan,
                ScriptLanguage::Papiamento,
                ScriptLanguage::QuechuaAyacucho,
                ScriptLanguage::Rundi,
                ScriptLanguage::Samoan,
                ScriptLanguage::Sango,
                ScriptLanguage::Sardinian,
                ScriptLanguage::Sepedi,
                ScriptLanguage::Serer,
                ScriptLanguage::Sesotho,
                ScriptLanguage::Shona,
                ScriptLanguage::Sicilian,
                ScriptLanguage::Somali,
                ScriptLanguage::Sundanese,
                ScriptLanguage::Swahili,
                ScriptLanguage::Swati,
                ScriptLanguage::TamasheqLatin,
                ScriptLanguage::TokPisin,
                ScriptLanguage::Tsonga,
                ScriptLanguage::Tswana,
                ScriptLanguage::Tumbuka,
                ScriptLanguage::Turkish,
                ScriptLanguage::Umbundu,
                ScriptLanguage::UzbekNorthern,
                ScriptLanguage::Venetian,
                ScriptLanguage::Welsh,
                ScriptLanguage::Wolof,
                ScriptLanguage::Xhosa,
                ScriptLanguage::Zulu,
            ],
            '¡' => &[ScriptLanguage::AymaraCentral, ScriptLanguage::Spanish],
            '¿' => &[
                ScriptLanguage::AymaraCentral,
                ScriptLanguage::QuechuaAyacucho,
                ScriptLanguage::Spanish,
            ],
            'ʻ' => &[
                ScriptLanguage::Hawaiian,
                ScriptLanguage::Samoan,
                ScriptLanguage::UzbekNorthern,
            ],
            '·' => &[
                ScriptLanguage::Catalan,
                ScriptLanguage::EnglishShavian,
                ScriptLanguage::French,
                ScriptLanguage::Japanese,
                ScriptLanguage::Korean,
                ScriptLanguage::Latin,
                ScriptLanguage::Occitan,
            ],
            // 'ˈ' | 'ː' => &[ScriptLanguage::IPA],
            // '-' => bypassed for all langs in `word_iter`
            _ => &[], // must be always empty
        },
        Coptic => &[ScriptLanguage::Coptic],
        Cuneiform => &[
            ScriptLanguage::Akkadian,
            ScriptLanguage::Hittite,
            ScriptLanguage::LuwianCuneiform,
            ScriptLanguage::Sumerian,
        ],
        Cypriot => &[ScriptLanguage::AncientGreek],
        CyproMinoan => &[ScriptLanguage::Minoan],
        Cyrillic => alphabet_match!([
            (
                ScriptLanguage::Abkhaz, //+
                [
                    'А', 'а', 'Б', 'б', 'В', 'в', 'Г', 'г', 'Ӷ', 'ӷ', 'Ҕ', 'ҕ', 'Д', 'д', 'Е', 'е',
                    'Ж', 'ж', 'З', 'з', 'Ӡ', 'ӡ', 'И', 'и', 'К', 'к', 'Қ', 'қ', 'Ҟ', 'ҟ', 'Л', 'л',
                    'М', 'м', 'Н', 'н', 'О', 'о', 'П', 'п', 'Ԥ', 'ԥ', 'Ҧ', 'ҧ', 'Р', 'р', 'С', 'с',
                    'Т', 'т', 'Ҭ', 'ҭ', 'У', 'у', 'Ф', 'ф', 'Х', 'х', 'Ҳ', 'ҳ', 'Ц', 'ц', 'Ҵ', 'ҵ',
                    'Ч', 'ч', 'Ҷ', 'ҷ', 'Ҽ', 'ҽ', 'Ҿ', 'ҿ', 'Ш', 'ш', 'Ы', 'ы', 'Ҩ', 'ҩ', 'Џ', 'џ',
                    'Ь', 'ь', 'Ә', 'ә',
                ]
            ),
            (
                ScriptLanguage::Bashkir, //+
                [
                    'А', 'а', 'Б', 'б', 'В', 'в', 'Г', 'г', 'Ғ', 'ғ', 'Д', 'д', 'Ҙ', 'ҙ', 'Е', 'е',
                    'Ё', 'ё', 'Ж', 'ж', 'З', 'з', 'И', 'и', 'Й', 'й', 'К', 'к', 'Ҡ', 'ҡ', 'Л', 'л',
                    'М', 'м', 'Н', 'н', 'Ң', 'ң', 'О', 'о', 'Ө', 'ө', 'П', 'п', 'Р', 'р', 'С', 'с',
                    'Ҫ', 'ҫ', 'Т', 'т', 'У', 'у', 'Ү', 'ү', 'Ф', 'ф', 'Х', 'х', 'Һ', 'һ', 'Ц', 'ц',
                    'Ч', 'ч', 'Ш', 'ш', 'Щ', 'щ', 'Ъ', 'ъ', 'Ы', 'ы', 'Ь', 'ь', 'Э', 'э', 'Ә', 'ә',
                    'Ю', 'ю', 'Я', 'я',
                ]
            ),
            (
                ScriptLanguage::Belarusian,
                [
                    'А', 'а', 'Б', 'б', 'В', 'в', 'Г', 'г', 'Д', 'д', 'Е', 'е', 'Ё', 'ё', 'Ж', 'ж',
                    'З', 'з', 'І', 'і', 'Й', 'й', 'К', 'к', 'Л', 'л', 'М', 'м', 'Н', 'н', 'О', 'о',
                    'П', 'п', 'Р', 'р', 'С', 'с', 'Т', 'т', 'У', 'у', 'Ў', 'ў', 'Ф', 'ф', 'Х', 'х',
                    'Ц', 'ц', 'Ч', 'ч', 'Ш', 'ш', 'Ы', 'ы', 'Ь', 'ь', 'Э', 'э', 'Ю', 'ю', 'Я', 'я',
                ]
            ),
            (
                ScriptLanguage::Bulgarian,
                [
                    'А', 'а', 'Б', 'б', 'В', 'в', 'Г', 'г', 'Д', 'д', 'Е', 'е', 'Ж', 'ж', 'З', 'з',
                    'И', 'и', 'Й', 'й', 'К', 'к', 'Л', 'л', 'М', 'м', 'Н', 'н', 'О', 'о', 'П', 'п',
                    'Р', 'р', 'С', 'с', 'Т', 'т', 'У', 'у', 'Ф', 'ф', 'Х', 'х', 'Ц', 'ц', 'Ч', 'ч',
                    'Ш', 'ш', 'Щ', 'щ', 'Ъ', 'ъ', 'Ь', 'ь', 'Ю', 'ю', 'Я', 'я',
                ]
            ),
            (
                ScriptLanguage::Buryat, //+
                [
                    'А', 'а', 'Б', 'б', 'В', 'в', 'Г', 'г', 'Д', 'д', 'Е', 'е', 'Ё', 'ё', 'Ж', 'ж',
                    'З', 'з', 'И', 'и', 'Й', 'й', 'К', 'к', 'Л', 'л', 'М', 'м', 'Н', 'н', 'О', 'о',
                    'Ө', 'ө', 'П', 'п', 'Р', 'р', 'С', 'с', 'Т', 'т', 'У', 'у', 'Ү', 'ү', 'Ф', 'ф',
                    'Х', 'х', 'Һ', 'һ', 'Ц', 'ц', 'Ч', 'ч', 'Ш', 'ш', 'Щ', 'щ', 'Ъ', 'ъ', 'Ы', 'ы',
                    'Ь', 'ь', 'Э', 'э', 'Ю', 'ю', 'Я', 'я',
                ]
            ),
            (
                ScriptLanguage::Chechen, //+
                [
                    'А', 'а', 'Б', 'б', 'В', 'в', 'Г', 'г', 'Д', 'д', 'Е', 'е', 'Ё', 'ё', 'Ж', 'ж',
                    'З', 'з', 'И', 'и', 'Й', 'й', 'К', 'к', 'Л', 'л', 'М', 'м', 'Н', 'н', 'О', 'о',
                    'П', 'п', 'Р', 'р', 'С', 'с', 'Т', 'т', 'У', 'у', 'Ф', 'ф', 'Х', 'х', 'Ц', 'ц',
                    'Ч', 'ч', 'Ш', 'ш', 'Щ', 'щ', 'Ъ', 'ъ', 'Ы', 'ы', 'Ь', 'ь', 'Э', 'э', 'Ю', 'ю',
                    'Я', 'я', 'Ӏ', 'ӏ',
                ]
            ),
            (
                ScriptLanguage::ChurchSlavonicOld,
                [
                    'А', 'а', 'Б', 'б', 'В', 'в', 'Г', 'г', 'Д', 'д', 'Є', 'є', 'Ж', 'ж', 'Ѕ', 'ѕ',
                    'З', 'з', '', '', 'И', 'и', 'І', 'і', 'Ї', 'ї', 'К', 'к', 'Л', 'л', 'М', 'м',
                    'Н', 'н', 'О', 'о', 'П', 'п', 'Р', 'р', 'С', 'с', 'Т', 'т', 'Ѹ', 'ѹ', '', '',
                    'Ф', 'ф', 'Х', 'х', 'Ѡ', 'ѡ', 'Ѿ', 'ѿ', 'Ц', 'ц', 'Ч', 'ч', 'Ш', 'ш', 'Щ', 'щ',
                    'Ъ', 'ъ', '', '', 'Ь', 'ь', 'Ѣ', 'ѣ', '', '', 'Ѥ', 'ѥ', 'Ю', 'ю', 'Ѫ', 'ѫ',
                    'Ѭ', 'ѭ', 'Ѧ', 'ѧ', 'Ѩ', 'ѩ', 'Ѯ', 'ѯ', 'Ѱ', 'ѱ', 'Ѳ', 'ѳ', 'Ѵ', 'ѵ', 'Ҁ', 'ҁ',
                ]
            ),
            (
                ScriptLanguage::Chuvash, //+
                [
                    'А', 'а', 'Ӑ', 'ӑ', 'Б', 'б', 'В', 'в', 'Г', 'г', 'Д', 'д', 'Е', 'е', 'Ё', 'ё',
                    'Ӗ', 'ӗ', 'Ж', 'ж', 'З', 'з', 'И', 'и', 'Й', 'й', 'К', 'к', 'Л', 'л', 'М', 'м',
                    'Н', 'н', 'О', 'о', 'П', 'п', 'Р', 'р', 'С', 'с', 'Ҫ', 'ҫ', 'Т', 'т', 'У', 'у',
                    'Ӳ', 'ӳ', 'Ф', 'ф', 'Х', 'х', 'Ц', 'ц', 'Ч', 'ч', 'Ш', 'ш', 'Щ', 'щ', 'Ъ', 'ъ',
                    'Ы', 'ы', 'Ь', 'ь', 'Э', 'э', 'Ю', 'ю', 'Я', 'я',
                ]
            ),
            (
                ScriptLanguage::Kazakh,
                [
                    'А', 'а', 'Ә', 'ә', 'Б', 'б', 'В', 'в', 'Г', 'г', 'Ғ', 'ғ', 'Д', 'д', 'Е', 'е',
                    'Ё', 'ё', 'Ж', 'ж', 'З', 'з', 'И', 'и', 'Й', 'й', 'К', 'к', 'Қ', 'қ', 'Л', 'л',
                    'М', 'м', 'Н', 'н', 'Ң', 'ң', 'О', 'о', 'Ө', 'ө', 'П', 'п', 'Р', 'р', 'С', 'с',
                    'Т', 'т', 'У', 'у', 'Ұ', 'ұ', 'Ү', 'ү', 'Ф', 'ф', 'Х', 'х', 'Һ', 'һ', 'Ц', 'ц',
                    'Ч', 'ч', 'Ш', 'ш', 'Щ', 'щ', 'Ъ', 'ъ', 'Ы', 'ы', 'І', 'і', 'Ь', 'ь', 'Э', 'э',
                    'Ю', 'ю', 'Я', 'я',
                ]
            ),
            (
                ScriptLanguage::Kyrgyz,
                [
                    'А', 'а', 'Б', 'б', 'В', 'в', 'Г', 'г', 'Д', 'д', 'Е', 'е', 'Ё', 'ё', 'Ж', 'ж',
                    'З', 'з', 'И', 'и', 'Й', 'й', 'К', 'к', 'Л', 'л', 'М', 'м', 'Н', 'н', 'Ң', 'ң',
                    'О', 'о', 'Ө', 'ө', 'П', 'п', 'Р', 'р', 'С', 'с', 'Т', 'т', 'У', 'у', 'Ү', 'ү',
                    'Ф', 'ф', 'Х', 'х', 'Ц', 'ц', 'Ч', 'ч', 'Ш', 'ш', 'Щ', 'щ', 'Ъ', 'ъ', 'Ы', 'ы',
                    'Ь', 'ь', 'Э', 'э', 'Ю', 'ю', 'Я', 'я',
                ]
            ),
            (
                ScriptLanguage::Macedonian, //+
                [
                    'А', 'а', 'Б', 'б', 'В', 'в', 'Г', 'г', 'Д', 'д', 'Ѓ', 'ѓ', 'Е', 'е', 'Ж', 'ж',
                    'З', 'з', 'Ѕ', 'ѕ', 'И', 'и', 'Ј', 'ј', 'К', 'к', 'Л', 'л', 'Љ', 'љ', 'М', 'м',
                    'Н', 'н', 'Њ', 'њ', 'О', 'о', 'П', 'п', 'Р', 'р', 'С', 'с', 'Т', 'т', 'Ќ', 'ќ',
                    'У', 'у', 'Ф', 'ф', 'Х', 'х', 'Ц', 'ц', 'Ч', 'ч', 'Џ', 'џ', 'Ш', 'ш',
                ]
            ),
            (
                ScriptLanguage::MariEastern, //+
                [
                    'А', 'а', 'Б', 'б', 'В', 'в', 'Г', 'г', 'Д', 'д', 'Е', 'е', 'Ё', 'ё', 'Ж', 'ж',
                    'З', 'з', 'И', 'и', 'Й', 'й', 'К', 'к', 'Л', 'л', 'М', 'м', 'Н', 'н', 'Ҥ', 'ҥ',
                    'О', 'о', 'Ӧ', 'ӧ', 'П', 'п', 'Р', 'р', 'С', 'с', 'Т', 'т', 'У', 'у', 'Ӱ', 'ӱ',
                    'Ф', 'ф', 'Х', 'х', 'Ц', 'ц', 'Ч', 'ч', 'Ш', 'ш', 'Щ', 'щ', 'Ъ', 'ъ', 'Ы', 'ы',
                    'Ь', 'ь', 'Э', 'э', 'Ю', 'ю', 'Я', 'я',
                ]
            ),
            (
                ScriptLanguage::MongolianKhalkha,
                [
                    'А', 'а', 'Б', 'б', 'В', 'в', 'Г', 'г', 'Д', 'д', 'Е', 'е', 'Ё', 'ё', 'Ж', 'ж',
                    'З', 'з', 'И', 'и', 'Й', 'й', 'К', 'к', 'Л', 'л', 'М', 'м', 'Н', 'н', 'О', 'о',
                    'Ө', 'ө', 'П', 'п', 'Р', 'р', 'С', 'с', 'Т', 'т', 'У', 'у', 'Ү', 'ү', 'Ф', 'ф',
                    'Х', 'х', 'Ц', 'ц', 'Ч', 'ч', 'Ш', 'ш', 'Щ', 'щ', 'Ъ', 'ъ', 'Ы', 'ы', 'Ь', 'ь',
                    'Э', 'э', 'Ю', 'ю', 'Я', 'я',
                ]
            ),
            (
                ScriptLanguage::Nenets, //+
                [
                    'А', 'а', 'Б', 'б', 'В', 'в', 'Г', 'г', 'Д', 'д', 'Е', 'е', 'Ё', 'ё', 'Ж', 'ж',
                    'З', 'з', 'И', 'и', 'Й', 'й', 'К', 'к', 'Л', 'л', 'М', 'м', 'Н', 'н', 'Ӈ', 'ӈ',
                    'О', 'о', 'П', 'п', 'Р', 'р', 'С', 'с', 'Т', 'т', 'У', 'у', 'Ф', 'ф', 'Х', 'х',
                    'Ц', 'ц', 'Ч', 'ч', 'Ш', 'ш', 'Щ', 'щ', 'Ъ', 'ъ', 'Ы', 'ы', 'Ь', 'ь', 'Э', 'э',
                    'Ю', 'ю', 'Я', 'я',
                ]
            ),
            (
                ScriptLanguage::Ossetian, //+
                [
                    'А', 'а', 'Ӕ', 'ӕ', 'Б', 'б', 'В', 'в', 'Г', 'г', 'Д', 'д', 'Е', 'е', 'Ё', 'ё',
                    'Ж', 'ж', 'З', 'з', 'И', 'и', 'Й', 'й', 'К', 'к', 'Л', 'л', 'М', 'м', 'Н', 'н',
                    'О', 'о', 'П', 'п', 'Р', 'р', 'С', 'с', 'Т', 'т', 'У', 'у', 'Ф', 'ф', 'Х', 'х',
                    'Ц', 'ц', 'Ч', 'ч', 'Ш', 'ш', 'Щ', 'щ', 'Ъ', 'ъ', 'Ы', 'ы', 'Ь', 'ь', 'Э', 'э',
                    'Ю', 'ю', 'Я', 'я',
                ]
            ),
            (
                ScriptLanguage::Russian, //+++
                [
                    'А', 'а', 'Б', 'б', 'В', 'в', 'Г', 'г', 'Д', 'д', 'Е', 'е', 'Ё', 'ё', 'Ж', 'ж',
                    'З', 'з', 'И', 'и', 'Й', 'й', 'К', 'к', 'Л', 'л', 'М', 'м', 'Н', 'н', 'О', 'о',
                    'П', 'п', 'Р', 'р', 'С', 'с', 'Т', 'т', 'У', 'у', 'Ф', 'ф', 'Х', 'х', 'Ц', 'ц',
                    'Ч', 'ч', 'Ш', 'ш', 'Щ', 'щ', 'Ъ', 'ъ', 'Ы', 'ы', 'Ь', 'ь', 'Э', 'э', 'Ю', 'ю',
                    'Я', 'я',
                ]
            ),
            (
                ScriptLanguage::Serbian,
                [
                    'А', 'а', 'Б', 'б', 'В', 'в', 'Г', 'г', 'Д', 'д', 'Ђ', 'ђ', 'Е', 'е', 'Ж', 'ж',
                    'З', 'з', 'И', 'и', 'Ј', 'ј', 'К', 'к', 'Л', 'л', 'Љ', 'љ', 'М', 'м', 'Н', 'н',
                    'Њ', 'њ', 'О', 'о', 'П', 'п', 'Р', 'р', 'С', 'с', 'Т', 'т', 'Ћ', 'ћ', 'У', 'у',
                    'Ф', 'ф', 'Х', 'х', 'Ц', 'ц', 'Ч', 'ч', 'Џ', 'џ', 'Ш', 'ш',
                ]
            ),
            (
                ScriptLanguage::Tajik, //+
                [
                    'А', 'а', 'Б', 'б', 'В', 'в', 'Г', 'г', 'Ғ', 'ғ', 'Д', 'д', 'Е', 'е', 'Ё', 'ё',
                    'Ж', 'ж', 'З', 'з', 'И', 'и', 'Ӣ', 'ӣ', 'Й', 'й', 'К', 'к', 'Қ', 'қ', 'Л', 'л',
                    'М', 'м', 'Н', 'н', 'О', 'о', 'П', 'п', 'Р', 'р', 'С', 'с', 'Т', 'т', 'У', 'у',
                    'Ӯ', 'ӯ', 'Ф', 'ф', 'Х', 'х', 'Ҳ', 'ҳ', 'Ч', 'ч', 'Ҷ', 'ҷ', 'Ш', 'ш', 'Ъ', 'ъ',
                    'Э', 'э', 'Ю', 'ю', 'Я', 'я',
                ]
            ),
            (
                ScriptLanguage::Tatar, //+
                [
                    'А', 'а', 'Ә', 'ә', 'Б', 'б', 'В', 'в', 'Ў', 'ў', 'Г', 'г', 'Ғ', 'ғ', 'Д', 'д',
                    'Е', 'е', 'Ё', 'ё', 'Ж', 'ж', 'Җ', 'җ', 'З', 'з', 'И', 'и', 'Й', 'й', 'К', 'к',
                    'Қ', 'қ', 'Л', 'л', 'М', 'м', 'Н', 'н', 'Ң', 'ң', 'О', 'о', 'Ө', 'ө', 'П', 'п',
                    'Р', 'р', 'С', 'с', 'Т', 'т', 'У', 'у', 'Ү', 'ү', 'Ф', 'ф', 'Х', 'х', 'Һ', 'һ',
                    'Ц', 'ц', 'Ч', 'ч', 'Ш', 'ш', 'Щ', 'щ', 'Ъ', 'ъ', 'Ы', 'ы', 'Ь', 'ь', 'Э', 'э',
                    'Ю', 'ю', 'Я', 'я',
                ]
            ),
            (
                ScriptLanguage::Ukrainian, //+
                [
                    'А', 'а', 'Б', 'б', 'В', 'в', 'Г', 'г', 'Ґ', 'ґ', 'Д', 'д', 'Е', 'е', 'Є', 'є',
                    'Ж', 'ж', 'З', 'з', 'И', 'и', 'І', 'і', 'Ї', 'ї', 'Й', 'й', 'К', 'к', 'Л', 'л',
                    'М', 'м', 'Н', 'н', 'О', 'о', 'П', 'п', 'Р', 'р', 'С', 'с', 'Т', 'т', 'У', 'у',
                    'Ф', 'ф', 'Х', 'х', 'Ц', 'ц', 'Ч', 'ч', 'Ш', 'ш', 'Щ', 'щ', 'Ь', 'ь', 'Ю', 'ю',
                    'Я', 'я',
                ]
            ),
            ScriptLanguage::UnknownCyrillic
        ]),
        Deseret => &[ScriptLanguage::EnglishDeseret],
        Devanagari => alphabet_match!([
            (
                ScriptLanguage::Awadhi,
                [
                    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '',
                ],
            ),
            (
                ScriptLanguage::Bhojpuri,
                [
                    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '',
                ],
            ),
            (
                ScriptLanguage::Chhattisgarhi,
                [
                    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '',
                ],
            ),
            (
                ScriptLanguage::Dogri,
                [
                    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '',
                ],
            ),
            (
                ScriptLanguage::Hindi,
                [
                    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '',
                ],
            ),
            (
                ScriptLanguage::KashmiriDevanagari,
                [
                    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                ],
            ),
            (
                ScriptLanguage::Magahi,
                [
                    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '',
                ],
            ),
            (
                ScriptLanguage::Maithili,
                [
                    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '',
                ],
            ),
            (
                ScriptLanguage::Marathi,
                [
                    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                ],
            ),
            (
                ScriptLanguage::MathDevanagari, //+
                ['', '', '', '', '', '', '', '', '', ''],
                true, // Strict (no other chars)
            ),
            (
                ScriptLanguage::Nepali,
                [
                    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '',
                ],
            ),
            (
                ScriptLanguage::Sanskrit,
                [
                    '', '', '', '', '', '', '', '', '', /* 'ॡ', */ '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '',
                ],
            ),
            (
                ScriptLanguage::SanskritVedic,
                [
                    '', '', '', '', '', '', '', '', '', /* 'ॡ', */ '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '',
                ],
            ),
            (
                ScriptLanguage::SaurashtraDevanagari,
                [
                    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '',
                ],
            ),
            (
                ScriptLanguage::SindhiDevanagari,
                [
                    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '',
                ],
            ),
            (
                ScriptLanguage::Wancho,
                [
                    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '',
                ],
            ),
            // ScriptLanguage::UnknownDevanagari
        ]),
        DivesAkuru => &[ScriptLanguage::DhivehiDivesAkuru],
        Dogra => &[ScriptLanguage::DogriDogra],
        Duployan => &[
            ScriptLanguage::EnglishDuployan,
            ScriptLanguage::FrenchDuployan,
        ],
        EgyptianHieroglyphs => &[ScriptLanguage::EgyptianHieroglyphs],
        Elbasan => &[ScriptLanguage::AlbanianElbasan],
        Elymaic => &[ScriptLanguage::AramaicElymaic],
        Ethiopic => &[
            ScriptLanguage::Amharic,
            ScriptLanguage::Geez,
            // ScriptLanguage::Oromo,
            ScriptLanguage::Tigrinya,
        ],
        Garay => &[ScriptLanguage::WolofGaray],
        Georgian => &[ScriptLanguage::Georgian],
        Glagolitic => &[ScriptLanguage::ChurchSlavonicOldGlagolitic],
        Gothic => &[ScriptLanguage::Gothic],
        Grantha => &[
            ScriptLanguage::SanskritGrantha,
            ScriptLanguage::TamilGrantha,
        ],
        Greek => &[ScriptLanguage::Greek],
        Gujarati => &[ScriptLanguage::Gujarati],
        GunjalaGondi => &[ScriptLanguage::GondiGunjala],
        Gurmukhi => &[ScriptLanguage::PunjabiEastern],
        GurungKhema => &[ScriptLanguage::GurungKhema],
        Han => alphabet_match!([
            (
                ScriptLanguage::ChineseMandarinSimplified,
                [
                    // https://en.wikisource.org/wiki/Translation:List_of_Frequently_Used_Characters_in_Modern_Chinese
                    // https://www.tutormandarin.net/en/list-of-different-simplified-and-traditional-characters/
                    // invalid '十', '三', '二', '四', '五', '後', '七', '九', '八', '六', '百',
                    // '千', '涌', '着', '污', '恒', '症', '沉', '扎', '厘',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '广', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '绿', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '怀', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '线', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '亿', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '屿', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '饿', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '鸿', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '齿', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '贿', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '访', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '轿', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '湿', '', '',
                    '', '', '', '', '', '', '', '寿', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                ]
            ),
            (
                ScriptLanguage::ChineseMandarinTraditional,
                [
                    '', '', '', '', '', '', '', '', '', '', '', '',
                    // simplified autoconverted
                    // https://www.lexilogos.com/keyboard/chinese_conversion.htm
                    // then here https://www.chineseconverter.com/en/convert/simplified-to-traditional
                    // analogue chars are from here
                    // https://www.chinese-tools.com/tools/converter-simptrad.html
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '漿', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '滿',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '調', '', '', '', '',
                    '', '', '', '', '', '', '', '', '貿', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '綿',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '禿', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '輿', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '鴿', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '',
                ]
            ),
            (
                ScriptLanguage::ChineseCantoneseTraditional,
                [
                    '', '', '', '', //
                    // http://whitey.net/en/typing-cantonese-characters.htm
                    // invalid '傾','緊','呢',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    // DO NOT EDIT BELOW (copy from ChineseMandarinTraditional from above)
                    '', '', '', '', '', '', '', '', '', '', '', '',
                    // simplified autoconverted
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '漿', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '滿',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '調', '', '', '', '',
                    '', '', '', '', '', '', '', '', '貿', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '綿',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '禿', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '輿', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '鴿', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '',
                ]
            ),
            (
                // Hanja
                ScriptLanguage::Korean,
                [
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '麿', '寿', '', '', '', '', '',
                    // DO NOT EDIT BELOW (copy from ChineseMandarinTraditional from above)
                    '', '', '', '', '', '', '', '', '', '', '', '',
                    // simplified autoconverted
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '漿', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '滿',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '調', '', '', '', '',
                    '', '', '', '', '', '', '', '', '貿', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '綿',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '禿', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '輿', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '鴿', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '',
                ]
            ),
            /* ( // needs words separation
                ScriptLanguage::MathHan,
                [
                    https://en.wikipedia.org/wiki/Chinese_numerals#Financial_numerals
                    '〇', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '百', '千',
                    // https://en.wikipedia.org/wiki/Korean_numerals#Substitution_for_disambiguation
                    '壹', '貳', '參', '肆', '伍', '陸', '柒', '捌', '玖', '拾', '佰', '仟', '阡',
                ]
            ), */
            (
                // Kanji, also uses all Traditional Chinese characters
                ScriptLanguage::Japanese,
                [
                    // Jōyō Shinjitai kanji (https://en.wikipedia.org/wiki/List_of_j%C5%8Dy%C5%8D_kanji)
                    // invalid '台','海','者','即','都','著','社','真','研','神','免','器','層',
                    // '朗','殺','祖','福','突','署','梅','秘','概','翻','余','既','敏', 祈 欠 糸
                    // '祝','繁','隆','諸','墨','郎','廊','祥','煮','勤','碑','予','卑','憎','暑',
                    // '恒','喝','岳','臭','穀','慎','逸','僧','贈','瓶','慨','悔','勉','侮',
                    // alternative forms? 恵 掲 黒
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '湿', '', '', '', '', '寿', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '',
                    // Jinmeiyō Kanji (https://en.wikipedia.org/wiki/Ky%C5%ABjitai)
                    '', /* '凜', */ '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '',
                    // Hyōgai kanji (https://en.wikipedia.org/wiki/Ky%C5%ABjitai)
                    // invalid '并', '屏',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', /* '顛', */ '', '', '', '',
                    // Kokuji (https://en.wikipedia.org/wiki/Kokuji)
                    // Jōyō Kanji
                    // invalid '腺',
                    '', '', '', '', '', '', '', '',
                    // Jinmeiyō Kanji (https://en.wikipedia.org/wiki/Ky%C5%ABjitai)
                    '', '', /* '脹', */ /* '錘', */ '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '麿', //
                    // Hyōgaiji
                    '', //
                    // https://en.wikipedia.org/wiki/Extended_shinjitai
                    '', '', '', '', '', '', '', //
                    // others
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '',
                    // Shinjitai dupes from copy below '緒','節','懲','虜','漢','視','難','類',
                    // '響','賓','謹','鎮','頻','衛','欄','禍','為','餅','練','嘆','証','偽','絶',
                    // '併','並',
                    // others '緖','後',
                    // DO NOT EDIT BELOW (copy from ChineseMandarinTraditional from above)
                    '', '', '', '', '', '', '', '', '', '', '', '',
                    // simplified autoconverted
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '漿', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '滿',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '調', '', '', '', '',
                    '', '', '', '', '', '', '', '', '貿', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '綿',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '禿', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '輿', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '鴿', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '',
                ]
            ),
        ]),
        Hangul => &[ScriptLanguage::Korean],
        HanifiRohingya => &[ScriptLanguage::Rohingya],
        Hanunoo => &[ScriptLanguage::Hanunoo],
        Hatran => &[ScriptLanguage::AramaicHatran],
        Hebrew => alphabet_match!([
            (
                ScriptLanguage::Hebrew,
                [
                    'א', 'ב', 'ג', 'ד', 'ה', 'ו', 'ז', 'ח', 'ט', 'י', 'כ', 'ל', 'מ', 'נ', 'ס', 'ע',
                    'פ', 'צ', 'ק', 'ר', 'ש', 'ת'
                ]
            ),
            (
                ScriptLanguage::YiddishEastern,
                [
                    'א', 'ב', 'ג', 'ד', 'ה', 'ו', 'ז', 'ח', 'ט', 'י', 'ײ', 'כ', 'ל', 'מ', 'נ', 'ס',
                    'ע', 'פ', /* 'פּ' */ '\u{5bc}', /* 'פֿ' */ '\u{5bf}', 'צ', 'ק',
                    'ר', 'ש', 'ת', 'װ'
                ]
            ),
        ]),
        Hiragana => &[ScriptLanguage::Japanese],
        ImperialAramaic => &[ScriptLanguage::AramaicImperial],
        Inherited => &[], // must be always empty
        InscriptionalPahlavi => &[ScriptLanguage::MiddlePersianPahlaviInscriptional],
        InscriptionalParthian => &[ScriptLanguage::Parthian],
        Javanese => &[ScriptLanguage::JavaneseJavanese],
        Kaithi => &[
            ScriptLanguage::BhojpuriKaithi,
            ScriptLanguage::HindiKaithi,
            ScriptLanguage::MagahiKaithi,
            ScriptLanguage::MaithiliKaithi,
        ],
        Kannada => &[ScriptLanguage::Kannada, ScriptLanguage::Tulu],
        Katakana => &[ScriptLanguage::Japanese],
        Kawi => &[ScriptLanguage::OldJavanese, ScriptLanguage::SanskritKawi],
        KayahLi => &[ScriptLanguage::KayahEastern, ScriptLanguage::KayahWestern],
        Kharoshthi => &[ScriptLanguage::Gandhari],
        KhitanSmallScript => &[ScriptLanguage::Khitan],
        Khmer => &[ScriptLanguage::Khmer, ScriptLanguage::KhmerNorthern],
        Khojki => &[ScriptLanguage::KutchiKhojki, ScriptLanguage::SindhiKhojki],
        Khudawadi => &[ScriptLanguage::SindhiKhudawadi],
        KiratRai => &[ScriptLanguage::Bantawa],
        Lao => &[ScriptLanguage::Lao],
        Latin => alphabet_match!([
            (
                ScriptLanguage::Acehnese, //+
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'G', 'g', 'H', 'h', 'I', 'i',
                    'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p', 'R', 'r',
                    'S', 's', 'T', 't', 'U', 'u', 'W', 'w', 'Y', 'y', 'É', 'é', 'È', 'è', 'Ë', 'ë',
                    'Ô', 'ô', 'Ö', 'ö' // loanwords F, Q, V, X, Z
                ]
            ),
            (
                ScriptLanguage::Afrikaans, //++
                [
                    'Á', 'á', 'A', 'a', 'Ä', 'ä', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'É', 'é',
                    'È', 'è', 'Ê', 'ê', 'Ë', 'ë', 'F', 'f', 'G', 'g', 'H', 'h', 'I', 'i', 'Í', 'í',
                    'Î', 'î', 'Ï', 'ï', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'ʼn', 'O',
                    'o', 'Ó', 'ó', 'Ô', 'ô', 'Ö', 'ö', 'P', 'p', 'Q', 'q', 'R', 'r', 'S', 's', 'T',
                    't', 'Û', 'û', 'U', 'u', 'Ú', 'ú', 'Ü', 'ü', 'V', 'v', 'W', 'w', 'X', 'x', 'Ý',
                    'ý', 'Y', 'y', 'Z', 'z',
                ]
            ),
            (
                ScriptLanguage::AkanFante, //+
                [
                    'A', 'a', 'B', 'b', 'D', 'd', 'E', 'e', 'Ɛ', 'ɛ', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'K', 'k', 'M', 'm', 'N', 'n', 'O', 'o', 'Ɔ', 'ɔ', 'P', 'p', 'R', 'r',
                    'S', 's', 'T', 't', 'U', 'u', 'W', 'w', 'Y', 'y', 'Z', 'z',
                ]
            ),
            (
                ScriptLanguage::AkanTwi, //++
                [
                    'A', 'a', 'B', 'b', 'D', 'd', 'E', 'e', 'Ɛ', 'ɛ', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'Ɔ', 'ɔ', 'P', 'p',
                    'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'W', 'w', 'Y', 'y', 'Ã', 'ã', 'Á', 'á',
                    '', '', 'Ĩ', 'ĩ', 'Õ', 'õ', 'Ũ',
                    'ũ',
                    // any more diacritics?
                    // loanwords C, J, Q, V, X, Z
                ]
            ),
            (
                ScriptLanguage::AlbanianTosk, //+
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'Ç', 'ç', 'D', 'd', /* 'Dh', 'dh', */ 'E',
                    'e', 'Ë', 'ë', 'F', 'f', 'G', 'g', /* 'Gj', 'gj', */ 'H', 'h', 'I', 'i',
                    'J', 'j', 'K', 'k', 'L', 'l', /* 'Ll', 'll', */ 'M', 'm', 'N', 'n',
                    /* 'Nj', 'nj', */ 'O', 'o', 'P', 'p', 'Q', 'q', 'R', 'r',
                    /* 'Rr', 'rr', */ 'S', 's', /* 'Sh', 'sh', */ 'T', 't',
                    /* 'Th', 'th', */ 'U', 'u', 'V', 'v', 'X', 'x',
                    /* 'Xh', 'xh', */ 'Y', 'y', 'Z', 'z', /* 'Zh', 'zh', */
                ]
            ),
            (
                ScriptLanguage::Asturian, //+
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'Ñ', 'ñ', 'O', 'o',
                    'P', 'p', 'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w',
                    'X', 'x', 'Y', 'y', 'Z', 'z', 'Á', 'á', 'É', 'é', 'Í', 'í', 'Ó', 'ó', 'Ú', 'ú',
                    'Ü', 'ü',
                ]
            ),
            (
                ScriptLanguage::AymaraCentral, //++
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'Ñ', 'ñ', 'O', 'o',
                    'P', 'p', 'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w',
                    'X', 'x', 'Y', 'y', 'Z', 'z', 'Ä', 'ä', 'Ï', 'ï', 'Ü', 'ü', 'Á', 'á', 'É', 'é',
                    'Í', 'í', 'Ó', 'ó', 'Ú', 'ú',
                ]
            ),
            (
                ScriptLanguage::AzerbaijaniNorth, //++
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'Ç', 'ç', 'D', 'd', 'E', 'e', 'Ə', 'ə', 'F', 'f',
                    'G', 'g', 'Ğ', 'ğ', 'H', 'h', 'X', 'x', 'I', 'ı', 'İ', 'i', 'J', 'j', 'K', 'k',
                    'Q', 'q', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'Ö', 'ö', 'P', 'p', 'R', 'r',
                    'S', 's', 'Ş', 'ş', 'T', 't', 'U', 'u', 'Ü', 'ü', 'V', 'v', 'Y', 'y', 'Z', 'z',
                ]
            ),
            (
                ScriptLanguage::Balinese, //++
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'W', 'w', 'Y', 'y', 'É', 'é', 'V', 'v',
                    'Z', 'z'
                ]
            ),
            (
                ScriptLanguage::Bambara, //++
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'Ɛ', 'ɛ', 'F', 'f', 'G', 'g',
                    'H', 'h', 'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'Ɲ', 'ɲ',
                    'Ŋ', 'ŋ', 'O', 'o', 'Ɔ', 'ɔ', 'P', 'p', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u',
                    'W', 'w', 'Y', 'y', 'Z', 'z', 'À', 'à', 'È', 'è', 'É', 'é', 'Ô', 'ô', 'Ù', 'ù',
                    'Ú',
                    'ú',
                    // any more diacritics? 'Á', 'á', 'Ì', 'ì', 'Í', 'í', 'Ò', 'ò', 'Ó', 'ó',
                    // No ɳ
                ]
            ),
            (
                ScriptLanguage::Banjar, //+
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'X', 'x',
                    'Y', 'y', 'Z', 'z', 'É', 'é'
                ]
            ),
            (
                ScriptLanguage::Basque, //++
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'Ñ', 'ñ', 'O', 'o',
                    'P', 'p', 'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w',
                    'X', 'x', 'Y', 'y', 'Z', 'z', 'Ç', 'ç', 'Á', 'á', 'É', 'é'
                ]
            ),
            (
                ScriptLanguage::Bemba, //+
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'Y', 'y', 'Z', 'z'
                ]
            ),
            (
                ScriptLanguage::Bosnian, //++
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'Č', 'č', 'Ć', 'ć', 'D', 'd', 'Đ', 'đ', 'E', 'e',
                    'F', 'f', 'G', 'g', 'H', 'h', 'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l',
                    /* 'Lj', 'lj', */ 'M', 'm', 'N', 'n', /* 'Nj', 'nj', */ 'O', 'o',
                    'P', 'p', 'R', 'r', 'S', 's', 'Š', 'š', 'T', 't', 'U', 'u', 'V', 'v', 'Z', 'z',
                    'Ž', 'ž',
                ]
            ),
            (
                ScriptLanguage::Buginese, //+
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'Y', 'y'
                ]
            ),
            (
                ScriptLanguage::Catalan, //++
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'X', 'x',
                    'Y', 'y', 'Z', 'z', 'À', 'à', 'Ç', 'ç', 'É', 'é', 'È', 'è', 'Í', 'í', 'Ï', 'ï',
                    'Ŀ', 'ŀ', 'Ó', 'ó', 'Ò', 'ò', 'Ú', 'ú', 'Ü', 'ü',
                ]
            ),
            (
                ScriptLanguage::Cebuano, //++
                [
                    'A', 'a', 'B', 'b', 'D', 'd', 'E', 'e', 'G', 'g', 'H', 'h', 'I', 'i', 'K', 'k',
                    'L', 'l', 'M', 'm', 'N', 'n', /* 'Ng', 'ng', */ 'O', 'o', 'P', 'p', 'R',
                    'r', 'S', 's', 'T', 't', 'U', 'u', 'W', 'w', 'Y',
                    'y',
                    // loanwords c, f, j, q, v, x, z
                ]
            ),
            (
                ScriptLanguage::Chokwe, //+
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'Y', 'y', 'Z', 'z'
                ]
            ),
            (
                ScriptLanguage::CreoleHaitian, //+
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'Y', 'y', 'Z', 'z',
                    'À', 'à', 'È', 'è', 'É', 'é', 'Ò', 'ò'
                ]
            ),
            (
                ScriptLanguage::Croatian, //++
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'Č', 'č', 'Ć', 'ć', 'D', 'd', 'Đ', 'đ', 'E', 'e',
                    'F', 'f', 'G', 'g', 'H', 'h', 'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm',
                    'N', 'n', 'O', 'o', 'P', 'p', 'R', 'r', 'S', 's', 'Š', 'š', 'T', 't', 'U', 'u',
                    'V', 'v', 'Z', 'z', 'Ž', 'ž'
                ]
            ),
            (
                ScriptLanguage::Czech, //+
                [
                    'A', 'a', 'Á', 'á', 'B', 'b', 'C', 'c', 'Č', 'č', 'D', 'd', 'Ď', 'ď', 'E', 'e',
                    'È', 'è', 'É', 'é', 'Ě', 'ě', 'F', 'f', 'G', 'g', 'H', 'h',
                    /* 'Ch', 'ch', */ 'I', 'i', 'Ì', 'ì', 'Í', 'í', 'J', 'j', 'K', 'k', 'L',
                    'l', 'M', 'm', 'N', 'n', 'Ň', 'ň', 'O', 'o', 'Ó', 'ó', 'P', 'p', 'R', 'r', 'Ř',
                    'ř', 'S', 's', 'Š', 'š', 'T', 't', 'Ť', 'ť', 'U', 'u', 'Ù', 'ù', 'Ú', 'ú', 'Ů',
                    'ů', 'V', 'v', 'W', 'w', 'X', 'x', 'Y', 'y', 'Ý', 'ý', 'Z', 'z', 'Ž', 'ž', 'Ø',
                    'ø',
                ]
            ),
            (
                ScriptLanguage::Danish, //+
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'X', 'x',
                    'Y', 'y', 'Z', 'z', 'Å', 'å', 'Æ', 'æ', 'É', 'é', 'Ø', 'ø',
                ]
            ),
            (
                ScriptLanguage::Dholuo, //++
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'Y', 'y', 'Z', 'z',
                ]
            ),
            (
                ScriptLanguage::DinkaSouthwestern, //++
                #[rustfmt::skip]
                [
                    'Ä', 'ä', 'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'Ë', 'ë', 'Ɛ', 'ɛ',
                    'G', 'g', 'Ɣ', 'ɣ', 'H', 'h', 'I', 'i', 'Ï', 'ï', 'J', 'j', 'K', 'k', 'L', 'l',
                    'M', 'm', 'N', 'n', 'Ŋ', 'ŋ', 'Ö', 'ö', 'O', 'o', 'Ɔ', 'ɔ', 'P', 'p', 'R', 'r',
                    'T', 't', 'U', 'u', 'W', 'w', 'Y', 'y',
                    // from `char_compose_custom`
                    '\u{f0854}', // Ɔ̈ɔ̈
                    '\u{f0890}', // Ɛ̈ɛ̈
                ]
            ),
            (
                ScriptLanguage::Dutch, //+
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'X', 'x',
                    'Y', 'y', 'Z', 'z', 'Á', 'á', 'Ä', 'ä', 'È', 'è', 'Ë', 'ë', 'É', 'é', 'Ï', 'ï',
                    'IJ', 'ij', 'Ó', 'ó', 'Ö', 'ö', 'Ü', 'ü',
                ]
            ),
            (
                ScriptLanguage::Dyula, //+
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'Ɛ', 'ɛ', 'F', 'f', 'G', 'g',
                    'H', 'h', 'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'Ɲ', 'ɲ',
                    'Ŋ', 'ŋ', 'O', 'o', 'Ɔ', 'ɔ', 'P', 'p', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u',
                    'V', 'v', 'W', 'w', 'Y', 'y', 'Z', 'z',
                ]
            ),
            (
                ScriptLanguage::English, //+++
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'X', 'x',
                    'Y', 'y', 'Z', 'z'
                ]
            ),
            (
                ScriptLanguage::Esperanto, //+
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'Ĉ', 'ĉ', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g',
                    'Ĝ', 'ĝ', 'H', 'h', 'Ĥ', 'ĥ', 'I', 'i', 'J', 'j', 'Ĵ', 'ĵ', 'K', 'k', 'L', 'l',
                    'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p', 'R', 'r', 'S', 's', 'Ŝ', 'ŝ', 'T', 't',
                    'U', 'u', 'Ŭ', 'ŭ', 'V', 'v', 'X', 'x', 'Y', 'y', 'Z', 'z', // XY?
                ]
            ),
            (
                ScriptLanguage::Estonian, //++
                [
                    'A', 'a', 'B', 'b', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h', 'I', 'i',
                    'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p', 'R', 'r',
                    'S', 's', 'Š', 'š', 'Z', 'z', 'Ž', 'ž', 'T', 't', 'U', 'u', 'V', 'v', 'Õ', 'õ',
                    'Ä', 'ä', 'Ö', 'ö', 'Ü', 'ü',
                    // foreign words C, Q, W, X, Y
                ]
            ),
            (
                ScriptLanguage::Ewe, //+
                [
                    'A', 'a', 'B', 'b', 'D', 'd', 'Ð', 'Ɖ', 'ɖ', 'E', 'e', 'Ɛ', 'ɛ', 'F', 'f', 'Ƒ',
                    'ƒ', 'G', 'g', 'Ɣ', 'ɣ', 'H', 'h', 'I', 'i', 'K', 'k', 'L', 'l', 'M', 'm', 'N',
                    'n', 'Ŋ', 'ŋ', 'O', 'o', 'Ɔ', 'ɔ', 'P', 'p', 'R', 'r', 'S', 's', 'T', 't', 'U',
                    'u', 'V', 'v', 'Ʋ', 'ʋ', 'W', 'w', 'X', 'x', 'Y', 'y', 'Z', 'z', 'Ã', 'ã', 'À',
                    'à', 'È', 'è', '', '', 'É', 'é', 'Ĩ', 'ĩ', 'Í', 'í', 'Ò', 'ò',
                ]
            ),
            (
                ScriptLanguage::Faroese, //+
                [
                    'A', 'a', 'Á', 'á', 'B', 'b', 'D', 'd', 'Ð', 'ð', 'E', 'e', 'F', 'f', 'G', 'g',
                    'H', 'h', 'I', 'i', 'Í', 'í', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n',
                    'O', 'o', 'Ó', 'ó', 'P', 'p', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'Ú', 'ú',
                    'V', 'v', 'Y', 'y', 'Ý', 'ý', 'Æ', 'æ', 'Ø', 'ø'
                ]
            ),
            (
                ScriptLanguage::Fijian, //+
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'I', 'i',
                    'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p', 'Q', 'q',
                    'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'Y',
                    'y',
                    // loanwords 'H', 'h',
                ]
            ),
            (
                ScriptLanguage::Filipino, //+
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'Ñ', 'ñ', 'O', 'o',
                    'P', 'p', 'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w',
                    'X', 'x', 'Y', 'y', 'Z', 'z',
                ]
            ),
            (
                ScriptLanguage::Finnish, //++
                [
                    'A', 'a', 'Ä', 'ä', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g',
                    'H', 'h', 'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o',
                    'Ö', 'ö', 'P', 'p', 'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v',
                    'W', 'w', 'X', 'x', 'Y', 'y', 'Z', 'z',
                ]
            ),
            (
                ScriptLanguage::Fon, //+
                [
                    'A', 'a', 'À', 'à', 'Á', 'á', 'Ǎ', 'ǎ', 'B', 'b', 'C', 'c', 'D', 'd', 'Ð', 'Ɖ',
                    'ɖ', 'Ě', 'ě', 'É', 'é', 'È', 'è', 'E', 'e', 'Ɛ', 'ɛ', 'F', 'f', 'G', 'g', 'H',
                    'h', 'Ǐ', 'ǐ', 'Í', 'í', 'Ì', 'ì', 'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M',
                    'm', 'N', 'n', 'Ò', 'ò', 'Ǒ', 'ǒ', 'O', 'o', 'Ó', 'ó', 'Ɔ', 'ɔ', 'P', 'p', 'R',
                    'r', 'S', 's', 'T', 't', 'Ú', 'ú', 'Ǔ', 'ǔ', 'Ù', 'ù', 'U', 'u', 'V', 'v', 'W',
                    'w', 'X', 'x', 'Y', 'y', 'Z', 'z',
                ]
            ),
            (
                ScriptLanguage::French, //+
                [
                    'Æ', 'æ', 'À', 'à', 'Â', 'â', 'A', 'a', 'B', 'b', 'Ç', 'ç', 'C', 'c', 'D', 'd',
                    'É', 'é', 'E', 'e', 'Ê', 'ê', 'È', 'è', 'Ë', 'ë', 'F', 'f', 'G', 'g', 'H', 'h',
                    'Î', 'î', 'Ï', 'ï', 'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n',
                    'Ô', 'ô', 'O', 'o', 'Œ', 'œ', 'P', 'p', 'Q', 'q', 'R', 'r', 'S', 's', 'T', 't',
                    'Û', 'û', 'Ù', 'ù', 'Ü', 'ü', 'U', 'u', 'V', 'v', 'W', 'w', 'X', 'x', 'Y', 'y',
                    'Ÿ', 'ÿ', 'Z', 'z',
                ]
            ),
            (
                ScriptLanguage::Friulian, //++
                [
                    'A', 'a', 'Â', 'â', 'À', 'à', 'B', 'b', 'C', 'c', 'Ç', 'ç', 'D', 'd', 'Ê', 'ê',
                    'È', 'è', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h', 'I', 'i', 'Ì', 'ì', 'Î', 'î',
                    'J', 'j', 'L', 'l', 'M', 'm', 'N', 'n', 'Ò', 'ò', 'Ô', 'ô', 'O', 'o', 'P', 'p',
                    'R', 'r', 'S', 's', 'T', 't', 'Ù', 'ù', 'Û', 'û', 'U', 'u', 'V', 'v', 'Z',
                    'z',
                    // loanwords 'K', 'k', 'Y', 'y', 'W', 'w', 'X', 'x'
                ]
            ),
            (
                ScriptLanguage::FulaPulaar, //++
                [
                    'A', 'a', 'B', 'b', 'Ɓ', 'ɓ', 'C', 'c', 'D', 'd', 'Ɗ', 'ɗ', 'E', 'e', 'F', 'f',
                    'G', 'g', 'H', 'h', 'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n',
                    'Ñ', 'ñ', 'Ŋ', 'ŋ', 'O', 'o', 'P', 'p', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u',
                    'W', 'w', 'X', 'x', 'Y', 'y', 'Ƴ', 'ƴ', 'ʣ',
                ]
            ),
            (
                ScriptLanguage::FulaPular, //+
                [
                    'A', 'a', 'B', 'b', 'Ɓ', 'ɓ', 'C', 'c', 'D', 'd', 'Ɗ', 'ɗ', 'E', 'e', 'F', 'f',
                    'G', 'g', 'Ɠ', 'ɠ', 'H', 'h', 'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm',
                    'N', 'n', 'Ñ', 'ñ', 'Ŋ', 'ŋ', 'O', 'o', 'P', 'p', 'R', 'r', 'S', 's', 'T', 't',
                    'U', 'u', 'W', 'w', 'Y', 'y', 'Ƴ', 'ƴ',
                ]
            ),
            (
                ScriptLanguage::FulfuldeNigerian, //+
                [
                    'A', 'a', 'B', 'b', 'Ɓ', 'ɓ', 'C', 'c', 'D', 'd', 'Ɗ', 'ɗ', 'E', 'e', 'F', 'f',
                    'G', 'g', 'H', 'h', 'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n',
                    'Ŋ', 'ŋ', 'O', 'o', 'P', 'p', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'W', 'w',
                    'X', 'x', 'Y', 'y', 'Ƴ', 'ƴ',
                ]
            ),
            (
                ScriptLanguage::GaelicScottish, //++
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p', 'R', 'r', 'S', 's',
                    'T', 't', 'U', 'u', 'À', 'à', 'È', 'è', 'Ì', 'ì', 'Ò', 'ò', 'Ù',
                    'ù',
                    // foreign words J, K, Q, V, W, X, Y, Z
                ]
            ),
            (
                ScriptLanguage::Galician, //++
                [
                    'Á', 'á', 'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'É', 'é', 'E', 'e', 'F', 'f',
                    'G', 'g', 'H', 'h', 'Í', 'í', 'I', 'i', 'L', 'l', 'M', 'm', 'N', 'n', 'Ñ', 'ñ',
                    'Ó', 'ó', 'O', 'o', 'P', 'p', 'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u',
                    'Ú', 'ú', 'V', 'v', 'X', 'x', 'Z', 'z',
                    // foreign words J, K, W, Y
                ]
            ),
            (
                ScriptLanguage::Ganda, //+
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'Ŋ', 'ŋ', 'O', 'o',
                    'P', 'p', 'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w',
                    'X', 'x', 'Y', 'y', 'Z', 'z',
                ]
            ),
            (
                ScriptLanguage::German, //+
                [
                    'Ä', 'ä', 'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g',
                    'H', 'h', 'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o',
                    'Ö', 'ö', 'P', 'p', 'Q', 'q', 'R', 'r', 'S', 's', '', 'ß', 'T', 't', 'Ü', 'ü',
                    'U', 'u', 'V', 'v', 'W', 'w', 'X', 'x', 'Y', 'y', 'Z', 'z',
                ]
            ),
            (
                ScriptLanguage::GuaraniParaguayan, //++
                #[rustfmt::skip]
                [
                    'A', 'a', 'Ã', 'ã', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', '', '', 'G', 'g',
                    'H', 'h', 'I', 'i', 'Ĩ', 'ĩ', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n',
                    'Ñ', 'ñ', 'O', 'o', 'Õ', 'õ', 'P', 'p', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u',
                    'Ũ', 'ũ', 'V', 'v', 'Y', 'y', '', '', 'Á', 'á', 'É', 'é', 'Í', 'í', 'Ó', 'ó',
                    'Ú', 'ú', 'Ý', 'ý',
                    // A hack used as tilde replacement
                    'Â', 'â', 'Ê', 'ê', 'Î', 'î', 'Ô', 'ô', 'Û', 'û', 'Ŷ', 'ŷ', 'Ĝ', 'ĝ',
                    // from `char_compose_custom`
                    '\u{f0367}', // G̃g̃
                ]
            ),
            (
                ScriptLanguage::Hausa, //++
                [
                    'A', 'a', 'B', 'b', 'Ɓ', 'ɓ', 'C', 'c', 'D', 'd', 'Ɗ', 'ɗ', 'E', 'e', 'F', 'f',
                    'G', 'g', 'H', 'h', 'I', 'i', 'J', 'j', 'K', 'k', 'Ƙ', 'ƙ', 'L', 'l', 'M', 'm',
                    'N', 'n', 'O', 'o', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'W', 'w', 'Y', 'y',
                    'Ƴ', 'ƴ', 'Z', 'z', // No R̃r̃
                    // Marks vowel length
                    'Ã', 'ã', 'Ā', 'ā', 'Õ', 'õ', 'Ũ', 'ũ', 'Ĩ', 'ĩ', '', '',
                ]
            ),
            (
                ScriptLanguage::Hawaiian, //+
                [
                    'A', 'a', 'E', 'e', 'I', 'i', 'O', 'o', 'U', 'u', 'H', 'h', 'K', 'k', 'L', 'l',
                    'M', 'm', 'N', 'n', 'P', 'p', 'W', 'w', 'Ā', 'ā', 'Ē', 'ē', 'Ī', 'ī', 'Ō', 'ō',
                    'Ū', 'ū'
                ]
            ),
            (
                ScriptLanguage::Hungarian, //++
                [
                    'A', 'a', 'Á', 'á', 'B', 'b', 'C', 'c', /* 'Cs', 'cs', */ 'D', 'd',
                    /* 'Dz', 'dz', 'Dzs', 'dzs', */ 'E', 'e', 'É', 'é', 'F', 'f', 'G', 'g',
                    /* 'Gy', 'gy', */ 'H', 'h', 'I', 'i', 'Í', 'í', 'J', 'j', 'K', 'k', 'L',
                    'l', /* 'Ly', 'ly', */ 'M', 'm', 'N', 'n', /* 'Ny', 'ny', */ 'O',
                    'o', 'Ó', 'ó', 'Ö', 'ö', 'Ő', 'ő', 'P', 'p', 'Q', 'q', 'R', 'r', 'S', 's',
                    /* 'Sz', 'sz', */ 'T', 't', /* 'Ty', 'ty', */ 'U', 'u', 'Ú', 'ú',
                    'Ü', 'ü', 'Ű', 'ű', 'V', 'v', 'W', 'w', 'X', 'x', 'Y', 'y', 'Z',
                    'z', /* 'Zs', 'zs' */
                ]
            ),
            (
                ScriptLanguage::Icelandic, //++
                [
                    'A', 'a', 'Á', 'á', 'Æ', 'æ', 'B', 'b', 'D', 'd', 'Ð', 'ð', 'E', 'e', 'É', 'é',
                    'F', 'f', 'G', 'g', 'H', 'h', 'I', 'i', 'Í', 'í', 'J', 'j', 'K', 'k', 'L', 'l',
                    'M', 'm', 'N', 'n', 'O', 'o', 'Ó', 'ó', 'Ö', 'ö', 'P', 'p', 'R', 'r', 'S', 's',
                    'T', 't', 'U', 'u', 'Ú', 'ú', 'V', 'v', 'X', 'x', 'Y', 'y', 'Ý', 'ý', 'Þ',
                    'þ',
                    // obsolete 'Z', 'z'
                ]
            ),
            (
                ScriptLanguage::Igbo, //+
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', '', '', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', '', '',
                    'O', 'o', '', '', 'P', 'p', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', '', '',
                    'V', 'v', 'W', 'w', 'Y', 'y', 'Z', 'z', /*unverified*/
                    'Á', 'á', 'É', 'é', 'Í', 'í', 'Ó', 'ó', 'Ú', 'ú'
                ]
            ),
            (
                ScriptLanguage::Ilocano, //++
                [
                    'A', 'a', 'B', 'b', 'D', 'd', 'E', 'e', 'G', 'g', 'H', 'h', 'I', 'i', 'K', 'k',
                    'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p', 'R', 'r', 'S', 's', 'T', 't',
                    'U', 'u', 'W', 'w', 'Y', 'y',
                    /*'Á', 'á', 'É', 'é', 'Í', 'í', 'Ó', 'ó', 'Ú', 'ú',*/
                    // Spanish-based
                    'C', 'c', 'F', 'f', 'J', 'j', 'Ñ', 'ñ', 'V', 'v', 'Z',
                    'z',
                    // loanwords Q, X,
                ]
            ),
            (
                ScriptLanguage::Indonesian, //+
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'X', 'x',
                    'Y', 'y', 'Z', 'z',
                ]
            ),
            (
                ScriptLanguage::Irish, //++
                [
                    'A', 'a', 'Á', 'á', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'É', 'é', 'F', 'f',
                    'G', 'g', 'H', 'h', 'I', 'i', 'Í', 'í', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o',
                    'Ó', 'ó', 'P', 'p', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'Ú', 'ú',
                ]
            ),
            (
                ScriptLanguage::Italian, //++
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p', 'Q', 'q',
                    'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'Z', 'z', 'À', 'à', 'È', 'è',
                    'É', 'é', 'Ì', 'ì', 'Í', 'í', 'Ò', 'ò', 'Ù', 'ù', 'Ú',
                    'ú',
                    // loanwords 'W', 'w', 'Y', 'y'
                ]
            ),
            (
                ScriptLanguage::Javanese, //+
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'X', 'x',
                    'Y', 'y', 'Z', 'z', /*unverified*/
                    'É', 'é', 'È', 'è'
                ]
            ),
            (
                ScriptLanguage::Jingpho, //++
                [
                    'A', 'a', 'E', 'e', 'I', 'i', 'O', 'o', 'U', 'u', 'B', 'b', 'C', 'c', 'D', 'd',
                    'G', 'g', 'H', 'h', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'P', 'p',
                    'R', 'r', 'S', 's', 'T', 't', 'W', 'w', 'Y', 'y', 'Z', 'z',
                ]
            ),
            (
                ScriptLanguage::Kabiye, //++
                #[rustfmt::skip]
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'Ð', 'Ɖ', 'ɖ', 'E', 'e', 'Ɛ', 'ɛ', 'F',
                    'f', 'G', 'g', 'H', 'h', 'I', 'i', 'Ɩ', 'ɩ', 'J', 'j', 'K', 'k', 'L', 'l', 'M',
                    'm', 'N', 'n', 'Ñ', 'ñ', 'Ŋ', 'ŋ', 'O', 'o', 'Ɔ', 'ɔ', 'P', 'p', 'R', 'r', 'S',
                    's', 'T', 't', 'U', 'u', 'V', 'v', 'Ʋ', 'ʋ', 'W', 'w', 'Y', 'y', 'Z', 'z', 'Ɣ',
                    'ɣ', '', 'ɑ', 'Ʊ', 'ʊ', 'É', 'é',
                    // from `char_compose_custom`
                    '\u{f046e}', // N̄n̄
                ]
            ),
            (
                ScriptLanguage::Kabuverdianu,
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'X', 'x', 'Z', 'z',
                    'Á', 'á', 'É', 'é', 'Í', 'í', 'Ó', 'ó', 'Ú', 'ú', 'Õ', 'õ', 'Ç', 'ç', 'Ê', 'ê'
                ]
            ),
            (
                ScriptLanguage::Kabyle, //++
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'Č', 'č', 'D', 'd', '', '', 'E', 'e', 'F', 'f',
                    'G', 'g', 'Ǧ', 'ǧ', 'Ɣ', 'ɣ', 'H', 'h', '', '', 'I', 'i', 'J', 'j', 'K', 'k',
                    'L', 'l', 'M', 'm', 'N', 'n', 'Q', 'q', 'R', 'r', '', '', 'S', 's', '', '',
                    'T', 't', '', '', 'U', 'u', 'W', 'w', 'X', 'x', 'Y', 'y', 'Z', 'z', '', '',
                    'Ɛ', 'ɛ',
                    // loanwords O, P
                ]
            ),
            (
                ScriptLanguage::Kamba, //++
                [
                    'A', 'a', 'B', 'b', 'D', 'd', 'E', 'e', 'G', 'g', 'H', 'h', 'Ĩ', 'ĩ', 'I', 'i',
                    'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'S', 's', 'T', 't', 'U', 'u',
                    'Ũ', 'ũ', 'V', 'v', 'W', 'w', 'Y', 'y', 'Z', 'z',
                ]
            ),
            (
                ScriptLanguage::KanuriCentral, //++
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'Ǝ', 'ǝ', 'ə', 'F', 'f', 'G',
                    'g', 'H', 'h', 'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O',
                    'o', 'P', 'p', 'R', 'r', /* 'Ɍ', 'ɍ', */ 'S', 's', 'T', 't', 'U', 'u',
                    'W', 'w', 'Y', 'y', 'Z', 'z',
                ]
            ),
            (
                ScriptLanguage::KikongoKituba,
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p', 'R', 'r',
                    'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'Y', 'y', 'Z', 'z',
                ]
            ),
            (
                ScriptLanguage::Kikuyu, //++
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'G', 'g', 'H', 'h', 'I', 'i',
                    'Ĩ', 'ĩ', 'J', 'j', 'K', 'k', 'M', 'm', 'N', 'n', 'O', 'o', 'R', 'r', 'T', 't',
                    'U', 'u', 'Ũ', 'ũ', 'W', 'w', 'Y', 'y', //
                    // extra
                    'F', 'f', 'L', 'l', 'S', 's',
                    // must be absent P, Q, V, X, Z
                ]
            ),
            (
                ScriptLanguage::Kimbundu, //++
                [
                    'A', 'a', 'B', 'b', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h', 'I', 'i',
                    'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p', 'S', 's',
                    'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'X', 'x', 'Y', 'y', 'Z', 'z',
                    // not sure about diacritics
                    'Á', 'á', 'É', 'é', 'Í', 'í', 'Ó', 'ó', 'Ú', 'ú', 'À', 'à', 'È', 'è', 'Â', 'â',
                    'Ê', 'ê', 'Ô', 'ô'
                ]
            ),
            (
                ScriptLanguage::Kinyarwanda, //+
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p', 'R', 'r',
                    'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'Y', 'y', 'Z', 'z',
                    /*unverified*/ 'L', 'l', 'Í', 'í', 'Ú', 'ú',
                ]
            ),
            (
                ScriptLanguage::KurdishNorthern, //+
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'Ç', 'ç', 'D', 'd', 'E', 'e', 'Ê', 'ê', 'F', 'f',
                    'G', 'g', 'H', 'h', 'I', 'i', 'Î', 'î', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm',
                    'N', 'n', 'O', 'o', 'P', 'p', 'Q', 'q', 'R', 'r', 'S', 's', 'Ş', 'ş', 'T', 't',
                    'U', 'u', 'Û', 'û', 'V', 'v', 'W', 'w', 'X', 'x', 'Y', 'y', 'Z', 'z',
                ]
            ),
            (
                ScriptLanguage::Latgalian, //++
                [
                    'A', 'a', 'Ā', 'ā', 'B', 'b', 'C', 'c', 'Č', 'č', 'D', 'd', 'E', 'e', 'Ē', 'ē',
                    'F', 'f', 'G', 'g', 'Ģ', 'ģ', 'H', 'h', 'I', 'i', 'Y', 'y', 'Ī', 'ī', 'J', 'j',
                    'K', 'k', 'Ķ', 'ķ', 'L', 'l', 'Ļ', 'ļ', 'M', 'm', 'N', 'n', 'Ņ', 'ņ', 'O', 'o',
                    'Ō', 'ō', 'P', 'p', 'R', 'r', 'S', 's', 'Š', 'š', 'T', 't', 'U', 'u', 'Ū', 'ū',
                    'V', 'v', 'Z', 'z', 'Ž', 'ž',
                ]
            ),
            (
                ScriptLanguage::Latin, //+
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p', 'Q', 'q',
                    'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'X', 'x', 'Y', 'y', 'Z', 'z',
                    'Ā', 'ā', 'Ē', 'ē', 'Ī', 'ī', 'Ō', 'ō', 'Ū', 'ū', 'Æ', 'æ', 'Œ', 'œ'
                ]
            ),
            (
                ScriptLanguage::Latvian, //++
                [
                    'A', 'a', 'Ā', 'ā', 'B', 'b', 'C', 'c', 'Č', 'č', 'D', 'd', 'E', 'e', 'Ē', 'ē',
                    'F', 'f', 'G', 'g', 'Ģ', 'ģ', 'H', 'h', 'I', 'i', 'Ī', 'ī', 'J', 'j', 'K', 'k',
                    'Ķ', 'ķ', 'L', 'l', 'Ļ', 'ļ', 'M', 'm', 'N', 'n', 'Ņ', 'ņ', 'O', 'o', 'P', 'p',
                    'R', 'r', 'S', 's', 'Š', 'š', 'T', 't', 'U', 'u', 'Ū', 'ū', 'V', 'v', 'Z', 'z',
                    'Ž', 'ž',
                ]
            ),
            (
                ScriptLanguage::Ligurian, //++
                [
                    'A', 'a', 'Æ', 'æ', 'B', 'b', 'C', 'c', 'Ç', 'ç', 'D', 'd', 'E', 'e', 'F', 'f',
                    'G', 'g', 'H', 'h', 'I', 'i', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'X', 'x', 'Z', 'z',
                    'À', 'à', 'Â', 'â', 'É', 'é', 'È', 'è', 'Ê', 'ê', 'Ì', 'ì', 'Î', 'î', 'Ò', 'ò',
                    'Ô', 'ô', 'Ö', 'ö', 'Ù', 'ù', 'Û', 'û',
                    // loanwords 'J', 'j', 'Ó', 'ó',
                ]
            ),
            (
                ScriptLanguage::Limburgish,
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'X', 'x',
                    'Y', 'y', 'Z', 'z', 'Á', 'á', 'É', 'é', 'È', 'è', 'Ë', 'ë', 'Ì', 'ì', 'Í', 'í',
                    'Î', 'î', 'Ó', 'ó', 'Ô', 'ô', 'Ò', 'ò', 'Ú', 'ú', 'Ù', 'ù', 'Û', 'û', 'Ä', 'ä',
                    'Ö', 'ö', 'Ü', 'ü'
                ]
            ),
            (
                ScriptLanguage::Lingala, //++
                #[rustfmt::skip]
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'Ɛ', 'ɛ', 'F', 'f', 'G', 'g',
                    'H', 'h', 'I', 'i', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'Ɔ', 'ɔ',
                    'P', 'p', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'Y', 'y',
                    'Z', 'z', 'Á', 'á', 'É', 'é', 'Í', 'í', 'Ó', 'ó', 'Ú', 'ú', 'Â', 'â', 'Ê', 'ê',
                    'Î', 'î', 'Ô', 'ô', 'Ǎ', 'ǎ', 'Ě', 'ě', 'Ǐ', 'ǐ', 'Ǒ', 'ǒ',
                    // from `char_compose_custom`
                    '\u{f0154}', // Ɔ́ɔ́
                    '\u{f015b}', // Ɛ́ɛ́
                    '\u{f0254}', // Ɔ̂ɔ̂
                    '\u{f025b}', // Ɛ̂ɛ̂
                    '\u{f0c54}', // Ɔ̌ɔ̌
                    '\u{f0c5b}', // Ɛ̌ɛ̌
                    // loanwords J, X
                ]
            ),
            (
                ScriptLanguage::Lithuanian, //++
                [
                    'A', 'a', 'Ą', 'ą', 'B', 'b', 'C', 'c', 'Č', 'č', 'D', 'd', 'E', 'e', 'Ę', 'ę',
                    'Ė', 'ė', 'F', 'f', 'G', 'g', 'H', 'h', 'I', 'i', 'Į', 'į', 'Y', 'y', 'J', 'j',
                    'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p', 'R', 'r', 'S', 's',
                    'Š', 'š', 'T', 't', 'U', 'u', 'Ų', 'ų', 'Ū', 'ū', 'V', 'v', 'Z', 'z', 'Ž', 'ž',
                ]
            ),
            (
                ScriptLanguage::Lombard, //++
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p', 'Q', 'q',
                    'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'Z', 'z', 'À', 'à', 'Á', 'á',
                    'È', 'è', 'É', 'é', 'Ì', 'ì', 'Í', 'í', 'Ò', 'ò', 'Ó', 'ó', 'Ô', 'ô', 'Ø', 'ø',
                    'Ö', 'ö', 'Ù', 'ù', 'Ü', 'ü', 'Œ', 'œ',
                ]
            ),
            (
                ScriptLanguage::LubaKasai, //+
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'Y', 'y', 'Z', 'z',
                    /*unverified*/ 'Î', 'î', 'Ê', 'ê',
                ]
            ),
            (
                ScriptLanguage::Luxembourgish,
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'X', 'x',
                    'Y', 'y', 'Z', 'z', 'Ä', 'ä', 'É', 'é', 'Ë', 'ë', 'Ó', 'ó', 'Ö', 'ö', 'Ü',
                    'ü', /*unverified*/
                    'È', 'è'
                ]
            ),
            (
                ScriptLanguage::MalagasyPlateau,
                [
                    'A', 'a', 'B', 'b', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h', 'I', 'i',
                    'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p', 'R', 'r',
                    'S', 's', 'T', 't', 'V', 'v', 'Y', 'y', 'Z', 'z', /*unverified*/ 'À', 'à',
                    'Ô', 'ô'
                ]
            ),
            (
                ScriptLanguage::Malay, //+
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'X', 'x',
                    'Y', 'y', 'Z', 'z'
                ]
            ),
            (
                ScriptLanguage::Maltese, //+
                [
                    'A', 'a', 'B', 'b', 'Ċ', 'ċ', 'D', 'd', 'E', 'e', 'F', 'f', 'Ġ', 'ġ', 'G', 'g',
                    'H', 'h', 'Ħ', 'ħ', 'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n',
                    'O', 'o', 'P', 'p', 'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v',
                    'W', 'w', 'X', 'x', 'Ż', 'ż', 'Z', 'z', /*unverified*/ 'À', 'à', 'C', 'c',
                ]
            ),
            (
                ScriptLanguage::Mandailing, //+
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'G', 'g', 'H', 'h', 'I', 'i',
                    'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p', 'R', 'r',
                    'S', 's', 'T', 't', 'U', 'u', 'W', 'w', 'Y', 'y',
                ]
            ),
            (
                ScriptLanguage::Maori, //++
                [
                    'A', 'a', 'E', 'e', 'H', 'h', 'I', 'i', 'K', 'k', 'M', 'm', 'N', 'n', 'O', 'o',
                    'P', 'p', 'R', 'r', 'T', 't', 'U', 'u', 'W', 'w', 'G', 'g', 'Ā', 'ā', 'Ē', 'ē',
                    'Ī', 'ī', 'Ō', 'ō', 'Ū', 'ū', //
                    // Southern dialect
                    'L', 'l', '', '',
                ]
            ),
            (
                ScriptLanguage::Minangkabau, //+
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'Ē', 'ē', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'Ñ', 'ñ', 'O', 'o',
                    'P', 'p', 'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'W', 'w', 'Y', 'y',
                    /*unverified*/ 'F', 'f', 'V', 'v',
                ]
            ),
            (
                ScriptLanguage::Mizo, //++
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'R', 'r', 'S', 's', 'T', 't', '', '', 'U', 'u', 'V', 'v', 'Z', 'z', 'W', 'w',
                    'Ǎ', 'ǎ', 'Ă', 'ă', '', '', 'Ȧ', 'ȧ', 'Ã', 'ã', 'Ą', 'ą', '', '', 'Â', 'â',
                    'Á', 'á', 'Ä', 'ä', 'À', 'à', 'Ǒ', 'ǒ', 'Ŏ', 'ŏ', '', '', 'Ó', 'ó', '', '',
                    'Ò', 'ò', 'Ǔ', 'ǔ', 'Ŭ', 'ŭ', '', '', 'Ů', 'ů', 'Ũ', 'ũ', 'Ų', 'ų', '', '',
                    'Û', 'û', 'Ú', 'ú', 'Ü', 'ü', 'Ù', 'ù', 'Ě', 'ě', 'Ĕ', 'ĕ', '', '', 'Ė', 'ė',
                    '', '', 'Ę', 'ę', '', '', 'Ê', 'ê', 'É', 'é', 'Ë', 'ë', 'È', 'è', 'Ǐ', 'ǐ',
                    'Ĭ', 'ĭ', '', '', 'Ĩ', 'ĩ', 'Į', 'į', '', '', 'Î', 'î', 'Í', 'í', 'Ï', 'ï',
                    'Ì', 'ì',
                ]
            ),
            (
                ScriptLanguage::Mossi, //++
                [
                    'A', 'a', 'B', 'b', 'D', 'd', 'E', 'e', 'Ɛ', 'ɛ', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'Ɩ', 'ɩ', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'Ʋ', 'ʋ', 'V', 'v', 'W', 'w', 'Y', 'y',
                    'Z', 'z', 'Ã', 'ã', '', '', 'Ĩ', 'ĩ', 'Õ', 'õ', 'Ũ', 'ũ', 'É',
                    'é',
                    // any more diacritics?
                ]
            ),
            (
                ScriptLanguage::NigerianPidgin, //+
                #[rustfmt::skip]
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', '', '', 'F', 'f', 'G', 'g',
                    'H', 'h', 'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o',
                    '', '', 'P', 'p', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w',
                    'Y', 'y', 'Z', 'z', 'Á', 'á', 'É', 'é', 'Í', 'í', 'Ó', 'ó', 'Ú', 'ú', 'À', 'à',
                    'È', 'è', 'Ì', 'ì', 'Ò', 'ò', 'Ù', 'ù',
                    // from `char_compose_custom`
                    '\u{f00b9}', // Ẹ̀ẹ̀
                    '\u{f00cd}', // Ọ̀ọ̀
                    '\u{f01b9}', // Ẹ́ẹ́
                    '\u{f01cd}', // Ọ́ọ́
                ]
            ),
            (
                ScriptLanguage::NorwegianBokmal, //++
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'X', 'x',
                    'Y', 'y', 'Z', 'z', 'Æ', 'æ', 'Ø', 'ø', 'Å', 'å', 'É', 'é', 'Ó', 'ó', 'Ô', 'ô',
                ]
            ),
            (
                ScriptLanguage::NorwegianNynorsk, //++
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'X', 'x',
                    'Y', 'y', 'Z', 'z', 'Æ', 'æ', 'Ø', 'ø', 'Å', 'å', 'É', 'é', 'Ó', 'ó', 'Ò', 'ò',
                    'Ô', 'ô', 'Ê', 'ê',
                ]
            ),
            (
                ScriptLanguage::Nuer, //++
                #[rustfmt::skip]
                [
                    'A', 'a', 'Ä', 'ä', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'Ë', 'ë', 'Ɛ', 'ɛ',
                    'G', 'g', 'Ɣ', 'ɣ', 'H', 'h', 'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm',
                    'N', 'n', 'Ŋ', 'ŋ', 'O', 'o', 'Ö', 'ö', 'Ɔ', 'ɔ', 'P', 'p', 'R', 'r', 'T', 't',
                    'U', 'u', 'W', 'w', 'Y', 'y',
                    // from `char_compose_custom`
                    '\u{f0890}', // Ɛ̈ɛ̈
                    '\u{f3154}', // Ɔ̱ɔ̱
                    '\u{f3161}', // A̱a̱
                    '\u{f3165}', // E̱e̱
                    '\u{f3169}', // I̱i̱
                    '\u{f316f}', // O̱o̱
                    '\u{f3190}', // Ɛ̱̈ɛ̱̈
                ]
            ),
            (
                ScriptLanguage::Nyanja, //++?
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'Ŵ', 'ŵ', 'Y', 'y',
                    'Z', 'z'
                ]
            ),
            (
                ScriptLanguage::Occitan, //+
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'X', 'x',
                    'Y', 'y', 'Z', 'z', 'À', 'à', 'È', 'è', 'Ò', 'ò', 'Á', 'á', 'É', 'é', 'Í', 'í',
                    'Ó', 'ó', 'Ú', 'ú', 'Ï', 'ï', 'Ü', 'ü', 'Ç', 'ç',
                ]
            ),
            (
                ScriptLanguage::OromoSouthern, //+
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'W', 'w', 'Y', 'y', 'Z', 'z',
                ]
            ),
            (
                ScriptLanguage::OromoWestCentral, //+
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'X', 'x',
                    'Y', 'y', 'Z', 'z'
                ]
            ),
            (
                ScriptLanguage::Pangasinan, //++
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'X', 'x', 'Y', 'y',
                    'Z', 'z',
                ]
            ),
            (
                ScriptLanguage::Papiamento, //++
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'Ñ', 'ñ', 'O', 'o',
                    'P', 'p', 'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w',
                    'X', 'x', 'Y', 'y', 'Z', 'z', 'Á', 'á', 'É', 'é', 'È', 'è', 'Í', 'í', 'Ó', 'ó',
                    'Ò', 'ò', 'Ü', 'ü', 'Ú', 'ú', 'Ù', 'ù'
                ]
            ),
            (
                ScriptLanguage::Polish,
                [
                    'A', 'a', 'Ą', 'ą', 'B', 'b', 'C', 'c', 'Ć', 'ć', 'D', 'd', 'E', 'e', 'Ę', 'ę',
                    'F', 'f', 'G', 'g', 'H', 'h', 'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'Ł', 'ł',
                    'M', 'm', 'N', 'n', 'Ń', 'ń', 'O', 'o', 'Ó', 'ó', 'P', 'p', 'R', 'r', 'S', 's',
                    'Ś', 'ś', 'T', 't', 'U', 'u', 'W', 'w', 'Y', 'y', 'Z', 'z', 'Ź', 'ź', 'Ż', 'ż',
                ]
            ),
            (
                ScriptLanguage::Portuguese, //++
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'X', 'x',
                    'Y', 'y', 'Z', 'z', 'Á', 'á', 'Â', 'â', 'Ã', 'ã', 'À', 'à', 'Ç', 'ç', 'É', 'é',
                    'Ê', 'ê', 'Í', 'í', 'Ó', 'ó', 'Ô', 'ô', 'Õ', 'õ', 'Ò', 'ò', 'Ú',
                    'ú',
                    // formerly: 'Ï', 'ï', 'Ü', 'ü', 'È', 'è', 'Ì', 'ì', 'Ù', 'ù',
                ]
            ),
            (
                ScriptLanguage::QuechuaAyacucho, //++
                [
                    'A', 'a', 'C', 'c', 'H', 'h', 'I', 'i', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n',
                    'Ñ', 'ñ', 'P', 'p', 'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'W', 'w',
                    'Y', 'y', 'B', 'b', 'D', 'd', 'E', 'e', 'J', 'j', 'O', 'o', 'V', 'v',
                ]
            ),
            (
                ScriptLanguage::Romanian,
                [
                    'A', 'a', 'Ă', 'ă', 'Â', 'â', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f',
                    'G', 'g', 'H', 'h', 'I', 'i', 'Î', 'î', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm',
                    'N', 'n', 'O', 'o', 'P', 'p', 'Q', 'q', 'R', 'r', 'S', 's', 'Ș', 'ș', 'T', 't',
                    'Ț', 'ț', 'U', 'u', 'V', 'v', 'W', 'w', 'X', 'x', 'Y', 'y', 'Z', 'z', 'Ş', 'ş',
                    'Ţ', 'ţ',
                ]
            ),
            (
                ScriptLanguage::Rundi, //+
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'Y', 'y', 'Z', 'z'
                ]
            ),
            (
                ScriptLanguage::SamiNorthern, //+
                [
                    'A', 'a', 'Á', 'á', 'B', 'b', 'C', 'c', 'Č', 'č', 'D', 'd', 'Đ', 'đ', 'E', 'e',
                    'F', 'f', 'G', 'g', 'H', 'h', 'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm',
                    'N', 'n', 'Ŋ', 'ŋ', 'O', 'o', 'P', 'p', 'R', 'r', 'S', 's', 'Š', 'š', 'T', 't',
                    'Ŧ', 'ŧ', 'U', 'u', 'V', 'v', 'Z', 'z', 'Ž', 'ž',
                ]
            ),
            (
                ScriptLanguage::Samoan, //++
                [
                    'A', 'a', 'E', 'e', 'F', 'f', 'G', 'g', 'I', 'i', 'L', 'l', 'M', 'm', 'N', 'n',
                    'O', 'o', 'P', 'p', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'Ā', 'ā', 'Ē', 'ē',
                    'Ī', 'ī', 'Ō', 'ō', 'Ū', 'ū', // loanwords H
                    'K', 'k', 'R', 'r', // rare, but used
                ]
            ),
            (
                ScriptLanguage::Sango, //++
                [
                    'A', 'a', 'B', 'b', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h', 'I', 'i',
                    'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p', 'R', 'r', 'S', 's',
                    'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'Y', 'y', 'Z', 'z', 'Â', 'â', 'Ê', 'ê',
                    'Î', 'î', 'Ô', 'ô', 'Û', 'û', 'Ä', 'ä', 'Ë', 'ë', 'Ï', 'ï', 'Ö', 'ö', 'Ü', 'ü',
                    'É', 'é',
                ]
            ),
            (
                ScriptLanguage::Sardinian,
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'X', 'x',
                    'Y', 'y', 'Z', 'z', 'À', 'à', 'É', 'é', 'È', 'è', 'Í', 'í', 'Ì', 'ì', 'Ó', 'ó',
                    'Ò', 'ò', 'Ú', 'ú', 'Ù', 'ù'
                ]
            ),
            (
                ScriptLanguage::Sepedi, //++?
                [
                    'A', 'a', 'B', 'b', 'D', 'd', 'E', 'e', 'Ê', 'ê', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'Ô', 'ô',
                    'P', 'p', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'W', 'w', 'X', 'x', 'Y', 'y',
                    'Z', 'z', 'Š', 'š' // loanwords C
                ]
            ),
            (
                ScriptLanguage::Serer, //+
                [
                    'A', 'a', 'B', 'b', 'Ɓ', 'ɓ', 'C', 'c', 'Ƈ', 'ƈ', 'D', 'd', 'Ɗ', 'ɗ', 'E', 'e',
                    'F', 'f', 'G', 'g', 'H', 'h', 'I', 'i', 'J', 'j', 'ʃ', 'K', 'k', 'L', 'l', 'M',
                    'm', 'N', 'n', 'Ñ', 'ñ', 'Ŋ', 'ŋ', 'O', 'o', 'P', 'p', 'Ƥ', 'ƥ', 'Q', 'q', 'R',
                    'r', 'S', 's', 'T', 't', 'Ƭ', 'ƭ', 'U', 'u', 'W', 'w', 'X', 'x', 'Y', 'y', 'Ƴ',
                    'ƴ',
                ]
            ),
            (
                ScriptLanguage::Sesotho, //++
                [
                    'A', 'a', 'B', 'b', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h', 'I', 'i',
                    'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p', 'Q', 'q',
                    'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'Y', 'y', 'Z', 'z',
                    'Š', 'š', //
                    'C', 'c', // in 'ch' (Lesotho)
                ]
            ),
            (
                ScriptLanguage::Shona,
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'Y', 'y', 'Z', 'z',
                    'Á', 'á', 'É', 'é', 'Í', 'í', 'Ó', 'ó', 'Ú', 'ú'
                ]
            ),
            (
                ScriptLanguage::Sicilian, //++
                [
                    'A', 'a', 'À', 'à', 'Â', 'â', 'B', 'b', 'C', 'c', 'Ç', 'ç', 'D', 'd', '', '',
                    'Đ', 'đ', 'E', 'e', 'È', 'è', 'Ê', 'ê', 'Ë', 'ë', 'F', 'f', 'G', 'g', 'Ġ', 'ġ',
                    'H', 'h', '', '', 'I', 'i', 'Ì', 'ì', 'Í', 'í', 'Î', 'î', 'Ï', 'ï', 'J', 'j',
                    'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', '', '', 'O', 'o', 'Ò', 'ò', 'Ô', 'ô',
                    'P', 'p', 'Q', 'q', 'R', 'r', '', '', 'S', 's', 'Š', 'š', '', '', 'T', 't',
                    '', '', 'U', 'u', 'Ù', 'ù', 'Ú', 'ú', 'Û', 'û', 'V', 'v', 'X', 'x', 'Y', 'y',
                    'Z', 'z', 'Ż', 'ż',
                    /* 'É', 'é' ?*/
                    // loanwords W
                ]
            ),
            (
                ScriptLanguage::Silesian, //++
                [
                    'A', 'a', 'Ã', 'ã', 'B', 'b', 'C', 'c', 'Ć', 'ć', 'Č', 'č', 'D', 'd', 'E', 'e',
                    'F', 'f', 'G', 'g', 'H', 'h', 'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'Ł', 'ł',
                    'M', 'm', 'N', 'n', 'Ń', 'ń', 'O', 'o', 'Ŏ', 'ŏ', 'Ō', 'ō', 'Ô', 'ô', 'Õ', 'õ',
                    'P', 'p', 'R', 'r', 'Ř', 'ř', 'S', 's', 'Ś', 'ś', 'Š', 'š', 'T', 't', 'U', 'u',
                    'Ů', 'ů', 'W', 'w', 'Y', 'y', 'Z', 'z', 'Ź', 'ź', 'Ż', 'ż', 'Ž', 'ž',
                ]
            ),
            (
                ScriptLanguage::Slovak, //++
                [
                    'A', 'a', 'Á', 'á', 'Ä', 'ä', 'B', 'b', 'C', 'c', 'Č', 'č', 'D', 'd', 'Ď', 'ď',
                    'E', 'e', 'É', 'é', 'F', 'f', 'G', 'g', 'H', 'h', 'I', 'i', 'Í', 'í', 'J', 'j',
                    'K', 'k', 'L', 'l', 'Ĺ', 'ĺ', 'Ľ', 'ľ', 'M', 'm', 'N', 'n', 'Ň', 'ň', 'O', 'o',
                    'Ó', 'ó', 'Ô', 'ô', 'P', 'p', 'R', 'r', 'Ŕ', 'ŕ', 'S', 's', 'Š', 'š', 'T', 't',
                    'Ť', 'ť', 'U', 'u', 'Ú', 'ú', 'V', 'v', 'X', 'x', 'Y', 'y', 'Ý', 'ý', 'Z', 'z',
                    'Ž', 'ž',
                    // loanwords Q, W
                ]
            ),
            (
                ScriptLanguage::Slovenian,
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'Č', 'č', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g',
                    'H', 'h', 'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o',
                    'P', 'p', 'R', 'r', 'S', 's', 'Š', 'š', 'T', 't', 'U', 'u', 'V', 'v', 'Z', 'z',
                    'Ž', 'ž',
                ]
            ),
            (
                ScriptLanguage::Somali, //++
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'Q', 'q',
                    'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'W', 'w', 'X', 'x', 'Y',
                    'y' // loanwords P, V, Z
                ]
            ),
            (
                ScriptLanguage::Spanish,
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'Ñ', 'ñ', 'O', 'o',
                    'P', 'p', 'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w',
                    'X', 'x', 'Y', 'y', 'Z', 'z', 'Á', 'á', 'É', 'é', 'Í', 'í', 'Ó', 'ó', 'Ú', 'ú',
                    'Ü', 'ü'
                ]
            ),
            (
                ScriptLanguage::Sundanese,
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'X', 'x',
                    'Y', 'y', 'Z', 'z', /*unverified*/ 'É', 'é'
                ]
            ),
            (
                ScriptLanguage::Swahili,
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'Y', 'y', 'Z', 'z'
                ]
            ),
            (
                ScriptLanguage::Swati, //++
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'Y', 'y', 'Z', 'z', 'R',
                    'r' // R - unofficially used
                ]
            ),
            (
                ScriptLanguage::Swedish,
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'X', 'x',
                    'Y', 'y', 'Z', 'z', 'Å', 'å', 'Ä', 'ä', 'Ö', 'ö',
                ]
            ),
            (
                ScriptLanguage::TamasheqLatin, //++?
                [
                    'A', 'a', 'Ă', 'ă', 'Ǎ', 'ǎ', 'Ə', 'ə', 'ǝ', 'B', 'b', 'C', 'c', 'D',
                    'd', /* 'Ḍ', 'ḍ', */
                    'E', 'e', /* 'Ɛ', 'ɛ', */ 'F', 'f', 'G', 'g', 'Ɣ', 'ɣ', 'H', 'h',
                    /* 'Ḥ', 'ḥ', */ 'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l',
                    /* 'Ḷ', 'ḷ', */ 'M', 'm', 'N', 'n', 'Ŋ', 'ŋ', 'O', 'o', 'Q', 'q', 'R',
                    'r', 'S', 's', '', '', 'Š', 'š', 'T', 't', /* 'Ṭ', 'ṭ', */ 'U', 'u',
                    'W', 'w', 'X', 'x', 'Y', 'y', 'Z', 'z', '', '', /* 'Ž', 'ž', */ 'Ɗ',
                    'ɗ',
                    /* 'P', 'p' ?*/
                ]
            ),
            (
                ScriptLanguage::TatarCrimean, //++?
                [
                    'A', 'a', 'Â', 'â', 'B', 'b', 'C', 'c', 'Ç', 'ç', 'D', 'd', 'E', 'e', 'F', 'f',
                    'G', 'g', 'Ğ', 'ğ', 'H', 'h', 'İ', 'i', 'I', 'ı', 'J', 'j', 'K', 'k', 'L', 'l',
                    'M', 'm', 'N', 'n', 'Ñ', 'ñ', 'O', 'o', 'Ö', 'ö', 'P', 'p', 'Q', 'q', 'R', 'r',
                    'S', 's', 'Ş', 'ş', 'T', 't', 'U', 'u', 'Ü', 'ü', 'V', 'v', 'Y', 'y', 'Z', 'z',
                ]
            ),
            (
                ScriptLanguage::TokPisin, //++
                [
                    'A', 'a', 'B', 'b', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h', 'I', 'i',
                    'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p', 'R', 'r',
                    'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'Y', 'y'
                ]
            ),
            (
                ScriptLanguage::Tsonga, //+
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'X', 'x',
                    'Y', 'y', 'Z', 'z'
                ]
            ),
            (
                ScriptLanguage::Tswana,
                [
                    'A', 'a', 'B', 'b', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h', 'I', 'i',
                    'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p', 'R', 'r',
                    'S', 's', 'T', 't', 'U', 'u', 'W', 'w', 'Y', 'y'
                ]
            ),
            (
                ScriptLanguage::Tumbuka,
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'Y', 'y', 'Z',
                    'z', /*unverified*/
                    'Ŵ', 'ŵ'
                ]
            ),
            (
                ScriptLanguage::Turkish, //++
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'Ç', 'ç', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g',
                    'Ğ', 'ğ', 'H', 'h', 'I', 'ı', 'İ', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm',
                    'N', 'n', 'O', 'o', 'Ö', 'ö', 'P', 'p', 'R', 'r', 'S', 's', 'Ş', 'ş', 'T', 't',
                    'U', 'u', 'Ü', 'ü', 'V', 'v', 'Y', 'y', 'Z', 'z', 'Q', 'q', 'W', 'w', 'X', 'x',
                    'Â', 'â', 'Î', 'î', 'Û', 'û'
                ]
            ),
            (
                ScriptLanguage::Turkmen, //++
                [
                    'A', 'a', 'B', 'b', 'Ç', 'ç', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'Ň', 'ň', 'O', 'o',
                    'Ö', 'ö', 'P', 'p', 'R', 'r', 'S', 's', 'Ş', 'ş', 'T', 't', 'U', 'u', 'Ü', 'ü',
                    'W', 'w', 'Y', 'y', 'Ý', 'ý', 'Z', 'z', 'Ä', 'ä', 'Ž', 'ž',
                ]
            ),
            (
                ScriptLanguage::Umbundu, //++
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'Y', 'y', 'Ã', 'ã',
                    '', '', 'Ĩ', 'ĩ', 'Õ', 'õ', 'Ũ', 'ũ', 'Ñ', 'ñ', // any more diacritics?
                ]
            ),
            (
                ScriptLanguage::UzbekNorthern, //++
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'X', 'x', 'Y', 'y',
                    'Z', 'z'
                ]
            ),
            (
                ScriptLanguage::Venetian, //++
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'Ç', 'ç', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g',
                    'H', 'h', 'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'Ł', 'ł', 'M', 'm', 'N', 'n',
                    'O', 'o', 'P', 'p', 'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v',
                    'X', 'x', 'Y', 'y', 'Z', 'z', 'À', 'à', 'È', 'è', 'É', 'é', 'Ì', 'ì', 'Ò', 'ò',
                    'Ó', 'ó', 'Ù', 'ù'
                ]
            ),
            (
                ScriptLanguage::Vietnamese,
                [
                    'A', 'a', 'Ă', 'ă', 'Â', 'â', 'B', 'b', 'C', 'c', 'D', 'd', 'Ð', 'Đ', 'đ', 'E',
                    'e', 'Ê', 'ê', 'G', 'g', 'H', 'h', 'I', 'i', 'K', 'k', 'L', 'l', 'M', 'm', 'N',
                    'n', 'O', 'o', 'Ô', 'ô', 'Ơ', 'ơ', 'P', 'p', 'Q', 'q', 'R', 'r', 'S', 's', 'T',
                    't', 'U', 'u', 'Ư', 'ư', 'V', 'v', 'X', 'x', 'Y', 'y', 'Á', 'á', 'À', 'à', '',
                    '', 'Ã', 'ã', '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', '', '', '', '', 'É', 'é', 'È', 'è', '', '', '',
                    '', '', '', '', 'ế', '', '', '', '', '', '', '', '', 'Í', 'í', 'Ì',
                    'ì', '', '', 'Ĩ', 'ĩ', '', '', 'Ó', 'ó', 'Ò', 'ò', '', '', 'Õ', 'õ', '',
                    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
                    '', '', '', '', '', 'Ú', 'ú', 'Ù', 'ù', '', '', 'Ũ', 'ũ', '', '', '',
                    '', '', '', '', '', '', '', '', '', 'Ý', 'ý', '', '', '', '', '',
                    '', '', ''
                ]
            ),
            (
                ScriptLanguage::Waray, //++
                [
                    'A', 'a', 'B', 'b', 'K', 'k', 'D', 'd', 'G', 'g', 'H', 'h', 'I', 'i', 'L', 'l',
                    'M', 'm', 'N', 'n', 'P', 'p', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'W', 'w',
                    'Y', 'y', 'E', 'e', 'O', 'o',
                    // loanwords J, V, C, F and others
                ]
            ),
            (
                ScriptLanguage::Welsh, //++
                [
                    'A', 'a', 'B', 'b', 'C', 'c', /* 'Ch', 'ch', */ 'D', 'd',
                    /* 'Dd', 'dd', */ 'E', 'e', 'F', 'f', /* 'Ff', 'ff', */ 'G', 'g',
                    /* 'Ng', 'ng', */ 'H', 'h', 'I', 'i', 'J', 'j', 'L', 'l',
                    /* 'Ll', 'll', */ 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p', 'R', 'r',
                    /* 'Rh', 'rh', */ 'S', 's', 'T', 't', /* 'Th', 'th', */ 'U', 'u',
                    'W', 'w', 'Y', 'y', 'Â', 'â', 'Ê', 'ê', 'Î', 'î', 'Ô', 'ô', 'Û', 'û', 'Ŵ', 'ŵ',
                    'Ŷ', 'ŷ', 'À', 'à', 'È', 'è', 'Ì', 'ì', 'Ò', 'ò', 'Ù', 'ù', '', '', 'Á', 'á',
                    'É', 'é', 'Í', 'í', 'Ó', 'ó', 'Ú', 'ú', '', '', 'Ý', 'ý', 'Ë', 'ë', 'Ï', 'ï',
                    'Ü', 'ü', 'Ÿ',
                    'ÿ',
                    // loanwords 'K', 'k', 'Q', 'q', 'V', 'v', 'X', 'x', 'Z', 'z',
                ]
            ),
            (
                ScriptLanguage::Wolof, //++
                [
                    'A', 'a', 'À', 'à', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'É', 'é', 'Ë', 'ë',
                    'F', 'f', 'G', 'g', 'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n',
                    'Ñ', 'ñ', 'Ŋ', 'ŋ', 'O', 'o', 'Ó', 'ó', 'P', 'p', 'Q', 'q', 'R', 'r', 'S', 's',
                    'T', 't', 'U', 'u', 'W', 'w', 'X', 'x', 'Y', 'y',
                    // loanwords H, V, Z
                ]
            ),
            (
                ScriptLanguage::Xhosa, //+
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'X', 'x',
                    'Y', 'y', 'Z', 'z'
                ]
            ),
            (
                ScriptLanguage::Yoruba, //++
                #[rustfmt::skip]
                [
                    'A', 'a', 'B', 'b', 'D', 'd', 'E', 'e', '', '', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', '', '',
                    'P', 'p', 'R', 'r', 'S', 's', '', '', 'T', 't', 'U', 'u', 'W', 'w', 'Y', 'y',
                    'Á', 'á', 'À', 'à', 'Ā', 'ā', 'É', 'é', 'È', 'è', 'Ē', 'ē', 'Í', 'í', 'Ì', 'ì',
                    'Ī', 'ī', 'Ń', 'ń', 'Ǹ', 'ǹ', '', 'ḿ', 'Ó', 'ó', 'Ò', 'ò', 'Ō', 'ō', 'Ú', 'ú',
                    'Ù', 'ù', 'Ū', 'ū',
                    // from `char_compose_custom`
                    '\u{f006d}', // M̀m̀
                    '\u{f00b9}', // Ẹ̀ẹ̀
                    '\u{f00cd}', // Ọ̀ọ̀
                    '\u{f01b9}', // Ẹ́ẹ́
                    '\u{f01cd}', // Ọ́ọ́
                    // '\u{f046d}', // M̄m̄
                    '\u{f046e}', // N̄n̄
                    // '\u{f04b9}', // Ẹ̄ẹ̄
                    // '\u{f04cd}', // Ọ̄ọ̄
                ]
            ),
            (
                ScriptLanguage::Zulu,
                [
                    'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h',
                    'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p',
                    'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'X', 'x',
                    'Y', 'y', 'Z', 'z'
                ]
            ),
            ScriptLanguage::UnknownLatin
        ]),
        Lepcha => &[ScriptLanguage::Lepcha],
        Limbu => &[ScriptLanguage::Limbu],
        LinearA => &[ScriptLanguage::MinoanLinearA],
        LinearB => &[ScriptLanguage::MycenaeanGreek],
        Lisu => &[ScriptLanguage::Lisu],
        Lycian => &[ScriptLanguage::Lycian],
        Lydian => &[ScriptLanguage::Lydian],
        Mahajani => &[
            ScriptLanguage::HindiMahajani,
            ScriptLanguage::MarwariMahajani,
            ScriptLanguage::PunjabiEasternMahajani,
        ],
        Makasar => &[ScriptLanguage::MakassareseMakasar],
        Malayalam => &[ScriptLanguage::Malayalam],
        Mandaic => &[ScriptLanguage::AramaicMandaic],
        Manichaean => &[
            ScriptLanguage::MiddlePersianManichaean,
            ScriptLanguage::SogdianManichaean,
        ],
        Marchen => &[ScriptLanguage::Zhangzhung],
        MasaramGondi => &[ScriptLanguage::GondiMasaram],
        Medefaidrin => &[ScriptLanguage::Medefaidrin],
        MeeteiMayek => &[ScriptLanguage::MeiteiMeeteiMayek],
        MendeKikakui => &[ScriptLanguage::Mende],
        MeroiticCursive => &[ScriptLanguage::MeroiticCursive],
        MeroiticHieroglyphs => &[ScriptLanguage::MeroiticHieroglyphs],
        Miao => &[ScriptLanguage::HmongMiao],
        Modi => &[ScriptLanguage::MarathiModi],
        Mongolian => &[
            ScriptLanguage::MongolianBuryat,
            ScriptLanguage::MongolianKhalkhaMongolian,
            ScriptLanguage::OiratMongolian,
        ],
        Mro => &[ScriptLanguage::Mro],
        Multani => &[ScriptLanguage::SaraikiMultani],
        NagMundari => &[ScriptLanguage::Mundari],
        Myanmar => &[
            ScriptLanguage::Burmese,
            ScriptLanguage::KarenSgaw,
            ScriptLanguage::Mon,
            ScriptLanguage::Shan,
        ],
        Nabataean => &[ScriptLanguage::AramaicNabataean],
        Nandinagari => &[ScriptLanguage::SanskritNandinagari],
        Newa => &[ScriptLanguage::Newar],
        NewTaiLue => &[ScriptLanguage::TaiLueNew],
        Nko => &[ScriptLanguage::BambaraNko, ScriptLanguage::Manding],
        Nushu => &[ScriptLanguage::ChineseTuhua],
        NyiakengPuachueHmong => &[ScriptLanguage::HmongNyiakengPuachue],
        Ogham => &[ScriptLanguage::OldIrishOgham],
        OlChiki => &[ScriptLanguage::Santali],
        OldHungarian => &[ScriptLanguage::HungarianOld],
        OldItalic => &[
            ScriptLanguage::Etruscan,
            ScriptLanguage::Oscan,
            ScriptLanguage::Umbrian,
        ],
        OldPermic => &[
            ScriptLanguage::KomiPermyakOldPermic,
            ScriptLanguage::KomiZyrianOldPermic,
        ],
        OldNorthArabian => &[ScriptLanguage::AncientNorthArabian],
        OldPersian => &[ScriptLanguage::OldPersian],
        OldSogdian => &[ScriptLanguage::SogdianOld],
        OldSouthArabian => &[ScriptLanguage::AncientSouthArabian],
        OldTurkic => &[ScriptLanguage::OldTurkic],
        OldUyghur => &[ScriptLanguage::OldUyghur],
        OlOnal => &[ScriptLanguage::Bhumij],
        Oriya => &[ScriptLanguage::Odia, ScriptLanguage::Sambalpuri],
        Osage => &[ScriptLanguage::Osage],
        Osmanya => &[ScriptLanguage::SomaliOsmanya],
        PahawhHmong => &[ScriptLanguage::HmongPahawh],
        Palmyrene => &[ScriptLanguage::AramaicPalmyrene],
        PauCinHau => &[ScriptLanguage::Tedim],
        PhagsPa => &[
            ScriptLanguage::MongolianKhalkhaPhagsPa,
            ScriptLanguage::TibetanPhagsPa,
        ],
        Phoenician => &[ScriptLanguage::Phoenician],
        PsalterPahlavi => &[ScriptLanguage::MiddlePersianPahlaviPsalter],
        Rejang => &[ScriptLanguage::RejangRejang],
        Runic => &[ScriptLanguage::OldEnglishRunic, ScriptLanguage::OldNorse],
        Samaritan => &[
            ScriptLanguage::AramaicSamaritan,
            ScriptLanguage::HebrewSamaritan,
        ],
        Saurashtra => &[ScriptLanguage::SaurashtraSaurashtra],
        Sharada => &[
            ScriptLanguage::SanskritSharada,
            ScriptLanguage::KashmiriSharada,
        ],
        Shavian => &[ScriptLanguage::EnglishShavian],
        Sidetic => &[ScriptLanguage::Sidetic],
        Siddham => &[ScriptLanguage::SanskritSiddham],
        SignWriting => &[ScriptLanguage::SignLanguages],
        Sinhala => &[ScriptLanguage::Sinhala],
        Sogdian => &[ScriptLanguage::Sogdian],
        SoraSompeng => &[ScriptLanguage::Sora],
        Soyombo => &[
            ScriptLanguage::MongolianKhalkhaSoyombo,
            ScriptLanguage::SanskritSoyombo,
            ScriptLanguage::TibetanSoyombo,
        ],
        Sundanese => &[ScriptLanguage::SundaneseSundanese],
        Sunuwar => &[ScriptLanguage::Sunuwar],
        SylotiNagri => &[ScriptLanguage::Sylheti],
        Syriac => &[ScriptLanguage::AramaicSyriac],
        Tagalog => &[ScriptLanguage::FilipinoTagalog],
        Tagbanwa => &[ScriptLanguage::Tagbanwa],
        TaiLe => &[ScriptLanguage::TaiNuea],
        TaiTham => &[
            ScriptLanguage::LaoTaiTham,
            ScriptLanguage::NorthernThaiTaiTham,
            ScriptLanguage::TaiLue,
        ],
        TaiViet => &[ScriptLanguage::TaiDam, ScriptLanguage::TaiDon],
        Takri => &[
            ScriptLanguage::DogriTakri,
            ScriptLanguage::DogriKangriTakri,
            ScriptLanguage::KashmiriTakri,
        ],
        Tamil => &[ScriptLanguage::Tamil],
        Tangsa => &[ScriptLanguage::Tangsa],
        Tangut => &[ScriptLanguage::Tangut],
        TaiYo => &[ScriptLanguage::TaiYoLaiTay],
        Telugu => &[ScriptLanguage::Telugu],
        TolongSiki => &[ScriptLanguage::KurukhTolongSiki],
        Thaana => &[ScriptLanguage::Dhivehi],
        Thai => &[
            ScriptLanguage::Isan,
            ScriptLanguage::NorthernThai,
            ScriptLanguage::Thai,
        ],
        Tibetan => &[ScriptLanguage::Dzongkha, ScriptLanguage::Tibetan],
        Tifinagh => &[ScriptLanguage::TamazightCentralAtlas],
        /* alphabet_match!([
            (
                ScriptLanguage::TamasheqTifinagh, //+
                [
                    'ⴰ', 'ⴱ', 'ⴴ', 'ⴶ', 'ⴷ', 'ⴸ', 'ⴹ', 'ⴼ', 'ⴾ', 'ⵂ', 'ⵃ', 'ⵄ', 'ⵆ', 'ⵈ', 'ⵉ', 'ⵌ',
                    'ⵋ', 'ⵍ', 'ⵎ', 'ⵏ', 'ⵑ', 'ⵓ', 'ⵔ', 'ⵗ', 'ⵙ', 'ⵚ', 'ⵛ', 'ⵜ', 'ⵟ', 'ⵡ', 'ⵢ', 'ⵣ',
                    'ⵥ', 'ⵦ',
                ]
            ),
            (
                ScriptLanguage::TamazightCentralAtlas, //++?
                [
                    // Neo-Tifinagh
                    'ⴰ', 'ⴱ', 'ⴳ', 'ⵯ', 'ⴷ', 'ⴹ', 'ⴻ', 'ⴼ', 'ⴽ', 'ⵀ', 'ⵃ', 'ⵄ', 'ⵅ', 'ⵇ', 'ⵉ', 'ⵊ',
                    'ⵍ', 'ⵎ', 'ⵏ', 'ⵓ', 'ⵔ', 'ⵕ', 'ⵖ', 'ⵙ', 'ⵚ', 'ⵛ', 'ⵜ', 'ⵟ', 'ⵡ', 'ⵢ', 'ⵣ', 'ⵥ',
                    // additional
                    /* 'ⴲ', */ 'ⴴ', /* 'ⴵ', */ 'ⴶ',
                    'ⴸ', 'ⴺ', 'ⴾ', /* 'ⴿ', */ 'ⵁ', 'ⵈ', /* 'ⵐ', */ 'ⵑ', 'ⵒ',
                    /* 'ⵘ', */ 'ⵝ', /* 'ⵞ', 'ⵤ', */ 'ⵦ', 'ⵧ', 'ⵠ', '⵰', '\u{2d7f}',
                ]
            ),
        ]), */
        Tirhuta => &[ScriptLanguage::MaithiliTirhuta],
        Todhri => &[ScriptLanguage::AlbanianTodhri],
        Toto => &[ScriptLanguage::Toto],
        TuluTigalari => &[
            ScriptLanguage::KannadaTuluTigalari,
            ScriptLanguage::SanskritTuluTigalari,
            ScriptLanguage::TuluTigalari,
        ],
        Ugaritic => &[ScriptLanguage::Ugaritic],
        Vai => &[ScriptLanguage::Vai],
        Vithkuqi => &[ScriptLanguage::AlbanianToskVithkuqi],
        Wancho => &[ScriptLanguage::WanchoWancho],
        WarangCiti => &[ScriptLanguage::HoWarangCiti],
        Yezidi => &[ScriptLanguage::KurdishNorthernYezidi],
        Yi => &[ScriptLanguage::Nuosu],
        ZanabazarSquare => &[
            ScriptLanguage::MongolianKhalkhaZanabazarSquare,
            ScriptLanguage::SanskritZanabazarSquare,
            ScriptLanguage::TibetanZanabazarSquare,
        ],
    }
}