< prev index next >

src/java.desktop/share/classes/java/awt/font/NumericShaper.java

Print this page


   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;


< prev index next >