1 /*
2 * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
682 0x0941, 0x0949,
683 0x094d, 0x094e,
684 0x0951, 0x0958,
685 0x0962, 0x0964,
686 0x0981, 0x0982,
687 0x0984, 0x0985,
688 0x098d, 0x098f,
689 0x0991, 0x0993,
690 0x09a9, 0x09aa,
691 0x09b1, 0x09b2,
692 0x09b3, 0x09b6,
693 0x09ba, 0x09bd,
694 0x09c1, 0x09c7,
695 0x09c9, 0x09cb,
696 0x09cd, 0x09ce,
697 0x09cf, 0x09d7,
698 0x09d8, 0x09dc,
699 0x09de, 0x09df,
700 0x09e2, 0x09e6,
701 0x09f2, 0x09f4,
702 0x09fb, 0x0a03,
703 0x0a04, 0x0a05,
704 0x0a0b, 0x0a0f,
705 0x0a11, 0x0a13,
706 0x0a29, 0x0a2a,
707 0x0a31, 0x0a32,
708 0x0a34, 0x0a35,
709 0x0a37, 0x0a38,
710 0x0a3a, 0x0a3e,
711 0x0a41, 0x0a59,
712 0x0a5d, 0x0a5e,
713 0x0a5f, 0x0a66,
714 0x0a70, 0x0a72,
715 0x0a75, 0x0a83,
716 0x0a84, 0x0a85,
717 0x0a8e, 0x0a8f,
718 0x0a92, 0x0a93,
719 0x0aa9, 0x0aaa,
720 0x0ab1, 0x0ab2,
721 0x0ab4, 0x0ab5,
722 0x0aba, 0x0abd,
752 0x0ba5, 0x0ba8,
753 0x0bab, 0x0bae,
754 0x0bba, 0x0bbe,
755 0x0bc0, 0x0bc1,
756 0x0bc3, 0x0bc6,
757 0x0bc9, 0x0bca,
758 0x0bcd, 0x0bd0,
759 0x0bd1, 0x0bd7,
760 0x0bd8, 0x0be6,
761 0x0bf3, 0x0c01,
762 0x0c04, 0x0c05,
763 0x0c0d, 0x0c0e,
764 0x0c11, 0x0c12,
765 0x0c29, 0x0c2a,
766 0x0c3a, 0x0c3d,
767 0x0c3e, 0x0c41,
768 0x0c45, 0x0c58,
769 0x0c5b, 0x0c60,
770 0x0c62, 0x0c66,
771 0x0c70, 0x0c7f,
772 0x0c80, 0x0c82,
773 0x0c84, 0x0c85,
774 0x0c8d, 0x0c8e,
775 0x0c91, 0x0c92,
776 0x0ca9, 0x0caa,
777 0x0cb4, 0x0cb5,
778 0x0cba, 0x0cbd,
779 0x0cc5, 0x0cc6,
780 0x0cc9, 0x0cca,
781 0x0ccc, 0x0cd5,
782 0x0cd7, 0x0cde,
783 0x0cdf, 0x0ce0,
784 0x0ce2, 0x0ce6,
785 0x0cf0, 0x0cf1,
786 0x0cf3, 0x0d02,
787 0x0d04, 0x0d05,
788 0x0d0d, 0x0d0e,
789 0x0d11, 0x0d12,
790 0x0d3b, 0x0d3d,
791 0x0d41, 0x0d46,
792 0x0d49, 0x0d4a,
793 0x0d4d, 0x0d4e,
794 0x0d4f, 0x0d57,
795 0x0d58, 0x0d5f,
796 0x0d62, 0x0d66,
797 0x0d76, 0x0d79,
798 0x0d80, 0x0d82,
799 0x0d84, 0x0d85,
800 0x0d97, 0x0d9a,
801 0x0db2, 0x0db3,
802 0x0dbc, 0x0dbd,
803 0x0dbe, 0x0dc0,
804 0x0dc7, 0x0dcf,
805 0x0dd2, 0x0dd8,
806 0x0de0, 0x0de6,
807 0x0df0, 0x0df2,
808 0x0df5, 0x0e01,
809 0x0e31, 0x0e32,
810 0x0e34, 0x0e40,
811 0x0e47, 0x0e4f,
812 0x0e5c, 0x0e81,
813 0x0e83, 0x0e84,
814 0x0e85, 0x0e87,
815 0x0e89, 0x0e8a,
816 0x0e8b, 0x0e8d,
817 0x0e8e, 0x0e94,
875 0x13f6, 0x13f8,
876 0x13fe, 0x1401,
877 0x1680, 0x1681,
878 0x169b, 0x16a0,
879 0x16f9, 0x1700,
880 0x170d, 0x170e,
881 0x1712, 0x1720,
882 0x1732, 0x1735,
883 0x1737, 0x1740,
884 0x1752, 0x1760,
885 0x176d, 0x176e,
886 0x1771, 0x1780,
887 0x17b4, 0x17b6,
888 0x17b7, 0x17be,
889 0x17c6, 0x17c7,
890 0x17c9, 0x17d4,
891 0x17db, 0x17dc,
892 0x17dd, 0x17e0,
893 0x17ea, 0x1810,
894 0x181a, 0x1820,
895 0x1878, 0x1880,
896 0x18a9, 0x18aa,
897 0x18ab, 0x18b0,
898 0x18f6, 0x1900,
899 0x191f, 0x1923,
900 0x1927, 0x1929,
901 0x192c, 0x1930,
902 0x1932, 0x1933,
903 0x1939, 0x1946,
904 0x196e, 0x1970,
905 0x1975, 0x1980,
906 0x19ac, 0x19b0,
907 0x19ca, 0x19d0,
908 0x19db, 0x1a00,
909 0x1a17, 0x1a19,
910 0x1a1b, 0x1a1e,
911 0x1a56, 0x1a57,
912 0x1a58, 0x1a61,
913 0x1a62, 0x1a63,
914 0x1a65, 0x1a6d,
915 0x1a73, 0x1a80,
917 0x1a9a, 0x1aa0,
918 0x1aae, 0x1b04,
919 0x1b34, 0x1b35,
920 0x1b36, 0x1b3b,
921 0x1b3c, 0x1b3d,
922 0x1b42, 0x1b43,
923 0x1b4c, 0x1b50,
924 0x1b6b, 0x1b74,
925 0x1b7d, 0x1b82,
926 0x1ba2, 0x1ba6,
927 0x1ba8, 0x1baa,
928 0x1bab, 0x1bae,
929 0x1be6, 0x1be7,
930 0x1be8, 0x1bea,
931 0x1bed, 0x1bee,
932 0x1bef, 0x1bf2,
933 0x1bf4, 0x1bfc,
934 0x1c2c, 0x1c34,
935 0x1c36, 0x1c3b,
936 0x1c4a, 0x1c4d,
937 0x1c80, 0x1cc0,
938 0x1cc8, 0x1cd3,
939 0x1cd4, 0x1ce1,
940 0x1ce2, 0x1ce9,
941 0x1ced, 0x1cee,
942 0x1cf4, 0x1cf5,
943 0x1cf7, 0x1d00,
944 0x1dc0, 0x1e00,
945 0x1f16, 0x1f18,
946 0x1f1e, 0x1f20,
947 0x1f46, 0x1f48,
948 0x1f4e, 0x1f50,
949 0x1f58, 0x1f59,
950 0x1f5a, 0x1f5b,
951 0x1f5c, 0x1f5d,
952 0x1f5e, 0x1f5f,
953 0x1f7e, 0x1f80,
954 0x1fb5, 0x1fb6,
955 0x1fbd, 0x1fbe,
956 0x1fbf, 0x1fc2,
957 0x1fc5, 0x1fc6,
958 0x1fcd, 0x1fd0,
959 0x1fd4, 0x1fd6,
960 0x1fdc, 0x1fe0,
961 0x1fed, 0x1ff2,
962 0x1ff5, 0x1ff6,
963 0x1ffd, 0x200e,
995 0x2d68, 0x2d6f,
996 0x2d71, 0x2d80,
997 0x2d97, 0x2da0,
998 0x2da7, 0x2da8,
999 0x2daf, 0x2db0,
1000 0x2db7, 0x2db8,
1001 0x2dbf, 0x2dc0,
1002 0x2dc7, 0x2dc8,
1003 0x2dcf, 0x2dd0,
1004 0x2dd7, 0x2dd8,
1005 0x2ddf, 0x3005,
1006 0x3008, 0x3021,
1007 0x302a, 0x302e,
1008 0x3030, 0x3031,
1009 0x3036, 0x3038,
1010 0x303d, 0x3041,
1011 0x3097, 0x309d,
1012 0x30a0, 0x30a1,
1013 0x30fb, 0x30fc,
1014 0x3100, 0x3105,
1015 0x312e, 0x3131,
1016 0x318f, 0x3190,
1017 0x31bb, 0x31f0,
1018 0x321d, 0x3220,
1019 0x3250, 0x3260,
1020 0x327c, 0x327f,
1021 0x32b1, 0x32c0,
1022 0x32cc, 0x32d0,
1023 0x32ff, 0x3300,
1024 0x3377, 0x337b,
1025 0x33de, 0x33e0,
1026 0x33ff, 0x3400,
1027 0x4db6, 0x4e00,
1028 0x9fd6, 0xa000,
1029 0xa48d, 0xa4d0,
1030 0xa60d, 0xa610,
1031 0xa62c, 0xa640,
1032 0xa66f, 0xa680,
1033 0xa69e, 0xa6a0,
1034 0xa6f0, 0xa6f2,
1035 0xa6f8, 0xa722,
1036 0xa788, 0xa789,
1037 0xa7ae, 0xa7b0,
1038 0xa7b8, 0xa7f7,
1039 0xa802, 0xa803,
1040 0xa806, 0xa807,
1041 0xa80b, 0xa80c,
1042 0xa825, 0xa827,
1043 0xa828, 0xa830,
1044 0xa838, 0xa840,
1045 0xa874, 0xa880,
1046 0xa8c4, 0xa8ce,
1047 0xa8da, 0xa8f2,
1048 0xa8fe, 0xa900,
1049 0xa926, 0xa92e,
1050 0xa947, 0xa952,
1051 0xa954, 0xa95f,
1052 0xa97d, 0xa983,
1053 0xa9b3, 0xa9b4,
1054 0xa9b6, 0xa9ba,
1055 0xa9bc, 0xa9bd,
1056 0xa9ce, 0xa9cf,
1057 0xa9da, 0xa9de,
1097 0xfdfd, 0xfdfe,
1098 0xfe00, 0xfe70,
1099 0xfeff, 0xff21,
1100 0xff3b, 0xff41,
1101 0xff5b, 0xff66,
1102 0xffbf, 0xffc2,
1103 0xffc8, 0xffca,
1104 0xffd0, 0xffd2,
1105 0xffd8, 0xffda,
1106 0xffdd, 0x10000,
1107 0x1000c, 0x1000d,
1108 0x10027, 0x10028,
1109 0x1003b, 0x1003c,
1110 0x1003e, 0x1003f,
1111 0x1004e, 0x10050,
1112 0x1005e, 0x10080,
1113 0x100fb, 0x10100,
1114 0x10101, 0x10102,
1115 0x10103, 0x10107,
1116 0x10134, 0x10137,
1117 0x10140, 0x101d0,
1118 0x101fd, 0x10280,
1119 0x1029d, 0x102a0,
1120 0x102d1, 0x10300,
1121 0x10324, 0x10330,
1122 0x1034b, 0x10350,
1123 0x10376, 0x10380,
1124 0x1039e, 0x1039f,
1125 0x103c4, 0x103c8,
1126 0x103d6, 0x10400,
1127 0x1049e, 0x104a0,
1128 0x104aa, 0x10500,
1129 0x10528, 0x10530,
1130 0x10564, 0x1056f,
1131 0x10570, 0x10600,
1132 0x10737, 0x10740,
1133 0x10756, 0x10760,
1134 0x10768, 0x10800,
1135 0x1091f, 0x10920,
1136 0x10a01, 0x10a04,
1137 0x10a05, 0x10a07,
1138 0x10a0c, 0x10a10,
1139 0x10a38, 0x10a3b,
1140 0x10a3f, 0x10a40,
1141 0x10ae5, 0x10ae7,
1142 0x10b39, 0x10b40,
1143 0x10e60, 0x10e7f,
1144 0x11001, 0x11002,
1145 0x11038, 0x11047,
1146 0x1104e, 0x11066,
1147 0x11070, 0x11082,
1148 0x110b3, 0x110b7,
1169 0x11289, 0x1128a,
1170 0x1128e, 0x1128f,
1171 0x1129e, 0x1129f,
1172 0x112aa, 0x112b0,
1173 0x112df, 0x112e0,
1174 0x112e3, 0x112f0,
1175 0x112fa, 0x11302,
1176 0x11304, 0x11305,
1177 0x1130d, 0x1130f,
1178 0x11311, 0x11313,
1179 0x11329, 0x1132a,
1180 0x11331, 0x11332,
1181 0x11334, 0x11335,
1182 0x1133a, 0x1133d,
1183 0x11340, 0x11341,
1184 0x11345, 0x11347,
1185 0x11349, 0x1134b,
1186 0x1134e, 0x11350,
1187 0x11351, 0x11357,
1188 0x11358, 0x1135d,
1189 0x11364, 0x11480,
1190 0x114b3, 0x114b9,
1191 0x114ba, 0x114bb,
1192 0x114bf, 0x114c1,
1193 0x114c2, 0x114c4,
1194 0x114c8, 0x114d0,
1195 0x114da, 0x11580,
1196 0x115b2, 0x115b8,
1197 0x115bc, 0x115be,
1198 0x115bf, 0x115c1,
1199 0x115dc, 0x11600,
1200 0x11633, 0x1163b,
1201 0x1163d, 0x1163e,
1202 0x1163f, 0x11641,
1203 0x11645, 0x11650,
1204 0x1165a, 0x11680,
1205 0x116ab, 0x116ac,
1206 0x116ad, 0x116ae,
1207 0x116b0, 0x116b6,
1208 0x116b7, 0x116c0,
1209 0x116ca, 0x11700,
1210 0x1171a, 0x11720,
1211 0x11722, 0x11726,
1212 0x11727, 0x11730,
1213 0x11740, 0x118a0,
1214 0x118f3, 0x118ff,
1215 0x11900, 0x11ac0,
1216 0x11af9, 0x12000,
1217 0x1239a, 0x12400,
1218 0x1246f, 0x12470,
1219 0x12475, 0x12480,
1220 0x12544, 0x13000,
1221 0x1342f, 0x14400,
1222 0x14647, 0x16800,
1223 0x16a39, 0x16a40,
1224 0x16a5f, 0x16a60,
1225 0x16a6a, 0x16a6e,
1226 0x16a70, 0x16ad0,
1227 0x16aee, 0x16af5,
1228 0x16af6, 0x16b00,
1229 0x16b30, 0x16b37,
1230 0x16b46, 0x16b50,
1231 0x16b5a, 0x16b5b,
1232 0x16b62, 0x16b63,
1233 0x16b78, 0x16b7d,
1234 0x16b90, 0x16f00,
1235 0x16f45, 0x16f50,
1236 0x16f7f, 0x16f93,
1237 0x16fa0, 0x1b000,
1238 0x1b002, 0x1bc00,
1239 0x1bc6b, 0x1bc70,
1240 0x1bc7d, 0x1bc80,
1241 0x1bc89, 0x1bc90,
1242 0x1bc9a, 0x1bc9c,
1243 0x1bc9d, 0x1bc9f,
1244 0x1bca0, 0x1d000,
1245 0x1d0f6, 0x1d100,
1246 0x1d127, 0x1d129,
1247 0x1d167, 0x1d16a,
1248 0x1d173, 0x1d183,
1249 0x1d185, 0x1d18c,
1250 0x1d1aa, 0x1d1ae,
1251 0x1d1e9, 0x1d360,
1252 0x1d372, 0x1d400,
1253 0x1d455, 0x1d456,
1254 0x1d49d, 0x1d49e,
1255 0x1d4a0, 0x1d4a2,
1256 0x1d4a3, 0x1d4a5,
1257 0x1d4a7, 0x1d4a9,
1258 0x1d4ad, 0x1d4ae,
1264 0x1d515, 0x1d516,
1265 0x1d51d, 0x1d51e,
1266 0x1d53a, 0x1d53b,
1267 0x1d53f, 0x1d540,
1268 0x1d545, 0x1d546,
1269 0x1d547, 0x1d54a,
1270 0x1d551, 0x1d552,
1271 0x1d6a6, 0x1d6a8,
1272 0x1d6db, 0x1d6dc,
1273 0x1d715, 0x1d716,
1274 0x1d74f, 0x1d750,
1275 0x1d789, 0x1d78a,
1276 0x1d7c3, 0x1d7c4,
1277 0x1d7cc, 0x1d800,
1278 0x1da00, 0x1da37,
1279 0x1da3b, 0x1da6d,
1280 0x1da75, 0x1da76,
1281 0x1da84, 0x1da85,
1282 0x1da8c, 0x1e800,
1283 0x1e8d0, 0x1e8d7,
1284 0x1eef0, 0x1eef2,
1285 0x1f000, 0x1f110,
1286 0x1f12f, 0x1f130,
1287 0x1f16a, 0x1f170,
1288 0x1f19b, 0x1f1e6,
1289 0x1f203, 0x1f210,
1290 0x1f23b, 0x1f240,
1291 0x1f249, 0x1f250,
1292 0x1f252, 0x20000,
1293 0x2a6d7, 0x2a700,
1294 0x2b735, 0x2b740,
1295 0x2b81e, 0x2b820,
1296 0x2cea2, 0x2f800,
1297 0x2fa1e, 0xf0000,
1298 0xffffe, 0x100000,
1299 0x10fffe, 0x10ffff // sentinel
1300 };
1301
1302
1303 // use a binary search with a cache
1304
1305 private transient volatile int stCache = 0;
1306
1307 private boolean isStrongDirectional(char c) {
1308 int cachedIndex = stCache;
1309 if (c < strongTable[cachedIndex]) {
1310 cachedIndex = search(c, strongTable, 0, cachedIndex);
1311 } else if (c >= strongTable[cachedIndex + 1]) {
1312 cachedIndex = search(c, strongTable, cachedIndex + 1,
1313 strongTable.length - cachedIndex - 1);
1314 }
1315 boolean val = (cachedIndex & 0x1) == 1;
1316 stCache = cachedIndex;
|
1 /*
2 * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
682 0x0941, 0x0949,
683 0x094d, 0x094e,
684 0x0951, 0x0958,
685 0x0962, 0x0964,
686 0x0981, 0x0982,
687 0x0984, 0x0985,
688 0x098d, 0x098f,
689 0x0991, 0x0993,
690 0x09a9, 0x09aa,
691 0x09b1, 0x09b2,
692 0x09b3, 0x09b6,
693 0x09ba, 0x09bd,
694 0x09c1, 0x09c7,
695 0x09c9, 0x09cb,
696 0x09cd, 0x09ce,
697 0x09cf, 0x09d7,
698 0x09d8, 0x09dc,
699 0x09de, 0x09df,
700 0x09e2, 0x09e6,
701 0x09f2, 0x09f4,
702 0x09fb, 0x09fc,
703 0x09fe, 0x0a03,
704 0x0a04, 0x0a05,
705 0x0a0b, 0x0a0f,
706 0x0a11, 0x0a13,
707 0x0a29, 0x0a2a,
708 0x0a31, 0x0a32,
709 0x0a34, 0x0a35,
710 0x0a37, 0x0a38,
711 0x0a3a, 0x0a3e,
712 0x0a41, 0x0a59,
713 0x0a5d, 0x0a5e,
714 0x0a5f, 0x0a66,
715 0x0a70, 0x0a72,
716 0x0a75, 0x0a83,
717 0x0a84, 0x0a85,
718 0x0a8e, 0x0a8f,
719 0x0a92, 0x0a93,
720 0x0aa9, 0x0aaa,
721 0x0ab1, 0x0ab2,
722 0x0ab4, 0x0ab5,
723 0x0aba, 0x0abd,
753 0x0ba5, 0x0ba8,
754 0x0bab, 0x0bae,
755 0x0bba, 0x0bbe,
756 0x0bc0, 0x0bc1,
757 0x0bc3, 0x0bc6,
758 0x0bc9, 0x0bca,
759 0x0bcd, 0x0bd0,
760 0x0bd1, 0x0bd7,
761 0x0bd8, 0x0be6,
762 0x0bf3, 0x0c01,
763 0x0c04, 0x0c05,
764 0x0c0d, 0x0c0e,
765 0x0c11, 0x0c12,
766 0x0c29, 0x0c2a,
767 0x0c3a, 0x0c3d,
768 0x0c3e, 0x0c41,
769 0x0c45, 0x0c58,
770 0x0c5b, 0x0c60,
771 0x0c62, 0x0c66,
772 0x0c70, 0x0c7f,
773 0x0c81, 0x0c82,
774 0x0c84, 0x0c85,
775 0x0c8d, 0x0c8e,
776 0x0c91, 0x0c92,
777 0x0ca9, 0x0caa,
778 0x0cb4, 0x0cb5,
779 0x0cba, 0x0cbd,
780 0x0cc5, 0x0cc6,
781 0x0cc9, 0x0cca,
782 0x0ccc, 0x0cd5,
783 0x0cd7, 0x0cde,
784 0x0cdf, 0x0ce0,
785 0x0ce2, 0x0ce6,
786 0x0cf0, 0x0cf1,
787 0x0cf3, 0x0d02,
788 0x0d04, 0x0d05,
789 0x0d0d, 0x0d0e,
790 0x0d11, 0x0d12,
791 0x0d3b, 0x0d3d,
792 0x0d41, 0x0d46,
793 0x0d49, 0x0d4a,
794 0x0d4d, 0x0d4e,
795 0x0d62, 0x0d66,
796 0x0d80, 0x0d82,
797 0x0d84, 0x0d85,
798 0x0d97, 0x0d9a,
799 0x0db2, 0x0db3,
800 0x0dbc, 0x0dbd,
801 0x0dbe, 0x0dc0,
802 0x0dc7, 0x0dcf,
803 0x0dd2, 0x0dd8,
804 0x0de0, 0x0de6,
805 0x0df0, 0x0df2,
806 0x0df5, 0x0e01,
807 0x0e31, 0x0e32,
808 0x0e34, 0x0e40,
809 0x0e47, 0x0e4f,
810 0x0e5c, 0x0e81,
811 0x0e83, 0x0e84,
812 0x0e85, 0x0e87,
813 0x0e89, 0x0e8a,
814 0x0e8b, 0x0e8d,
815 0x0e8e, 0x0e94,
873 0x13f6, 0x13f8,
874 0x13fe, 0x1401,
875 0x1680, 0x1681,
876 0x169b, 0x16a0,
877 0x16f9, 0x1700,
878 0x170d, 0x170e,
879 0x1712, 0x1720,
880 0x1732, 0x1735,
881 0x1737, 0x1740,
882 0x1752, 0x1760,
883 0x176d, 0x176e,
884 0x1771, 0x1780,
885 0x17b4, 0x17b6,
886 0x17b7, 0x17be,
887 0x17c6, 0x17c7,
888 0x17c9, 0x17d4,
889 0x17db, 0x17dc,
890 0x17dd, 0x17e0,
891 0x17ea, 0x1810,
892 0x181a, 0x1820,
893 0x1878, 0x1884,
894 0x1885, 0x1887,
895 0x18a9, 0x18aa,
896 0x18ab, 0x18b0,
897 0x18f6, 0x1900,
898 0x191f, 0x1923,
899 0x1927, 0x1929,
900 0x192c, 0x1930,
901 0x1932, 0x1933,
902 0x1939, 0x1946,
903 0x196e, 0x1970,
904 0x1975, 0x1980,
905 0x19ac, 0x19b0,
906 0x19ca, 0x19d0,
907 0x19db, 0x1a00,
908 0x1a17, 0x1a19,
909 0x1a1b, 0x1a1e,
910 0x1a56, 0x1a57,
911 0x1a58, 0x1a61,
912 0x1a62, 0x1a63,
913 0x1a65, 0x1a6d,
914 0x1a73, 0x1a80,
916 0x1a9a, 0x1aa0,
917 0x1aae, 0x1b04,
918 0x1b34, 0x1b35,
919 0x1b36, 0x1b3b,
920 0x1b3c, 0x1b3d,
921 0x1b42, 0x1b43,
922 0x1b4c, 0x1b50,
923 0x1b6b, 0x1b74,
924 0x1b7d, 0x1b82,
925 0x1ba2, 0x1ba6,
926 0x1ba8, 0x1baa,
927 0x1bab, 0x1bae,
928 0x1be6, 0x1be7,
929 0x1be8, 0x1bea,
930 0x1bed, 0x1bee,
931 0x1bef, 0x1bf2,
932 0x1bf4, 0x1bfc,
933 0x1c2c, 0x1c34,
934 0x1c36, 0x1c3b,
935 0x1c4a, 0x1c4d,
936 0x1cc8, 0x1cd3,
937 0x1cd4, 0x1ce1,
938 0x1ce2, 0x1ce9,
939 0x1ced, 0x1cee,
940 0x1cf4, 0x1cf5,
941 0x1cf8, 0x1d00,
942 0x1dc0, 0x1e00,
943 0x1f16, 0x1f18,
944 0x1f1e, 0x1f20,
945 0x1f46, 0x1f48,
946 0x1f4e, 0x1f50,
947 0x1f58, 0x1f59,
948 0x1f5a, 0x1f5b,
949 0x1f5c, 0x1f5d,
950 0x1f5e, 0x1f5f,
951 0x1f7e, 0x1f80,
952 0x1fb5, 0x1fb6,
953 0x1fbd, 0x1fbe,
954 0x1fbf, 0x1fc2,
955 0x1fc5, 0x1fc6,
956 0x1fcd, 0x1fd0,
957 0x1fd4, 0x1fd6,
958 0x1fdc, 0x1fe0,
959 0x1fed, 0x1ff2,
960 0x1ff5, 0x1ff6,
961 0x1ffd, 0x200e,
993 0x2d68, 0x2d6f,
994 0x2d71, 0x2d80,
995 0x2d97, 0x2da0,
996 0x2da7, 0x2da8,
997 0x2daf, 0x2db0,
998 0x2db7, 0x2db8,
999 0x2dbf, 0x2dc0,
1000 0x2dc7, 0x2dc8,
1001 0x2dcf, 0x2dd0,
1002 0x2dd7, 0x2dd8,
1003 0x2ddf, 0x3005,
1004 0x3008, 0x3021,
1005 0x302a, 0x302e,
1006 0x3030, 0x3031,
1007 0x3036, 0x3038,
1008 0x303d, 0x3041,
1009 0x3097, 0x309d,
1010 0x30a0, 0x30a1,
1011 0x30fb, 0x30fc,
1012 0x3100, 0x3105,
1013 0x312f, 0x3131,
1014 0x318f, 0x3190,
1015 0x31bb, 0x31f0,
1016 0x321d, 0x3220,
1017 0x3250, 0x3260,
1018 0x327c, 0x327f,
1019 0x32b1, 0x32c0,
1020 0x32cc, 0x32d0,
1021 0x32ff, 0x3300,
1022 0x3377, 0x337b,
1023 0x33de, 0x33e0,
1024 0x33ff, 0x3400,
1025 0x4db6, 0x4e00,
1026 0x9feb, 0xa000,
1027 0xa48d, 0xa4d0,
1028 0xa60d, 0xa610,
1029 0xa62c, 0xa640,
1030 0xa66f, 0xa680,
1031 0xa69e, 0xa6a0,
1032 0xa6f0, 0xa6f2,
1033 0xa6f8, 0xa722,
1034 0xa788, 0xa789,
1035 0xa7af, 0xa7b0,
1036 0xa7b8, 0xa7f7,
1037 0xa802, 0xa803,
1038 0xa806, 0xa807,
1039 0xa80b, 0xa80c,
1040 0xa825, 0xa827,
1041 0xa828, 0xa830,
1042 0xa838, 0xa840,
1043 0xa874, 0xa880,
1044 0xa8c4, 0xa8ce,
1045 0xa8da, 0xa8f2,
1046 0xa8fe, 0xa900,
1047 0xa926, 0xa92e,
1048 0xa947, 0xa952,
1049 0xa954, 0xa95f,
1050 0xa97d, 0xa983,
1051 0xa9b3, 0xa9b4,
1052 0xa9b6, 0xa9ba,
1053 0xa9bc, 0xa9bd,
1054 0xa9ce, 0xa9cf,
1055 0xa9da, 0xa9de,
1095 0xfdfd, 0xfdfe,
1096 0xfe00, 0xfe70,
1097 0xfeff, 0xff21,
1098 0xff3b, 0xff41,
1099 0xff5b, 0xff66,
1100 0xffbf, 0xffc2,
1101 0xffc8, 0xffca,
1102 0xffd0, 0xffd2,
1103 0xffd8, 0xffda,
1104 0xffdd, 0x10000,
1105 0x1000c, 0x1000d,
1106 0x10027, 0x10028,
1107 0x1003b, 0x1003c,
1108 0x1003e, 0x1003f,
1109 0x1004e, 0x10050,
1110 0x1005e, 0x10080,
1111 0x100fb, 0x10100,
1112 0x10101, 0x10102,
1113 0x10103, 0x10107,
1114 0x10134, 0x10137,
1115 0x10140, 0x1018d,
1116 0x1018f, 0x101d0,
1117 0x101fd, 0x10280,
1118 0x1029d, 0x102a0,
1119 0x102d1, 0x10300,
1120 0x10324, 0x1032d,
1121 0x1034b, 0x10350,
1122 0x10376, 0x10380,
1123 0x1039e, 0x1039f,
1124 0x103c4, 0x103c8,
1125 0x103d6, 0x10400,
1126 0x1049e, 0x104a0,
1127 0x104aa, 0x104d3,
1128 0x104d4, 0x104d8,
1129 0x104fc, 0x10500,
1130 0x10528, 0x10530,
1131 0x10564, 0x1056f,
1132 0x10570, 0x10600,
1133 0x10737, 0x10740,
1134 0x10756, 0x10760,
1135 0x10768, 0x10800,
1136 0x1091f, 0x10920,
1137 0x10a01, 0x10a04,
1138 0x10a05, 0x10a07,
1139 0x10a0c, 0x10a10,
1140 0x10a38, 0x10a3b,
1141 0x10a3f, 0x10a40,
1142 0x10ae5, 0x10ae7,
1143 0x10b39, 0x10b40,
1144 0x10e60, 0x10e7f,
1145 0x11001, 0x11002,
1146 0x11038, 0x11047,
1147 0x1104e, 0x11066,
1148 0x11070, 0x11082,
1149 0x110b3, 0x110b7,
1170 0x11289, 0x1128a,
1171 0x1128e, 0x1128f,
1172 0x1129e, 0x1129f,
1173 0x112aa, 0x112b0,
1174 0x112df, 0x112e0,
1175 0x112e3, 0x112f0,
1176 0x112fa, 0x11302,
1177 0x11304, 0x11305,
1178 0x1130d, 0x1130f,
1179 0x11311, 0x11313,
1180 0x11329, 0x1132a,
1181 0x11331, 0x11332,
1182 0x11334, 0x11335,
1183 0x1133a, 0x1133d,
1184 0x11340, 0x11341,
1185 0x11345, 0x11347,
1186 0x11349, 0x1134b,
1187 0x1134e, 0x11350,
1188 0x11351, 0x11357,
1189 0x11358, 0x1135d,
1190 0x11364, 0x11400,
1191 0x11438, 0x11440,
1192 0x11442, 0x11445,
1193 0x11446, 0x11447,
1194 0x1145a, 0x1145b,
1195 0x1145c, 0x1145d,
1196 0x1145e, 0x11480,
1197 0x114b3, 0x114b9,
1198 0x114ba, 0x114bb,
1199 0x114bf, 0x114c1,
1200 0x114c2, 0x114c4,
1201 0x114c8, 0x114d0,
1202 0x114da, 0x11580,
1203 0x115b2, 0x115b8,
1204 0x115bc, 0x115be,
1205 0x115bf, 0x115c1,
1206 0x115dc, 0x11600,
1207 0x11633, 0x1163b,
1208 0x1163d, 0x1163e,
1209 0x1163f, 0x11641,
1210 0x11645, 0x11650,
1211 0x1165a, 0x11680,
1212 0x116ab, 0x116ac,
1213 0x116ad, 0x116ae,
1214 0x116b0, 0x116b6,
1215 0x116b7, 0x116c0,
1216 0x116ca, 0x11700,
1217 0x1171a, 0x11720,
1218 0x11722, 0x11726,
1219 0x11727, 0x11730,
1220 0x11740, 0x118a0,
1221 0x118f3, 0x118ff,
1222 0x11900, 0x11a00,
1223 0x11a01, 0x11a07,
1224 0x11a09, 0x11a0b,
1225 0x11a33, 0x11a3a,
1226 0x11a3b, 0x11a3f,
1227 0x11a47, 0x11a50,
1228 0x11a51, 0x11a57,
1229 0x11a59, 0x11a5c,
1230 0x11a84, 0x11a86,
1231 0x11a8a, 0x11a97,
1232 0x11a98, 0x11a9a,
1233 0x11a9d, 0x11a9e,
1234 0x11aa3, 0x11ac0,
1235 0x11af9, 0x11C00,
1236 0x11C09, 0x11c0a,
1237 0x11c30, 0x11c3e,
1238 0x11c46, 0x11c50,
1239 0x11c6d, 0x11c70,
1240 0x11c90, 0x11ca9,
1241 0x11caa, 0x11cb1,
1242 0x11cb2, 0x11cb4,
1243 0x11cb5, 0x11d00,
1244 0x11d07, 0x11d08,
1245 0x11d0a, 0x11d0b,
1246 0x11d31, 0x11d46,
1247 0x11d47, 0x11d50,
1248 0x11d5a, 0x12000,
1249 0x1239a, 0x12400,
1250 0x1246f, 0x12470,
1251 0x12475, 0x12480,
1252 0x12544, 0x13000,
1253 0x1342f, 0x14400,
1254 0x14647, 0x16800,
1255 0x16a39, 0x16a40,
1256 0x16a5f, 0x16a60,
1257 0x16a6a, 0x16a6e,
1258 0x16a70, 0x16ad0,
1259 0x16aee, 0x16af5,
1260 0x16af6, 0x16b00,
1261 0x16b30, 0x16b37,
1262 0x16b46, 0x16b50,
1263 0x16b5a, 0x16b5b,
1264 0x16b62, 0x16b63,
1265 0x16b78, 0x16b7d,
1266 0x16b90, 0x16f00,
1267 0x16f45, 0x16f50,
1268 0x16f7f, 0x16f93,
1269 0x16fa0, 0x16fe0,
1270 0x16fe2, 0x17000,
1271 0x187ed, 0x18800,
1272 0x18af3, 0x1b000,
1273 0x1b11f, 0x1b170,
1274 0x1b2fc, 0x1bc00,
1275 0x1bc6b, 0x1bc70,
1276 0x1bc7d, 0x1bc80,
1277 0x1bc89, 0x1bc90,
1278 0x1bc9a, 0x1bc9c,
1279 0x1bc9d, 0x1bc9f,
1280 0x1bca0, 0x1d000,
1281 0x1d0f6, 0x1d100,
1282 0x1d127, 0x1d129,
1283 0x1d167, 0x1d16a,
1284 0x1d173, 0x1d183,
1285 0x1d185, 0x1d18c,
1286 0x1d1aa, 0x1d1ae,
1287 0x1d1e9, 0x1d360,
1288 0x1d372, 0x1d400,
1289 0x1d455, 0x1d456,
1290 0x1d49d, 0x1d49e,
1291 0x1d4a0, 0x1d4a2,
1292 0x1d4a3, 0x1d4a5,
1293 0x1d4a7, 0x1d4a9,
1294 0x1d4ad, 0x1d4ae,
1300 0x1d515, 0x1d516,
1301 0x1d51d, 0x1d51e,
1302 0x1d53a, 0x1d53b,
1303 0x1d53f, 0x1d540,
1304 0x1d545, 0x1d546,
1305 0x1d547, 0x1d54a,
1306 0x1d551, 0x1d552,
1307 0x1d6a6, 0x1d6a8,
1308 0x1d6db, 0x1d6dc,
1309 0x1d715, 0x1d716,
1310 0x1d74f, 0x1d750,
1311 0x1d789, 0x1d78a,
1312 0x1d7c3, 0x1d7c4,
1313 0x1d7cc, 0x1d800,
1314 0x1da00, 0x1da37,
1315 0x1da3b, 0x1da6d,
1316 0x1da75, 0x1da76,
1317 0x1da84, 0x1da85,
1318 0x1da8c, 0x1e800,
1319 0x1e8d0, 0x1e8d7,
1320 0x1e944, 0x1e94b,
1321 0x1eef0, 0x1eef2,
1322 0x1f000, 0x1f110,
1323 0x1f12f, 0x1f130,
1324 0x1f16a, 0x1f170,
1325 0x1f1ad, 0x1f1e6,
1326 0x1f203, 0x1f210,
1327 0x1f23c, 0x1f240,
1328 0x1f249, 0x1f250,
1329 0x1f252, 0x20000,
1330 0x2a6d7, 0x2a700,
1331 0x2b735, 0x2b740,
1332 0x2b81e, 0x2b820,
1333 0x2cea2, 0x2ceb0,
1334 0x2ebe1, 0x2f800,
1335 0x2fa1e, 0xf0000,
1336 0xffffe, 0x100000,
1337 0x10fffe, 0x10ffff // sentinel
1338 };
1339
1340
1341 // use a binary search with a cache
1342
1343 private transient volatile int stCache = 0;
1344
1345 private boolean isStrongDirectional(char c) {
1346 int cachedIndex = stCache;
1347 if (c < strongTable[cachedIndex]) {
1348 cachedIndex = search(c, strongTable, 0, cachedIndex);
1349 } else if (c >= strongTable[cachedIndex + 1]) {
1350 cachedIndex = search(c, strongTable, cachedIndex + 1,
1351 strongTable.length - cachedIndex - 1);
1352 }
1353 boolean val = (cachedIndex & 0x1) == 1;
1354 stCache = cachedIndex;
|