Changeset 7369


Ignore:
Timestamp:
Oct 9, 2007, 2:50:27 AM (13 years ago)
Author:
gb
Message:

Treat non STANDARD-CHARs which obviously have "case" as if they had case;
this affects UPPER-CASE-P/LOWER-CASE-P, CHAR-UPCASE/-DOWNCASE, ALPHA-CHAR-P
and BOTH-CASE-P, [N]STRING-UPCASE/DOWNCASE, etc.

This stuff is currently only defined for characters C for which either:

(char-upcase C) is distinct from C, and downcasing the uppercase version
returns C, or

(char-downcase C) is distinct from C, and uppercasing the downcase version
returns C.

Location:
trunk/ccl
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/ccl/level-1/l1-aprims.lisp

    r6432 r7369  
    864864  "Return CHAR converted to lower-case if that is possible."
    865865  (let* ((code (char-code c)))
    866     (if (and (%i>= code (char-code #\A))(%i<= code (char-code #\Z)))
     866    (declare (type (mod #x110000) code))
     867    (if (and (>= code (char-code #\A))(<= code (char-code #\Z)))
    867868      (%code-char (%i+ code #.(- (char-code #\a)(char-code #\A))))
    868     c)))
     869      (or (and (>= code #x80)
     870               (%non-standard-lower-case-equivalent c))
     871          c))))
    869872
    870873
     
    899902   lowercase eszet (U+DF)."
    900903  (let* ((code (char-code c)))
    901     (if (and (%i>= code (char-code #\a))(%i<= code (char-code #\z)))
     904    (declare (type (mod #x110000) code))
     905    (if (and (>= code (char-code #\a))(<= code (char-code #\z)))
    902906      (%code-char (%i- code #.(- (char-code #\a)(char-code #\A))))
    903       c)))
     907      (or (and (>= code #x80) (%non-standard-upper-case-equivalent c))
     908          c))))
    904909
    905910
     
    11321137       (= (uvsize p) target::xmacptr.element-count)))
    11331138
    1134 
    1135 ;True for a-z.
     1139(defstatic *non-standard-lower-to-upper* (make-hash-table :test #'eq)
     1140  "Maps non-STANDARD-CHAR lowercase chars to uppercase equivalents")
     1141
     1142(defstatic *non-standard-upper-to-lower* (make-hash-table :test #'eq)
     1143  "Maps non-STANDARD-CHAR uppercase chars to lowercase equivalents")
     1144
     1145;;; This alist is automatically (and not to cleverly ...) generated.
     1146;;; The (upper . lower) pairs have the property that UPPER is the
     1147;;; value "simple uppercase equivalent" entry for LOWER in the
     1148;;; UnicodeData.txt file and LOWER is the corresponding entry for
     1149;;; UPPER.
     1150(dolist (pair '((#\Latin_Capital_Letter_A_With_Grave . #\Latin_Small_Letter_A_With_Grave)
     1151                (#\Latin_Capital_Letter_A_With_Acute . #\Latin_Small_Letter_A_With_Acute)
     1152                (#\Latin_Capital_Letter_A_With_Circumflex
     1153                 . #\Latin_Small_Letter_A_With_Circumflex)
     1154                (#\Latin_Capital_Letter_A_With_Tilde . #\Latin_Small_Letter_A_With_Tilde)
     1155                (#\Latin_Capital_Letter_A_With_Diaeresis
     1156                 . #\Latin_Small_Letter_A_With_Diaeresis)
     1157                (#\Latin_Capital_Letter_A_With_Ring_Above
     1158                 . #\Latin_Small_Letter_A_With_Ring_Above)
     1159                (#\Latin_Capital_Letter_Ae . #\Latin_Small_Letter_Ae)
     1160                (#\Latin_Capital_Letter_C_With_Cedilla . #\Latin_Small_Letter_C_With_Cedilla)
     1161                (#\Latin_Capital_Letter_E_With_Grave . #\Latin_Small_Letter_E_With_Grave)
     1162                (#\Latin_Capital_Letter_E_With_Acute . #\Latin_Small_Letter_E_With_Acute)
     1163                (#\Latin_Capital_Letter_E_With_Circumflex
     1164                 . #\Latin_Small_Letter_E_With_Circumflex)
     1165                (#\Latin_Capital_Letter_E_With_Diaeresis
     1166                 . #\Latin_Small_Letter_E_With_Diaeresis)
     1167                (#\Latin_Capital_Letter_I_With_Grave . #\Latin_Small_Letter_I_With_Grave)
     1168                (#\Latin_Capital_Letter_I_With_Acute . #\Latin_Small_Letter_I_With_Acute)
     1169                (#\Latin_Capital_Letter_I_With_Circumflex
     1170                 . #\Latin_Small_Letter_I_With_Circumflex)
     1171                (#\Latin_Capital_Letter_I_With_Diaeresis
     1172                 . #\Latin_Small_Letter_I_With_Diaeresis)
     1173                (#\Latin_Capital_Letter_Eth . #\Latin_Small_Letter_Eth)
     1174                (#\Latin_Capital_Letter_N_With_Tilde . #\Latin_Small_Letter_N_With_Tilde)
     1175                (#\Latin_Capital_Letter_O_With_Grave . #\Latin_Small_Letter_O_With_Grave)
     1176                (#\Latin_Capital_Letter_O_With_Acute . #\Latin_Small_Letter_O_With_Acute)
     1177                (#\Latin_Capital_Letter_O_With_Circumflex
     1178                 . #\Latin_Small_Letter_O_With_Circumflex)
     1179                (#\Latin_Capital_Letter_O_With_Tilde . #\Latin_Small_Letter_O_With_Tilde)
     1180                (#\Latin_Capital_Letter_O_With_Diaeresis
     1181                 . #\Latin_Small_Letter_O_With_Diaeresis)
     1182                (#\Latin_Capital_Letter_O_With_Stroke . #\Latin_Small_Letter_O_With_Stroke)
     1183                (#\Latin_Capital_Letter_U_With_Grave . #\Latin_Small_Letter_U_With_Grave)
     1184                (#\Latin_Capital_Letter_U_With_Acute . #\Latin_Small_Letter_U_With_Acute)
     1185                (#\Latin_Capital_Letter_U_With_Circumflex
     1186                 . #\Latin_Small_Letter_U_With_Circumflex)
     1187                (#\Latin_Capital_Letter_U_With_Diaeresis
     1188                 . #\Latin_Small_Letter_U_With_Diaeresis)
     1189                (#\Latin_Capital_Letter_Y_With_Acute . #\Latin_Small_Letter_Y_With_Acute)
     1190                (#\Latin_Capital_Letter_Thorn . #\Latin_Small_Letter_Thorn)
     1191                (#\Latin_Capital_Letter_A_With_Macron . #\Latin_Small_Letter_A_With_Macron)
     1192                (#\Latin_Capital_Letter_A_With_Breve . #\Latin_Small_Letter_A_With_Breve)
     1193                (#\Latin_Capital_Letter_A_With_Ogonek . #\Latin_Small_Letter_A_With_Ogonek)
     1194                (#\Latin_Capital_Letter_C_With_Acute . #\Latin_Small_Letter_C_With_Acute)
     1195                (#\Latin_Capital_Letter_C_With_Circumflex
     1196                 . #\Latin_Small_Letter_C_With_Circumflex)
     1197                (#\Latin_Capital_Letter_C_With_Dot_Above
     1198                 . #\Latin_Small_Letter_C_With_Dot_Above)
     1199                (#\Latin_Capital_Letter_C_With_Caron . #\Latin_Small_Letter_C_With_Caron)
     1200                (#\Latin_Capital_Letter_D_With_Caron . #\Latin_Small_Letter_D_With_Caron)
     1201                (#\Latin_Capital_Letter_D_With_Stroke . #\Latin_Small_Letter_D_With_Stroke)
     1202                (#\Latin_Capital_Letter_E_With_Macron . #\Latin_Small_Letter_E_With_Macron)
     1203                (#\Latin_Capital_Letter_E_With_Breve . #\Latin_Small_Letter_E_With_Breve)
     1204                (#\Latin_Capital_Letter_E_With_Dot_Above
     1205                 . #\Latin_Small_Letter_E_With_Dot_Above)
     1206                (#\Latin_Capital_Letter_E_With_Ogonek . #\Latin_Small_Letter_E_With_Ogonek)
     1207                (#\Latin_Capital_Letter_E_With_Caron . #\Latin_Small_Letter_E_With_Caron)
     1208                (#\Latin_Capital_Letter_G_With_Circumflex
     1209                 . #\Latin_Small_Letter_G_With_Circumflex)
     1210                (#\Latin_Capital_Letter_G_With_Breve . #\Latin_Small_Letter_G_With_Breve)
     1211                (#\Latin_Capital_Letter_G_With_Dot_Above
     1212                 . #\Latin_Small_Letter_G_With_Dot_Above)
     1213                (#\Latin_Capital_Letter_G_With_Cedilla . #\Latin_Small_Letter_G_With_Cedilla)
     1214                (#\Latin_Capital_Letter_H_With_Circumflex
     1215                 . #\Latin_Small_Letter_H_With_Circumflex)
     1216                (#\Latin_Capital_Letter_H_With_Stroke . #\Latin_Small_Letter_H_With_Stroke)
     1217                (#\Latin_Capital_Letter_I_With_Tilde . #\Latin_Small_Letter_I_With_Tilde)
     1218                (#\Latin_Capital_Letter_I_With_Macron . #\Latin_Small_Letter_I_With_Macron)
     1219                (#\Latin_Capital_Letter_I_With_Breve . #\Latin_Small_Letter_I_With_Breve)
     1220                (#\Latin_Capital_Letter_I_With_Ogonek . #\Latin_Small_Letter_I_With_Ogonek)
     1221                (#\Latin_Capital_Ligature_Ij . #\Latin_Small_Ligature_Ij)
     1222                (#\Latin_Capital_Letter_J_With_Circumflex
     1223                 . #\Latin_Small_Letter_J_With_Circumflex)
     1224                (#\Latin_Capital_Letter_K_With_Cedilla . #\Latin_Small_Letter_K_With_Cedilla)
     1225                (#\Latin_Capital_Letter_L_With_Acute . #\Latin_Small_Letter_L_With_Acute)
     1226                (#\Latin_Capital_Letter_L_With_Cedilla . #\Latin_Small_Letter_L_With_Cedilla)
     1227                (#\Latin_Capital_Letter_L_With_Caron . #\Latin_Small_Letter_L_With_Caron)
     1228                (#\Latin_Capital_Letter_L_With_Middle_Dot
     1229                 . #\Latin_Small_Letter_L_With_Middle_Dot)
     1230                (#\Latin_Capital_Letter_L_With_Stroke . #\Latin_Small_Letter_L_With_Stroke)
     1231                (#\Latin_Capital_Letter_N_With_Acute . #\Latin_Small_Letter_N_With_Acute)
     1232                (#\Latin_Capital_Letter_N_With_Cedilla . #\Latin_Small_Letter_N_With_Cedilla)
     1233                (#\Latin_Capital_Letter_N_With_Caron . #\Latin_Small_Letter_N_With_Caron)
     1234                (#\Latin_Capital_Letter_Eng . #\Latin_Small_Letter_Eng)
     1235                (#\Latin_Capital_Letter_O_With_Macron . #\Latin_Small_Letter_O_With_Macron)
     1236                (#\Latin_Capital_Letter_O_With_Breve . #\Latin_Small_Letter_O_With_Breve)
     1237                (#\Latin_Capital_Letter_O_With_Double_Acute
     1238                 . #\Latin_Small_Letter_O_With_Double_Acute)
     1239                (#\Latin_Capital_Ligature_Oe . #\Latin_Small_Ligature_Oe)
     1240                (#\Latin_Capital_Letter_R_With_Acute . #\Latin_Small_Letter_R_With_Acute)
     1241                (#\Latin_Capital_Letter_R_With_Cedilla . #\Latin_Small_Letter_R_With_Cedilla)
     1242                (#\Latin_Capital_Letter_R_With_Caron . #\Latin_Small_Letter_R_With_Caron)
     1243                (#\Latin_Capital_Letter_S_With_Acute . #\Latin_Small_Letter_S_With_Acute)
     1244                (#\Latin_Capital_Letter_S_With_Circumflex
     1245                 . #\Latin_Small_Letter_S_With_Circumflex)
     1246                (#\Latin_Capital_Letter_S_With_Cedilla . #\Latin_Small_Letter_S_With_Cedilla)
     1247                (#\Latin_Capital_Letter_S_With_Caron . #\Latin_Small_Letter_S_With_Caron)
     1248                (#\Latin_Capital_Letter_T_With_Cedilla . #\Latin_Small_Letter_T_With_Cedilla)
     1249                (#\Latin_Capital_Letter_T_With_Caron . #\Latin_Small_Letter_T_With_Caron)
     1250                (#\Latin_Capital_Letter_T_With_Stroke . #\Latin_Small_Letter_T_With_Stroke)
     1251                (#\Latin_Capital_Letter_U_With_Tilde . #\Latin_Small_Letter_U_With_Tilde)
     1252                (#\Latin_Capital_Letter_U_With_Macron . #\Latin_Small_Letter_U_With_Macron)
     1253                (#\Latin_Capital_Letter_U_With_Breve . #\Latin_Small_Letter_U_With_Breve)
     1254                (#\Latin_Capital_Letter_U_With_Ring_Above
     1255                 . #\Latin_Small_Letter_U_With_Ring_Above)
     1256                (#\Latin_Capital_Letter_U_With_Double_Acute
     1257                 . #\Latin_Small_Letter_U_With_Double_Acute)
     1258                (#\Latin_Capital_Letter_U_With_Ogonek . #\Latin_Small_Letter_U_With_Ogonek)
     1259                (#\Latin_Capital_Letter_W_With_Circumflex
     1260                 . #\Latin_Small_Letter_W_With_Circumflex)
     1261                (#\Latin_Capital_Letter_Y_With_Circumflex
     1262                 . #\Latin_Small_Letter_Y_With_Circumflex)
     1263                (#\Latin_Capital_Letter_Y_With_Diaeresis
     1264                 . #\Latin_Small_Letter_Y_With_Diaeresis)
     1265                (#\Latin_Capital_Letter_Z_With_Acute . #\Latin_Small_Letter_Z_With_Acute)
     1266                (#\Latin_Capital_Letter_Z_With_Dot_Above
     1267                 . #\Latin_Small_Letter_Z_With_Dot_Above)
     1268                (#\Latin_Capital_Letter_Z_With_Caron . #\Latin_Small_Letter_Z_With_Caron)
     1269                (#\Latin_Capital_Letter_B_With_Hook . #\Latin_Small_Letter_B_With_Hook)
     1270                (#\Latin_Capital_Letter_B_With_Topbar . #\Latin_Small_Letter_B_With_Topbar)
     1271                (#\Latin_Capital_Letter_Tone_Six . #\Latin_Small_Letter_Tone_Six)
     1272                (#\Latin_Capital_Letter_Open_O . #\Latin_Small_Letter_Open_O)
     1273                (#\Latin_Capital_Letter_C_With_Hook . #\Latin_Small_Letter_C_With_Hook)
     1274                (#\Latin_Capital_Letter_African_D . #\Latin_Small_Letter_D_With_Tail)
     1275                (#\Latin_Capital_Letter_D_With_Hook . #\Latin_Small_Letter_D_With_Hook)
     1276                (#\Latin_Capital_Letter_D_With_Topbar . #\Latin_Small_Letter_D_With_Topbar)
     1277                (#\Latin_Capital_Letter_Reversed_E . #\Latin_Small_Letter_Turned_E)
     1278                (#\Latin_Capital_Letter_Schwa . #\Latin_Small_Letter_Schwa)
     1279                (#\Latin_Capital_Letter_Open_E . #\Latin_Small_Letter_Open_E)
     1280                (#\Latin_Capital_Letter_F_With_Hook . #\Latin_Small_Letter_F_With_Hook)
     1281                (#\Latin_Capital_Letter_G_With_Hook . #\Latin_Small_Letter_G_With_Hook)
     1282                (#\Latin_Capital_Letter_Gamma . #\Latin_Small_Letter_Gamma)
     1283                (#\Latin_Capital_Letter_Iota . #\Latin_Small_Letter_Iota)
     1284                (#\Latin_Capital_Letter_I_With_Stroke . #\Latin_Small_Letter_I_With_Stroke)
     1285                (#\Latin_Capital_Letter_K_With_Hook . #\Latin_Small_Letter_K_With_Hook)
     1286                (#\Latin_Capital_Letter_Turned_M . #\Latin_Small_Letter_Turned_M)
     1287                (#\Latin_Capital_Letter_N_With_Left_Hook
     1288                 . #\Latin_Small_Letter_N_With_Left_Hook)
     1289                (#\Latin_Capital_Letter_O_With_Middle_Tilde . #\Latin_Small_Letter_Barred_O)
     1290                (#\Latin_Capital_Letter_O_With_Horn . #\Latin_Small_Letter_O_With_Horn)
     1291                (#\Latin_Capital_Letter_Oi . #\Latin_Small_Letter_Oi)
     1292                (#\Latin_Capital_Letter_P_With_Hook . #\Latin_Small_Letter_P_With_Hook)
     1293                (#\Latin_Letter_Yr . #\Latin_Letter_Small_Capital_R)
     1294                (#\Latin_Capital_Letter_Tone_Two . #\Latin_Small_Letter_Tone_Two)
     1295                (#\Latin_Capital_Letter_Esh . #\Latin_Small_Letter_Esh)
     1296                (#\Latin_Capital_Letter_T_With_Hook . #\Latin_Small_Letter_T_With_Hook)
     1297                (#\Latin_Capital_Letter_T_With_Retroflex_Hook
     1298                 . #\Latin_Small_Letter_T_With_Retroflex_Hook)
     1299                (#\Latin_Capital_Letter_U_With_Horn . #\Latin_Small_Letter_U_With_Horn)
     1300                (#\Latin_Capital_Letter_Upsilon . #\Latin_Small_Letter_Upsilon)
     1301                (#\Latin_Capital_Letter_V_With_Hook . #\Latin_Small_Letter_V_With_Hook)
     1302                (#\Latin_Capital_Letter_Y_With_Hook . #\Latin_Small_Letter_Y_With_Hook)
     1303                (#\Latin_Capital_Letter_Z_With_Stroke . #\Latin_Small_Letter_Z_With_Stroke)
     1304                (#\Latin_Capital_Letter_Ezh . #\Latin_Small_Letter_Ezh)
     1305                (#\Latin_Capital_Letter_Ezh_Reversed . #\Latin_Small_Letter_Ezh_Reversed)
     1306                (#\Latin_Capital_Letter_Tone_Five . #\Latin_Small_Letter_Tone_Five)
     1307                (#\Latin_Capital_Letter_Dz_With_Caron . #\Latin_Small_Letter_Dz_With_Caron)
     1308                (#\Latin_Capital_Letter_Lj . #\Latin_Small_Letter_Lj)
     1309                (#\Latin_Capital_Letter_Nj . #\Latin_Small_Letter_Nj)
     1310                (#\Latin_Capital_Letter_A_With_Caron . #\Latin_Small_Letter_A_With_Caron)
     1311                (#\Latin_Capital_Letter_I_With_Caron . #\Latin_Small_Letter_I_With_Caron)
     1312                (#\Latin_Capital_Letter_O_With_Caron . #\Latin_Small_Letter_O_With_Caron)
     1313                (#\Latin_Capital_Letter_U_With_Caron . #\Latin_Small_Letter_U_With_Caron)
     1314                (#\Latin_Capital_Letter_U_With_Diaeresis_And_Macron
     1315                 . #\Latin_Small_Letter_U_With_Diaeresis_And_Macron)
     1316                (#\Latin_Capital_Letter_U_With_Diaeresis_And_Acute
     1317                 . #\Latin_Small_Letter_U_With_Diaeresis_And_Acute)
     1318                (#\Latin_Capital_Letter_U_With_Diaeresis_And_Caron
     1319                 . #\Latin_Small_Letter_U_With_Diaeresis_And_Caron)
     1320                (#\Latin_Capital_Letter_U_With_Diaeresis_And_Grave
     1321                 . #\Latin_Small_Letter_U_With_Diaeresis_And_Grave)
     1322                (#\Latin_Capital_Letter_A_With_Diaeresis_And_Macron
     1323                 . #\Latin_Small_Letter_A_With_Diaeresis_And_Macron)
     1324                (#\Latin_Capital_Letter_A_With_Dot_Above_And_Macron
     1325                 . #\Latin_Small_Letter_A_With_Dot_Above_And_Macron)
     1326                (#\Latin_Capital_Letter_Ae_With_Macron . #\Latin_Small_Letter_Ae_With_Macron)
     1327                (#\Latin_Capital_Letter_G_With_Stroke . #\Latin_Small_Letter_G_With_Stroke)
     1328                (#\Latin_Capital_Letter_G_With_Caron . #\Latin_Small_Letter_G_With_Caron)
     1329                (#\Latin_Capital_Letter_K_With_Caron . #\Latin_Small_Letter_K_With_Caron)
     1330                (#\Latin_Capital_Letter_O_With_Ogonek . #\Latin_Small_Letter_O_With_Ogonek)
     1331                (#\Latin_Capital_Letter_O_With_Ogonek_And_Macron
     1332                 . #\Latin_Small_Letter_O_With_Ogonek_And_Macron)
     1333                (#\Latin_Capital_Letter_Ezh_With_Caron . #\Latin_Small_Letter_Ezh_With_Caron)
     1334                (#\Latin_Capital_Letter_Dz . #\Latin_Small_Letter_Dz)
     1335                (#\Latin_Capital_Letter_G_With_Acute . #\Latin_Small_Letter_G_With_Acute)
     1336                (#\Latin_Capital_Letter_Hwair . #\Latin_Small_Letter_Hv)
     1337                (#\Latin_Capital_Letter_Wynn . #\Latin_Letter_Wynn)
     1338                (#\Latin_Capital_Letter_N_With_Grave . #\Latin_Small_Letter_N_With_Grave)
     1339                (#\Latin_Capital_Letter_A_With_Ring_Above_And_Acute
     1340                 . #\Latin_Small_Letter_A_With_Ring_Above_And_Acute)
     1341                (#\Latin_Capital_Letter_Ae_With_Acute . #\Latin_Small_Letter_Ae_With_Acute)
     1342                (#\Latin_Capital_Letter_O_With_Stroke_And_Acute
     1343                 . #\Latin_Small_Letter_O_With_Stroke_And_Acute)
     1344                (#\Latin_Capital_Letter_A_With_Double_Grave
     1345                 . #\Latin_Small_Letter_A_With_Double_Grave)
     1346                (#\Latin_Capital_Letter_A_With_Inverted_Breve
     1347                 . #\Latin_Small_Letter_A_With_Inverted_Breve)
     1348                (#\Latin_Capital_Letter_E_With_Double_Grave
     1349                 . #\Latin_Small_Letter_E_With_Double_Grave)
     1350                (#\Latin_Capital_Letter_E_With_Inverted_Breve
     1351                 . #\Latin_Small_Letter_E_With_Inverted_Breve)
     1352                (#\Latin_Capital_Letter_I_With_Double_Grave
     1353                 . #\Latin_Small_Letter_I_With_Double_Grave)
     1354                (#\Latin_Capital_Letter_I_With_Inverted_Breve
     1355                 . #\Latin_Small_Letter_I_With_Inverted_Breve)
     1356                (#\Latin_Capital_Letter_O_With_Double_Grave
     1357                 . #\Latin_Small_Letter_O_With_Double_Grave)
     1358                (#\Latin_Capital_Letter_O_With_Inverted_Breve
     1359                 . #\Latin_Small_Letter_O_With_Inverted_Breve)
     1360                (#\Latin_Capital_Letter_R_With_Double_Grave
     1361                 . #\Latin_Small_Letter_R_With_Double_Grave)
     1362                (#\Latin_Capital_Letter_R_With_Inverted_Breve
     1363                 . #\Latin_Small_Letter_R_With_Inverted_Breve)
     1364                (#\Latin_Capital_Letter_U_With_Double_Grave
     1365                 . #\Latin_Small_Letter_U_With_Double_Grave)
     1366                (#\Latin_Capital_Letter_U_With_Inverted_Breve
     1367                 . #\Latin_Small_Letter_U_With_Inverted_Breve)
     1368                (#\Latin_Capital_Letter_S_With_Comma_Below
     1369                 . #\Latin_Small_Letter_S_With_Comma_Below)
     1370                (#\Latin_Capital_Letter_T_With_Comma_Below
     1371                 . #\Latin_Small_Letter_T_With_Comma_Below)
     1372                (#\Latin_Capital_Letter_Yogh . #\Latin_Small_Letter_Yogh)
     1373                (#\Latin_Capital_Letter_H_With_Caron . #\Latin_Small_Letter_H_With_Caron)
     1374                (#\Latin_Capital_Letter_N_With_Long_Right_Leg
     1375                 . #\Latin_Small_Letter_N_With_Long_Right_Leg)
     1376                (#\Latin_Capital_Letter_Ou . #\Latin_Small_Letter_Ou)
     1377                (#\Latin_Capital_Letter_Z_With_Hook . #\Latin_Small_Letter_Z_With_Hook)
     1378                (#\Latin_Capital_Letter_A_With_Dot_Above
     1379                 . #\Latin_Small_Letter_A_With_Dot_Above)
     1380                (#\Latin_Capital_Letter_E_With_Cedilla . #\Latin_Small_Letter_E_With_Cedilla)
     1381                (#\Latin_Capital_Letter_O_With_Diaeresis_And_Macron
     1382                 . #\Latin_Small_Letter_O_With_Diaeresis_And_Macron)
     1383                (#\Latin_Capital_Letter_O_With_Tilde_And_Macron
     1384                 . #\Latin_Small_Letter_O_With_Tilde_And_Macron)
     1385                (#\Latin_Capital_Letter_O_With_Dot_Above
     1386                 . #\Latin_Small_Letter_O_With_Dot_Above)
     1387                (#\Latin_Capital_Letter_O_With_Dot_Above_And_Macron
     1388                 . #\Latin_Small_Letter_O_With_Dot_Above_And_Macron)
     1389                (#\Latin_Capital_Letter_Y_With_Macron . #\Latin_Small_Letter_Y_With_Macron)
     1390                (#\Latin_Capital_Letter_A_With_Stroke . #\U+2C65)
     1391                (#\Latin_Capital_Letter_C_With_Stroke . #\Latin_Small_Letter_C_With_Stroke)
     1392                (#\Latin_Capital_Letter_L_With_Bar . #\Latin_Small_Letter_L_With_Bar)
     1393                (#\Latin_Capital_Letter_T_With_Diagonal_Stroke . #\U+2C66)
     1394                (#\Latin_Capital_Letter_Glottal_Stop . #\Latin_Small_Letter_Glottal_Stop)
     1395                (#\Latin_Capital_Letter_B_With_Stroke . #\Latin_Small_Letter_B_With_Stroke)
     1396                (#\Latin_Capital_Letter_U_Bar . #\Latin_Small_Letter_U_Bar)
     1397                (#\Latin_Capital_Letter_Turned_V . #\Latin_Small_Letter_Turned_V)
     1398                (#\Latin_Capital_Letter_E_With_Stroke . #\Latin_Small_Letter_E_With_Stroke)
     1399                (#\Latin_Capital_Letter_J_With_Stroke . #\Latin_Small_Letter_J_With_Stroke)
     1400                (#\Latin_Capital_Letter_Small_Q_With_Hook_Tail
     1401                 . #\Latin_Small_Letter_Q_With_Hook_Tail)
     1402                (#\Latin_Capital_Letter_R_With_Stroke . #\Latin_Small_Letter_R_With_Stroke)
     1403                (#\Latin_Capital_Letter_Y_With_Stroke . #\Latin_Small_Letter_Y_With_Stroke)
     1404                (#\Greek_Capital_Letter_Alpha_With_Tonos
     1405                 . #\Greek_Small_Letter_Alpha_With_Tonos)
     1406                (#\Greek_Capital_Letter_Epsilon_With_Tonos
     1407                 . #\Greek_Small_Letter_Epsilon_With_Tonos)
     1408                (#\Greek_Capital_Letter_Eta_With_Tonos . #\Greek_Small_Letter_Eta_With_Tonos)
     1409                (#\Greek_Capital_Letter_Iota_With_Tonos
     1410                 . #\Greek_Small_Letter_Iota_With_Tonos)
     1411                (#\Greek_Capital_Letter_Omicron_With_Tonos
     1412                 . #\Greek_Small_Letter_Omicron_With_Tonos)
     1413                (#\Greek_Capital_Letter_Upsilon_With_Tonos
     1414                 . #\Greek_Small_Letter_Upsilon_With_Tonos)
     1415                (#\Greek_Capital_Letter_Omega_With_Tonos
     1416                 . #\Greek_Small_Letter_Omega_With_Tonos)
     1417                (#\Greek_Capital_Letter_Alpha . #\Greek_Small_Letter_Alpha)
     1418                (#\Greek_Capital_Letter_Beta . #\Greek_Small_Letter_Beta)
     1419                (#\Greek_Capital_Letter_Gamma . #\Greek_Small_Letter_Gamma)
     1420                (#\Greek_Capital_Letter_Delta . #\Greek_Small_Letter_Delta)
     1421                (#\Greek_Capital_Letter_Epsilon . #\Greek_Small_Letter_Epsilon)
     1422                (#\Greek_Capital_Letter_Zeta . #\Greek_Small_Letter_Zeta)
     1423                (#\Greek_Capital_Letter_Eta . #\Greek_Small_Letter_Eta)
     1424                (#\Greek_Capital_Letter_Theta . #\Greek_Small_Letter_Theta)
     1425                (#\Greek_Capital_Letter_Iota . #\Greek_Small_Letter_Iota)
     1426                (#\Greek_Capital_Letter_Kappa . #\Greek_Small_Letter_Kappa)
     1427                (#\Greek_Capital_Letter_Lamda . #\Greek_Small_Letter_Lamda)
     1428                (#\Greek_Capital_Letter_Mu . #\Greek_Small_Letter_Mu)
     1429                (#\Greek_Capital_Letter_Nu . #\Greek_Small_Letter_Nu)
     1430                (#\Greek_Capital_Letter_Xi . #\Greek_Small_Letter_Xi)
     1431                (#\Greek_Capital_Letter_Omicron . #\Greek_Small_Letter_Omicron)
     1432                (#\Greek_Capital_Letter_Pi . #\Greek_Small_Letter_Pi)
     1433                (#\Greek_Capital_Letter_Rho . #\Greek_Small_Letter_Rho)
     1434                (#\Greek_Capital_Letter_Sigma . #\Greek_Small_Letter_Sigma)
     1435                (#\Greek_Capital_Letter_Tau . #\Greek_Small_Letter_Tau)
     1436                (#\Greek_Capital_Letter_Upsilon . #\Greek_Small_Letter_Upsilon)
     1437                (#\Greek_Capital_Letter_Phi . #\Greek_Small_Letter_Phi)
     1438                (#\Greek_Capital_Letter_Chi . #\Greek_Small_Letter_Chi)
     1439                (#\Greek_Capital_Letter_Psi . #\Greek_Small_Letter_Psi)
     1440                (#\Greek_Capital_Letter_Omega . #\Greek_Small_Letter_Omega)
     1441                (#\Greek_Capital_Letter_Iota_With_Dialytika
     1442                 . #\Greek_Small_Letter_Iota_With_Dialytika)
     1443                (#\Greek_Capital_Letter_Upsilon_With_Dialytika
     1444                 . #\Greek_Small_Letter_Upsilon_With_Dialytika)
     1445                (#\Greek_Letter_Archaic_Koppa . #\Greek_Small_Letter_Archaic_Koppa)
     1446                (#\Greek_Letter_Stigma . #\Greek_Small_Letter_Stigma)
     1447                (#\Greek_Letter_Digamma . #\Greek_Small_Letter_Digamma)
     1448                (#\Greek_Letter_Koppa . #\Greek_Small_Letter_Koppa)
     1449                (#\Greek_Letter_Sampi . #\Greek_Small_Letter_Sampi)
     1450                (#\Coptic_Capital_Letter_Shei . #\Coptic_Small_Letter_Shei)
     1451                (#\Coptic_Capital_Letter_Fei . #\Coptic_Small_Letter_Fei)
     1452                (#\Coptic_Capital_Letter_Khei . #\Coptic_Small_Letter_Khei)
     1453                (#\Coptic_Capital_Letter_Hori . #\Coptic_Small_Letter_Hori)
     1454                (#\Coptic_Capital_Letter_Gangia . #\Coptic_Small_Letter_Gangia)
     1455                (#\Coptic_Capital_Letter_Shima . #\Coptic_Small_Letter_Shima)
     1456                (#\Coptic_Capital_Letter_Dei . #\Coptic_Small_Letter_Dei)
     1457                (#\Greek_Capital_Letter_Sho . #\Greek_Small_Letter_Sho)
     1458                (#\Greek_Capital_Lunate_Sigma_Symbol . #\Greek_Lunate_Sigma_Symbol)
     1459                (#\Greek_Capital_Letter_San . #\Greek_Small_Letter_San)
     1460                (#\Greek_Capital_Reversed_Lunate_Sigma_Symbol
     1461                 . #\Greek_Small_Reversed_Lunate_Sigma_Symbol)
     1462                (#\Greek_Capital_Dotted_Lunate_Sigma_Symbol
     1463                 . #\Greek_Small_Dotted_Lunate_Sigma_Symbol)
     1464                (#\Greek_Capital_Reversed_Dotted_Lunate_Sigma_Symbol
     1465                 . #\Greek_Small_Reversed_Dotted_Lunate_Sigma_Symbol)
     1466                (#\Cyrillic_Capital_Letter_Ie_With_Grave
     1467                 . #\Cyrillic_Small_Letter_Ie_With_Grave)
     1468                (#\Cyrillic_Capital_Letter_Io . #\Cyrillic_Small_Letter_Io)
     1469                (#\Cyrillic_Capital_Letter_Dje . #\Cyrillic_Small_Letter_Dje)
     1470                (#\Cyrillic_Capital_Letter_Gje . #\Cyrillic_Small_Letter_Gje)
     1471                (#\Cyrillic_Capital_Letter_Ukrainian_Ie
     1472                 . #\Cyrillic_Small_Letter_Ukrainian_Ie)
     1473                (#\Cyrillic_Capital_Letter_Dze . #\Cyrillic_Small_Letter_Dze)
     1474                (#\Cyrillic_Capital_Letter_Byelorussian-Ukrainian_I
     1475                 . #\Cyrillic_Small_Letter_Byelorussian-Ukrainian_I)
     1476                (#\Cyrillic_Capital_Letter_Yi . #\Cyrillic_Small_Letter_Yi)
     1477                (#\Cyrillic_Capital_Letter_Je . #\Cyrillic_Small_Letter_Je)
     1478                (#\Cyrillic_Capital_Letter_Lje . #\Cyrillic_Small_Letter_Lje)
     1479                (#\Cyrillic_Capital_Letter_Nje . #\Cyrillic_Small_Letter_Nje)
     1480                (#\Cyrillic_Capital_Letter_Tshe . #\Cyrillic_Small_Letter_Tshe)
     1481                (#\Cyrillic_Capital_Letter_Kje . #\Cyrillic_Small_Letter_Kje)
     1482                (#\Cyrillic_Capital_Letter_I_With_Grave
     1483                 . #\Cyrillic_Small_Letter_I_With_Grave)
     1484                (#\Cyrillic_Capital_Letter_Short_U . #\Cyrillic_Small_Letter_Short_U)
     1485                (#\Cyrillic_Capital_Letter_Dzhe . #\Cyrillic_Small_Letter_Dzhe)
     1486                (#\Cyrillic_Capital_Letter_A . #\Cyrillic_Small_Letter_A)
     1487                (#\Cyrillic_Capital_Letter_Be . #\Cyrillic_Small_Letter_Be)
     1488                (#\Cyrillic_Capital_Letter_Ve . #\Cyrillic_Small_Letter_Ve)
     1489                (#\Cyrillic_Capital_Letter_Ghe . #\Cyrillic_Small_Letter_Ghe)
     1490                (#\Cyrillic_Capital_Letter_De . #\Cyrillic_Small_Letter_De)
     1491                (#\Cyrillic_Capital_Letter_Ie . #\Cyrillic_Small_Letter_Ie)
     1492                (#\Cyrillic_Capital_Letter_Zhe . #\Cyrillic_Small_Letter_Zhe)
     1493                (#\Cyrillic_Capital_Letter_Ze . #\Cyrillic_Small_Letter_Ze)
     1494                (#\Cyrillic_Capital_Letter_I . #\Cyrillic_Small_Letter_I)
     1495                (#\Cyrillic_Capital_Letter_Short_I . #\Cyrillic_Small_Letter_Short_I)
     1496                (#\Cyrillic_Capital_Letter_Ka . #\Cyrillic_Small_Letter_Ka)
     1497                (#\Cyrillic_Capital_Letter_El . #\Cyrillic_Small_Letter_El)
     1498                (#\Cyrillic_Capital_Letter_Em . #\Cyrillic_Small_Letter_Em)
     1499                (#\Cyrillic_Capital_Letter_En . #\Cyrillic_Small_Letter_En)
     1500                (#\Cyrillic_Capital_Letter_O . #\Cyrillic_Small_Letter_O)
     1501                (#\Cyrillic_Capital_Letter_Pe . #\Cyrillic_Small_Letter_Pe)
     1502                (#\Cyrillic_Capital_Letter_Er . #\Cyrillic_Small_Letter_Er)
     1503                (#\Cyrillic_Capital_Letter_Es . #\Cyrillic_Small_Letter_Es)
     1504                (#\Cyrillic_Capital_Letter_Te . #\Cyrillic_Small_Letter_Te)
     1505                (#\Cyrillic_Capital_Letter_U . #\Cyrillic_Small_Letter_U)
     1506                (#\Cyrillic_Capital_Letter_Ef . #\Cyrillic_Small_Letter_Ef)
     1507                (#\Cyrillic_Capital_Letter_Ha . #\Cyrillic_Small_Letter_Ha)
     1508                (#\Cyrillic_Capital_Letter_Tse . #\Cyrillic_Small_Letter_Tse)
     1509                (#\Cyrillic_Capital_Letter_Che . #\Cyrillic_Small_Letter_Che)
     1510                (#\Cyrillic_Capital_Letter_Sha . #\Cyrillic_Small_Letter_Sha)
     1511                (#\Cyrillic_Capital_Letter_Shcha . #\Cyrillic_Small_Letter_Shcha)
     1512                (#\Cyrillic_Capital_Letter_Hard_Sign . #\Cyrillic_Small_Letter_Hard_Sign)
     1513                (#\Cyrillic_Capital_Letter_Yeru . #\Cyrillic_Small_Letter_Yeru)
     1514                (#\Cyrillic_Capital_Letter_Soft_Sign . #\Cyrillic_Small_Letter_Soft_Sign)
     1515                (#\Cyrillic_Capital_Letter_E . #\Cyrillic_Small_Letter_E)
     1516                (#\Cyrillic_Capital_Letter_Yu . #\Cyrillic_Small_Letter_Yu)
     1517                (#\Cyrillic_Capital_Letter_Ya . #\Cyrillic_Small_Letter_Ya)
     1518                (#\Cyrillic_Capital_Letter_Omega . #\Cyrillic_Small_Letter_Omega)
     1519                (#\Cyrillic_Capital_Letter_Yat . #\Cyrillic_Small_Letter_Yat)
     1520                (#\Cyrillic_Capital_Letter_Iotified_E . #\Cyrillic_Small_Letter_Iotified_E)
     1521                (#\Cyrillic_Capital_Letter_Little_Yus . #\Cyrillic_Small_Letter_Little_Yus)
     1522                (#\Cyrillic_Capital_Letter_Iotified_Little_Yus
     1523                 . #\Cyrillic_Small_Letter_Iotified_Little_Yus)
     1524                (#\Cyrillic_Capital_Letter_Big_Yus . #\Cyrillic_Small_Letter_Big_Yus)
     1525                (#\Cyrillic_Capital_Letter_Iotified_Big_Yus
     1526                 . #\Cyrillic_Small_Letter_Iotified_Big_Yus)
     1527                (#\Cyrillic_Capital_Letter_Ksi . #\Cyrillic_Small_Letter_Ksi)
     1528                (#\Cyrillic_Capital_Letter_Psi . #\Cyrillic_Small_Letter_Psi)
     1529                (#\Cyrillic_Capital_Letter_Fita . #\Cyrillic_Small_Letter_Fita)
     1530                (#\Cyrillic_Capital_Letter_Izhitsa . #\Cyrillic_Small_Letter_Izhitsa)
     1531                (#\Cyrillic_Capital_Letter_Izhitsa_With_Double_Grave_Accent
     1532                 . #\Cyrillic_Small_Letter_Izhitsa_With_Double_Grave_Accent)
     1533                (#\Cyrillic_Capital_Letter_Uk . #\Cyrillic_Small_Letter_Uk)
     1534                (#\Cyrillic_Capital_Letter_Round_Omega . #\Cyrillic_Small_Letter_Round_Omega)
     1535                (#\Cyrillic_Capital_Letter_Omega_With_Titlo
     1536                 . #\Cyrillic_Small_Letter_Omega_With_Titlo)
     1537                (#\Cyrillic_Capital_Letter_Ot . #\Cyrillic_Small_Letter_Ot)
     1538                (#\Cyrillic_Capital_Letter_Koppa . #\Cyrillic_Small_Letter_Koppa)
     1539                (#\Cyrillic_Capital_Letter_Short_I_With_Tail
     1540                 . #\Cyrillic_Small_Letter_Short_I_With_Tail)
     1541                (#\Cyrillic_Capital_Letter_Semisoft_Sign
     1542                 . #\Cyrillic_Small_Letter_Semisoft_Sign)
     1543                (#\Cyrillic_Capital_Letter_Er_With_Tick
     1544                 . #\Cyrillic_Small_Letter_Er_With_Tick)
     1545                (#\Cyrillic_Capital_Letter_Ghe_With_Upturn
     1546                 . #\Cyrillic_Small_Letter_Ghe_With_Upturn)
     1547                (#\Cyrillic_Capital_Letter_Ghe_With_Stroke
     1548                 . #\Cyrillic_Small_Letter_Ghe_With_Stroke)
     1549                (#\Cyrillic_Capital_Letter_Ghe_With_Middle_Hook
     1550                 . #\Cyrillic_Small_Letter_Ghe_With_Middle_Hook)
     1551                (#\Cyrillic_Capital_Letter_Zhe_With_Descender
     1552                 . #\Cyrillic_Small_Letter_Zhe_With_Descender)
     1553                (#\Cyrillic_Capital_Letter_Ze_With_Descender
     1554                 . #\Cyrillic_Small_Letter_Ze_With_Descender)
     1555                (#\Cyrillic_Capital_Letter_Ka_With_Descender
     1556                 . #\Cyrillic_Small_Letter_Ka_With_Descender)
     1557                (#\Cyrillic_Capital_Letter_Ka_With_Vertical_Stroke
     1558                 . #\Cyrillic_Small_Letter_Ka_With_Vertical_Stroke)
     1559                (#\Cyrillic_Capital_Letter_Ka_With_Stroke
     1560                 . #\Cyrillic_Small_Letter_Ka_With_Stroke)
     1561                (#\Cyrillic_Capital_Letter_Bashkir_Ka . #\Cyrillic_Small_Letter_Bashkir_Ka)
     1562                (#\Cyrillic_Capital_Letter_En_With_Descender
     1563                 . #\Cyrillic_Small_Letter_En_With_Descender)
     1564                (#\Cyrillic_Capital_Ligature_En_Ghe . #\Cyrillic_Small_Ligature_En_Ghe)
     1565                (#\Cyrillic_Capital_Letter_Pe_With_Middle_Hook
     1566                 . #\Cyrillic_Small_Letter_Pe_With_Middle_Hook)
     1567                (#\Cyrillic_Capital_Letter_Abkhasian_Ha
     1568                 . #\Cyrillic_Small_Letter_Abkhasian_Ha)
     1569                (#\Cyrillic_Capital_Letter_Es_With_Descender
     1570                 . #\Cyrillic_Small_Letter_Es_With_Descender)
     1571                (#\Cyrillic_Capital_Letter_Te_With_Descender
     1572                 . #\Cyrillic_Small_Letter_Te_With_Descender)
     1573                (#\Cyrillic_Capital_Letter_Straight_U . #\Cyrillic_Small_Letter_Straight_U)
     1574                (#\Cyrillic_Capital_Letter_Straight_U_With_Stroke
     1575                 . #\Cyrillic_Small_Letter_Straight_U_With_Stroke)
     1576                (#\Cyrillic_Capital_Letter_Ha_With_Descender
     1577                 . #\Cyrillic_Small_Letter_Ha_With_Descender)
     1578                (#\Cyrillic_Capital_Ligature_Te_Tse . #\Cyrillic_Small_Ligature_Te_Tse)
     1579                (#\Cyrillic_Capital_Letter_Che_With_Descender
     1580                 . #\Cyrillic_Small_Letter_Che_With_Descender)
     1581                (#\Cyrillic_Capital_Letter_Che_With_Vertical_Stroke
     1582                 . #\Cyrillic_Small_Letter_Che_With_Vertical_Stroke)
     1583                (#\Cyrillic_Capital_Letter_Shha . #\Cyrillic_Small_Letter_Shha)
     1584                (#\Cyrillic_Capital_Letter_Abkhasian_Che
     1585                 . #\Cyrillic_Small_Letter_Abkhasian_Che)
     1586                (#\Cyrillic_Capital_Letter_Abkhasian_Che_With_Descender
     1587                 . #\Cyrillic_Small_Letter_Abkhasian_Che_With_Descender)
     1588                (#\Cyrillic_Letter_Palochka . #\Cyrillic_Small_Letter_Palochka)
     1589                (#\Cyrillic_Capital_Letter_Zhe_With_Breve
     1590                 . #\Cyrillic_Small_Letter_Zhe_With_Breve)
     1591                (#\Cyrillic_Capital_Letter_Ka_With_Hook
     1592                 . #\Cyrillic_Small_Letter_Ka_With_Hook)
     1593                (#\Cyrillic_Capital_Letter_El_With_Tail
     1594                 . #\Cyrillic_Small_Letter_El_With_Tail)
     1595                (#\Cyrillic_Capital_Letter_En_With_Hook
     1596                 . #\Cyrillic_Small_Letter_En_With_Hook)
     1597                (#\Cyrillic_Capital_Letter_En_With_Tail
     1598                 . #\Cyrillic_Small_Letter_En_With_Tail)
     1599                (#\Cyrillic_Capital_Letter_Khakassian_Che
     1600                 . #\Cyrillic_Small_Letter_Khakassian_Che)
     1601                (#\Cyrillic_Capital_Letter_Em_With_Tail
     1602                 . #\Cyrillic_Small_Letter_Em_With_Tail)
     1603                (#\Cyrillic_Capital_Letter_A_With_Breve
     1604                 . #\Cyrillic_Small_Letter_A_With_Breve)
     1605                (#\Cyrillic_Capital_Letter_A_With_Diaeresis
     1606                 . #\Cyrillic_Small_Letter_A_With_Diaeresis)
     1607                (#\Cyrillic_Capital_Ligature_A_Ie . #\Cyrillic_Small_Ligature_A_Ie)
     1608                (#\Cyrillic_Capital_Letter_Ie_With_Breve
     1609                 . #\Cyrillic_Small_Letter_Ie_With_Breve)
     1610                (#\Cyrillic_Capital_Letter_Schwa . #\Cyrillic_Small_Letter_Schwa)
     1611                (#\Cyrillic_Capital_Letter_Schwa_With_Diaeresis
     1612                 . #\Cyrillic_Small_Letter_Schwa_With_Diaeresis)
     1613                (#\Cyrillic_Capital_Letter_Zhe_With_Diaeresis
     1614                 . #\Cyrillic_Small_Letter_Zhe_With_Diaeresis)
     1615                (#\Cyrillic_Capital_Letter_Ze_With_Diaeresis
     1616                 . #\Cyrillic_Small_Letter_Ze_With_Diaeresis)
     1617                (#\Cyrillic_Capital_Letter_Abkhasian_Dze
     1618                 . #\Cyrillic_Small_Letter_Abkhasian_Dze)
     1619                (#\Cyrillic_Capital_Letter_I_With_Macron
     1620                 . #\Cyrillic_Small_Letter_I_With_Macron)
     1621                (#\Cyrillic_Capital_Letter_I_With_Diaeresis
     1622                 . #\Cyrillic_Small_Letter_I_With_Diaeresis)
     1623                (#\Cyrillic_Capital_Letter_O_With_Diaeresis
     1624                 . #\Cyrillic_Small_Letter_O_With_Diaeresis)
     1625                (#\Cyrillic_Capital_Letter_Barred_O . #\Cyrillic_Small_Letter_Barred_O)
     1626                (#\Cyrillic_Capital_Letter_Barred_O_With_Diaeresis
     1627                 . #\Cyrillic_Small_Letter_Barred_O_With_Diaeresis)
     1628                (#\Cyrillic_Capital_Letter_E_With_Diaeresis
     1629                 . #\Cyrillic_Small_Letter_E_With_Diaeresis)
     1630                (#\Cyrillic_Capital_Letter_U_With_Macron
     1631                 . #\Cyrillic_Small_Letter_U_With_Macron)
     1632                (#\Cyrillic_Capital_Letter_U_With_Diaeresis
     1633                 . #\Cyrillic_Small_Letter_U_With_Diaeresis)
     1634                (#\Cyrillic_Capital_Letter_U_With_Double_Acute
     1635                 . #\Cyrillic_Small_Letter_U_With_Double_Acute)
     1636                (#\Cyrillic_Capital_Letter_Che_With_Diaeresis
     1637                 . #\Cyrillic_Small_Letter_Che_With_Diaeresis)
     1638                (#\Cyrillic_Capital_Letter_Ghe_With_Descender
     1639                 . #\Cyrillic_Small_Letter_Ghe_With_Descender)
     1640                (#\Cyrillic_Capital_Letter_Yeru_With_Diaeresis
     1641                 . #\Cyrillic_Small_Letter_Yeru_With_Diaeresis)
     1642                (#\Cyrillic_Capital_Letter_Ghe_With_Stroke_And_Hook
     1643                 . #\Cyrillic_Small_Letter_Ghe_With_Stroke_And_Hook)
     1644                (#\Cyrillic_Capital_Letter_Ha_With_Hook
     1645                 . #\Cyrillic_Small_Letter_Ha_With_Hook)
     1646                (#\Cyrillic_Capital_Letter_Ha_With_Stroke
     1647                 . #\Cyrillic_Small_Letter_Ha_With_Stroke)
     1648                (#\Cyrillic_Capital_Letter_Komi_De . #\Cyrillic_Small_Letter_Komi_De)
     1649                (#\Cyrillic_Capital_Letter_Komi_Dje . #\Cyrillic_Small_Letter_Komi_Dje)
     1650                (#\Cyrillic_Capital_Letter_Komi_Zje . #\Cyrillic_Small_Letter_Komi_Zje)
     1651                (#\Cyrillic_Capital_Letter_Komi_Dzje . #\Cyrillic_Small_Letter_Komi_Dzje)
     1652                (#\Cyrillic_Capital_Letter_Komi_Lje . #\Cyrillic_Small_Letter_Komi_Lje)
     1653                (#\Cyrillic_Capital_Letter_Komi_Nje . #\Cyrillic_Small_Letter_Komi_Nje)
     1654                (#\Cyrillic_Capital_Letter_Komi_Sje . #\Cyrillic_Small_Letter_Komi_Sje)
     1655                (#\Cyrillic_Capital_Letter_Komi_Tje . #\Cyrillic_Small_Letter_Komi_Tje)
     1656                (#\Cyrillic_Capital_Letter_Reversed_Ze . #\Cyrillic_Small_Letter_Reversed_Ze)
     1657                (#\Cyrillic_Capital_Letter_El_With_Hook
     1658                 . #\Cyrillic_Small_Letter_El_With_Hook)
     1659                (#\Armenian_Capital_Letter_Ayb . #\Armenian_Small_Letter_Ayb)
     1660                (#\Armenian_Capital_Letter_Ben . #\Armenian_Small_Letter_Ben)
     1661                (#\Armenian_Capital_Letter_Gim . #\Armenian_Small_Letter_Gim)
     1662                (#\Armenian_Capital_Letter_Da . #\Armenian_Small_Letter_Da)
     1663                (#\Armenian_Capital_Letter_Ech . #\Armenian_Small_Letter_Ech)
     1664                (#\Armenian_Capital_Letter_Za . #\Armenian_Small_Letter_Za)
     1665                (#\Armenian_Capital_Letter_Eh . #\Armenian_Small_Letter_Eh)
     1666                (#\Armenian_Capital_Letter_Et . #\Armenian_Small_Letter_Et)
     1667                (#\Armenian_Capital_Letter_To . #\Armenian_Small_Letter_To)
     1668                (#\Armenian_Capital_Letter_Zhe . #\Armenian_Small_Letter_Zhe)
     1669                (#\Armenian_Capital_Letter_Ini . #\Armenian_Small_Letter_Ini)
     1670                (#\Armenian_Capital_Letter_Liwn . #\Armenian_Small_Letter_Liwn)
     1671                (#\Armenian_Capital_Letter_Xeh . #\Armenian_Small_Letter_Xeh)
     1672                (#\Armenian_Capital_Letter_Ca . #\Armenian_Small_Letter_Ca)
     1673                (#\Armenian_Capital_Letter_Ken . #\Armenian_Small_Letter_Ken)
     1674                (#\Armenian_Capital_Letter_Ho . #\Armenian_Small_Letter_Ho)
     1675                (#\Armenian_Capital_Letter_Ja . #\Armenian_Small_Letter_Ja)
     1676                (#\Armenian_Capital_Letter_Ghad . #\Armenian_Small_Letter_Ghad)
     1677                (#\Armenian_Capital_Letter_Cheh . #\Armenian_Small_Letter_Cheh)
     1678                (#\Armenian_Capital_Letter_Men . #\Armenian_Small_Letter_Men)
     1679                (#\Armenian_Capital_Letter_Yi . #\Armenian_Small_Letter_Yi)
     1680                (#\Armenian_Capital_Letter_Now . #\Armenian_Small_Letter_Now)
     1681                (#\Armenian_Capital_Letter_Sha . #\Armenian_Small_Letter_Sha)
     1682                (#\Armenian_Capital_Letter_Vo . #\Armenian_Small_Letter_Vo)
     1683                (#\Armenian_Capital_Letter_Cha . #\Armenian_Small_Letter_Cha)
     1684                (#\Armenian_Capital_Letter_Peh . #\Armenian_Small_Letter_Peh)
     1685                (#\Armenian_Capital_Letter_Jheh . #\Armenian_Small_Letter_Jheh)
     1686                (#\Armenian_Capital_Letter_Ra . #\Armenian_Small_Letter_Ra)
     1687                (#\Armenian_Capital_Letter_Seh . #\Armenian_Small_Letter_Seh)
     1688                (#\Armenian_Capital_Letter_Vew . #\Armenian_Small_Letter_Vew)
     1689                (#\Armenian_Capital_Letter_Tiwn . #\Armenian_Small_Letter_Tiwn)
     1690                (#\Armenian_Capital_Letter_Reh . #\Armenian_Small_Letter_Reh)
     1691                (#\Armenian_Capital_Letter_Co . #\Armenian_Small_Letter_Co)
     1692                (#\Armenian_Capital_Letter_Yiwn . #\Armenian_Small_Letter_Yiwn)
     1693                (#\Armenian_Capital_Letter_Piwr . #\Armenian_Small_Letter_Piwr)
     1694                (#\Armenian_Capital_Letter_Keh . #\Armenian_Small_Letter_Keh)
     1695                (#\Armenian_Capital_Letter_Oh . #\Armenian_Small_Letter_Oh)
     1696                (#\Armenian_Capital_Letter_Feh . #\Armenian_Small_Letter_Feh)
     1697                (#\U+10A0 . #\U+2D00) (#\U+10A1 . #\U+2D01) (#\U+10A2 . #\U+2D02)
     1698                (#\U+10A3 . #\U+2D03) (#\U+10A4 . #\U+2D04) (#\U+10A5 . #\U+2D05)
     1699                (#\U+10A6 . #\U+2D06) (#\U+10A7 . #\U+2D07) (#\U+10A8 . #\U+2D08)
     1700                (#\U+10A9 . #\U+2D09) (#\U+10AA . #\U+2D0A) (#\U+10AB . #\U+2D0B)
     1701                (#\U+10AC . #\U+2D0C) (#\U+10AD . #\U+2D0D) (#\U+10AE . #\U+2D0E)
     1702                (#\U+10AF . #\U+2D0F) (#\U+10B0 . #\U+2D10) (#\U+10B1 . #\U+2D11)
     1703                (#\U+10B2 . #\U+2D12) (#\U+10B3 . #\U+2D13) (#\U+10B4 . #\U+2D14)
     1704                (#\U+10B5 . #\U+2D15) (#\U+10B6 . #\U+2D16) (#\U+10B7 . #\U+2D17)
     1705                (#\U+10B8 . #\U+2D18) (#\U+10B9 . #\U+2D19) (#\U+10BA . #\U+2D1A)
     1706                (#\U+10BB . #\U+2D1B) (#\U+10BC . #\U+2D1C) (#\U+10BD . #\U+2D1D)
     1707                (#\U+10BE . #\U+2D1E) (#\U+10BF . #\U+2D1F) (#\U+10C0 . #\U+2D20)
     1708                (#\U+10C1 . #\U+2D21) (#\U+10C2 . #\U+2D22) (#\U+10C3 . #\U+2D23)
     1709                (#\U+10C4 . #\U+2D24) (#\U+10C5 . #\U+2D25) (#\U+1E00 . #\U+1E01)
     1710                (#\U+1E02 . #\U+1E03) (#\U+1E04 . #\U+1E05) (#\U+1E06 . #\U+1E07)
     1711                (#\U+1E08 . #\U+1E09) (#\U+1E0A . #\U+1E0B) (#\U+1E0C . #\U+1E0D)
     1712                (#\U+1E0E . #\U+1E0F) (#\U+1E10 . #\U+1E11) (#\U+1E12 . #\U+1E13)
     1713                (#\U+1E14 . #\U+1E15) (#\U+1E16 . #\U+1E17) (#\U+1E18 . #\U+1E19)
     1714                (#\U+1E1A . #\U+1E1B) (#\U+1E1C . #\U+1E1D) (#\U+1E1E . #\U+1E1F)
     1715                (#\U+1E20 . #\U+1E21) (#\U+1E22 . #\U+1E23) (#\U+1E24 . #\U+1E25)
     1716                (#\U+1E26 . #\U+1E27) (#\U+1E28 . #\U+1E29) (#\U+1E2A . #\U+1E2B)
     1717                (#\U+1E2C . #\U+1E2D) (#\U+1E2E . #\U+1E2F) (#\U+1E30 . #\U+1E31)
     1718                (#\U+1E32 . #\U+1E33) (#\U+1E34 . #\U+1E35) (#\U+1E36 . #\U+1E37)
     1719                (#\U+1E38 . #\U+1E39) (#\U+1E3A . #\U+1E3B) (#\U+1E3C . #\U+1E3D)
     1720                (#\U+1E3E . #\U+1E3F) (#\U+1E40 . #\U+1E41) (#\U+1E42 . #\U+1E43)
     1721                (#\U+1E44 . #\U+1E45) (#\U+1E46 . #\U+1E47) (#\U+1E48 . #\U+1E49)
     1722                (#\U+1E4A . #\U+1E4B) (#\U+1E4C . #\U+1E4D) (#\U+1E4E . #\U+1E4F)
     1723                (#\U+1E50 . #\U+1E51) (#\U+1E52 . #\U+1E53) (#\U+1E54 . #\U+1E55)
     1724                (#\U+1E56 . #\U+1E57) (#\U+1E58 . #\U+1E59) (#\U+1E5A . #\U+1E5B)
     1725                (#\U+1E5C . #\U+1E5D) (#\U+1E5E . #\U+1E5F) (#\U+1E60 . #\U+1E61)
     1726                (#\U+1E62 . #\U+1E63) (#\U+1E64 . #\U+1E65) (#\U+1E66 . #\U+1E67)
     1727                (#\U+1E68 . #\U+1E69) (#\U+1E6A . #\U+1E6B) (#\U+1E6C . #\U+1E6D)
     1728                (#\U+1E6E . #\U+1E6F) (#\U+1E70 . #\U+1E71) (#\U+1E72 . #\U+1E73)
     1729                (#\U+1E74 . #\U+1E75) (#\U+1E76 . #\U+1E77) (#\U+1E78 . #\U+1E79)
     1730                (#\U+1E7A . #\U+1E7B) (#\U+1E7C . #\U+1E7D) (#\U+1E7E . #\U+1E7F)
     1731                (#\U+1E80 . #\U+1E81) (#\U+1E82 . #\U+1E83) (#\U+1E84 . #\U+1E85)
     1732                (#\U+1E86 . #\U+1E87) (#\U+1E88 . #\U+1E89) (#\U+1E8A . #\U+1E8B)
     1733                (#\U+1E8C . #\U+1E8D) (#\U+1E8E . #\U+1E8F) (#\U+1E90 . #\U+1E91)
     1734                (#\U+1E92 . #\U+1E93) (#\U+1E94 . #\U+1E95) (#\U+1EA0 . #\U+1EA1)
     1735                (#\U+1EA2 . #\U+1EA3) (#\U+1EA4 . #\U+1EA5) (#\U+1EA6 . #\U+1EA7)
     1736                (#\U+1EA8 . #\U+1EA9) (#\U+1EAA . #\U+1EAB) (#\U+1EAC . #\U+1EAD)
     1737                (#\U+1EAE . #\U+1EAF) (#\U+1EB0 . #\U+1EB1) (#\U+1EB2 . #\U+1EB3)
     1738                (#\U+1EB4 . #\U+1EB5) (#\U+1EB6 . #\U+1EB7) (#\U+1EB8 . #\U+1EB9)
     1739                (#\U+1EBA . #\U+1EBB) (#\U+1EBC . #\U+1EBD) (#\U+1EBE . #\U+1EBF)
     1740                (#\U+1EC0 . #\U+1EC1) (#\U+1EC2 . #\U+1EC3) (#\U+1EC4 . #\U+1EC5)
     1741                (#\U+1EC6 . #\U+1EC7) (#\U+1EC8 . #\U+1EC9) (#\U+1ECA . #\U+1ECB)
     1742                (#\U+1ECC . #\U+1ECD) (#\U+1ECE . #\U+1ECF) (#\U+1ED0 . #\U+1ED1)
     1743                (#\U+1ED2 . #\U+1ED3) (#\U+1ED4 . #\U+1ED5) (#\U+1ED6 . #\U+1ED7)
     1744                (#\U+1ED8 . #\U+1ED9) (#\U+1EDA . #\U+1EDB) (#\U+1EDC . #\U+1EDD)
     1745                (#\U+1EDE . #\U+1EDF) (#\U+1EE0 . #\U+1EE1) (#\U+1EE2 . #\U+1EE3)
     1746                (#\U+1EE4 . #\U+1EE5) (#\U+1EE6 . #\U+1EE7) (#\U+1EE8 . #\U+1EE9)
     1747                (#\U+1EEA . #\U+1EEB) (#\U+1EEC . #\U+1EED) (#\U+1EEE . #\U+1EEF)
     1748                (#\U+1EF0 . #\U+1EF1) (#\U+1EF2 . #\U+1EF3) (#\U+1EF4 . #\U+1EF5)
     1749                (#\U+1EF6 . #\U+1EF7) (#\U+1EF8 . #\U+1EF9) (#\U+1F08 . #\U+1F00)
     1750                (#\U+1F09 . #\U+1F01) (#\U+1F0A . #\U+1F02) (#\U+1F0B . #\U+1F03)
     1751                (#\U+1F0C . #\U+1F04) (#\U+1F0D . #\U+1F05) (#\U+1F0E . #\U+1F06)
     1752                (#\U+1F0F . #\U+1F07) (#\U+1F18 . #\U+1F10) (#\U+1F19 . #\U+1F11)
     1753                (#\U+1F1A . #\U+1F12) (#\U+1F1B . #\U+1F13) (#\U+1F1C . #\U+1F14)
     1754                (#\U+1F1D . #\U+1F15) (#\U+1F28 . #\U+1F20) (#\U+1F29 . #\U+1F21)
     1755                (#\U+1F2A . #\U+1F22) (#\U+1F2B . #\U+1F23) (#\U+1F2C . #\U+1F24)
     1756                (#\U+1F2D . #\U+1F25) (#\U+1F2E . #\U+1F26) (#\U+1F2F . #\U+1F27)
     1757                (#\U+1F38 . #\U+1F30) (#\U+1F39 . #\U+1F31) (#\U+1F3A . #\U+1F32)
     1758                (#\U+1F3B . #\U+1F33) (#\U+1F3C . #\U+1F34) (#\U+1F3D . #\U+1F35)
     1759                (#\U+1F3E . #\U+1F36) (#\U+1F3F . #\U+1F37) (#\U+1F48 . #\U+1F40)
     1760                (#\U+1F49 . #\U+1F41) (#\U+1F4A . #\U+1F42) (#\U+1F4B . #\U+1F43)
     1761                (#\U+1F4C . #\U+1F44) (#\U+1F4D . #\U+1F45) (#\U+1F59 . #\U+1F51)
     1762                (#\U+1F5B . #\U+1F53) (#\U+1F5D . #\U+1F55) (#\U+1F5F . #\U+1F57)
     1763                (#\U+1F68 . #\U+1F60) (#\U+1F69 . #\U+1F61) (#\U+1F6A . #\U+1F62)
     1764                (#\U+1F6B . #\U+1F63) (#\U+1F6C . #\U+1F64) (#\U+1F6D . #\U+1F65)
     1765                (#\U+1F6E . #\U+1F66) (#\U+1F6F . #\U+1F67) (#\U+1F88 . #\U+1F80)
     1766                (#\U+1F89 . #\U+1F81) (#\U+1F8A . #\U+1F82) (#\U+1F8B . #\U+1F83)
     1767                (#\U+1F8C . #\U+1F84) (#\U+1F8D . #\U+1F85) (#\U+1F8E . #\U+1F86)
     1768                (#\U+1F8F . #\U+1F87) (#\U+1F98 . #\U+1F90) (#\U+1F99 . #\U+1F91)
     1769                (#\U+1F9A . #\U+1F92) (#\U+1F9B . #\U+1F93) (#\U+1F9C . #\U+1F94)
     1770                (#\U+1F9D . #\U+1F95) (#\U+1F9E . #\U+1F96) (#\U+1F9F . #\U+1F97)
     1771                (#\U+1FA8 . #\U+1FA0) (#\U+1FA9 . #\U+1FA1) (#\U+1FAA . #\U+1FA2)
     1772                (#\U+1FAB . #\U+1FA3) (#\U+1FAC . #\U+1FA4) (#\U+1FAD . #\U+1FA5)
     1773                (#\U+1FAE . #\U+1FA6) (#\U+1FAF . #\U+1FA7) (#\U+1FB8 . #\U+1FB0)
     1774                (#\U+1FB9 . #\U+1FB1) (#\U+1FBA . #\U+1F70) (#\U+1FBB . #\U+1F71)
     1775                (#\U+1FBC . #\U+1FB3) (#\U+1FC8 . #\U+1F72) (#\U+1FC9 . #\U+1F73)
     1776                (#\U+1FCA . #\U+1F74) (#\U+1FCB . #\U+1F75) (#\U+1FCC . #\U+1FC3)
     1777                (#\U+1FD8 . #\U+1FD0) (#\U+1FD9 . #\U+1FD1) (#\U+1FDA . #\U+1F76)
     1778                (#\U+1FDB . #\U+1F77) (#\U+1FE8 . #\U+1FE0) (#\U+1FE9 . #\U+1FE1)
     1779                (#\U+1FEA . #\U+1F7A) (#\U+1FEB . #\U+1F7B) (#\U+1FEC . #\U+1FE5)
     1780                (#\U+1FF8 . #\U+1F78) (#\U+1FF9 . #\U+1F79) (#\U+1FFA . #\U+1F7C)
     1781                (#\U+1FFB . #\U+1F7D) (#\U+1FFC . #\U+1FF3) (#\U+2132 . #\U+214E)
     1782                (#\U+2160 . #\U+2170) (#\U+2161 . #\U+2171) (#\U+2162 . #\U+2172)
     1783                (#\U+2163 . #\U+2173) (#\U+2164 . #\U+2174) (#\U+2165 . #\U+2175)
     1784                (#\U+2166 . #\U+2176) (#\U+2167 . #\U+2177) (#\U+2168 . #\U+2178)
     1785                (#\U+2169 . #\U+2179) (#\U+216A . #\U+217A) (#\U+216B . #\U+217B)
     1786                (#\U+216C . #\U+217C) (#\U+216D . #\U+217D) (#\U+216E . #\U+217E)
     1787                (#\U+216F . #\U+217F) (#\U+2183 . #\U+2184) (#\U+24B6 . #\U+24D0)
     1788                (#\U+24B7 . #\U+24D1) (#\U+24B8 . #\U+24D2) (#\U+24B9 . #\U+24D3)
     1789                (#\U+24BA . #\U+24D4) (#\U+24BB . #\U+24D5) (#\U+24BC . #\U+24D6)
     1790                (#\U+24BD . #\U+24D7) (#\U+24BE . #\U+24D8) (#\U+24BF . #\U+24D9)
     1791                (#\U+24C0 . #\U+24DA) (#\U+24C1 . #\U+24DB) (#\U+24C2 . #\U+24DC)
     1792                (#\U+24C3 . #\U+24DD) (#\U+24C4 . #\U+24DE) (#\U+24C5 . #\U+24DF)
     1793                (#\U+24C6 . #\U+24E0) (#\U+24C7 . #\U+24E1) (#\U+24C8 . #\U+24E2)
     1794                (#\U+24C9 . #\U+24E3) (#\U+24CA . #\U+24E4) (#\U+24CB . #\U+24E5)
     1795                (#\U+24CC . #\U+24E6) (#\U+24CD . #\U+24E7) (#\U+24CE . #\U+24E8)
     1796                (#\U+24CF . #\U+24E9) (#\U+2C00 . #\U+2C30) (#\U+2C01 . #\U+2C31)
     1797                (#\U+2C02 . #\U+2C32) (#\U+2C03 . #\U+2C33) (#\U+2C04 . #\U+2C34)
     1798                (#\U+2C05 . #\U+2C35) (#\U+2C06 . #\U+2C36) (#\U+2C07 . #\U+2C37)
     1799                (#\U+2C08 . #\U+2C38) (#\U+2C09 . #\U+2C39) (#\U+2C0A . #\U+2C3A)
     1800                (#\U+2C0B . #\U+2C3B) (#\U+2C0C . #\U+2C3C) (#\U+2C0D . #\U+2C3D)
     1801                (#\U+2C0E . #\U+2C3E) (#\U+2C0F . #\U+2C3F) (#\U+2C10 . #\U+2C40)
     1802                (#\U+2C11 . #\U+2C41) (#\U+2C12 . #\U+2C42) (#\U+2C13 . #\U+2C43)
     1803                (#\U+2C14 . #\U+2C44) (#\U+2C15 . #\U+2C45) (#\U+2C16 . #\U+2C46)
     1804                (#\U+2C17 . #\U+2C47) (#\U+2C18 . #\U+2C48) (#\U+2C19 . #\U+2C49)
     1805                (#\U+2C1A . #\U+2C4A) (#\U+2C1B . #\U+2C4B) (#\U+2C1C . #\U+2C4C)
     1806                (#\U+2C1D . #\U+2C4D) (#\U+2C1E . #\U+2C4E) (#\U+2C1F . #\U+2C4F)
     1807                (#\U+2C20 . #\U+2C50) (#\U+2C21 . #\U+2C51) (#\U+2C22 . #\U+2C52)
     1808                (#\U+2C23 . #\U+2C53) (#\U+2C24 . #\U+2C54) (#\U+2C25 . #\U+2C55)
     1809                (#\U+2C26 . #\U+2C56) (#\U+2C27 . #\U+2C57) (#\U+2C28 . #\U+2C58)
     1810                (#\U+2C29 . #\U+2C59) (#\U+2C2A . #\U+2C5A) (#\U+2C2B . #\U+2C5B)
     1811                (#\U+2C2C . #\U+2C5C) (#\U+2C2D . #\U+2C5D) (#\U+2C2E . #\U+2C5E)
     1812                (#\U+2C60 . #\U+2C61) (#\U+2C62 . #\Latin_Small_Letter_L_With_Middle_Tilde)
     1813                (#\U+2C63 . #\U+1D7D) (#\U+2C64 . #\Latin_Small_Letter_R_With_Tail)
     1814                (#\U+2C67 . #\U+2C68) (#\U+2C69 . #\U+2C6A) (#\U+2C6B . #\U+2C6C)
     1815                (#\U+2C75 . #\U+2C76) (#\U+2C80 . #\U+2C81) (#\U+2C82 . #\U+2C83)
     1816                (#\U+2C84 . #\U+2C85) (#\U+2C86 . #\U+2C87) (#\U+2C88 . #\U+2C89)
     1817                (#\U+2C8A . #\U+2C8B) (#\U+2C8C . #\U+2C8D) (#\U+2C8E . #\U+2C8F)
     1818                (#\U+2C90 . #\U+2C91) (#\U+2C92 . #\U+2C93) (#\U+2C94 . #\U+2C95)
     1819                (#\U+2C96 . #\U+2C97) (#\U+2C98 . #\U+2C99) (#\U+2C9A . #\U+2C9B)
     1820                (#\U+2C9C . #\U+2C9D) (#\U+2C9E . #\U+2C9F) (#\U+2CA0 . #\U+2CA1)
     1821                (#\U+2CA2 . #\U+2CA3) (#\U+2CA4 . #\U+2CA5) (#\U+2CA6 . #\U+2CA7)
     1822                (#\U+2CA8 . #\U+2CA9) (#\U+2CAA . #\U+2CAB) (#\U+2CAC . #\U+2CAD)
     1823                (#\U+2CAE . #\U+2CAF) (#\U+2CB0 . #\U+2CB1) (#\U+2CB2 . #\U+2CB3)
     1824                (#\U+2CB4 . #\U+2CB5) (#\U+2CB6 . #\U+2CB7) (#\U+2CB8 . #\U+2CB9)
     1825                (#\U+2CBA . #\U+2CBB) (#\U+2CBC . #\U+2CBD) (#\U+2CBE . #\U+2CBF)
     1826                (#\U+2CC0 . #\U+2CC1) (#\U+2CC2 . #\U+2CC3) (#\U+2CC4 . #\U+2CC5)
     1827                (#\U+2CC6 . #\U+2CC7) (#\U+2CC8 . #\U+2CC9) (#\U+2CCA . #\U+2CCB)
     1828                (#\U+2CCC . #\U+2CCD) (#\U+2CCE . #\U+2CCF) (#\U+2CD0 . #\U+2CD1)
     1829                (#\U+2CD2 . #\U+2CD3) (#\U+2CD4 . #\U+2CD5) (#\U+2CD6 . #\U+2CD7)
     1830                (#\U+2CD8 . #\U+2CD9) (#\U+2CDA . #\U+2CDB) (#\U+2CDC . #\U+2CDD)
     1831                (#\U+2CDE . #\U+2CDF) (#\U+2CE0 . #\U+2CE1) (#\U+2CE2 . #\U+2CE3)
     1832                (#\U+FF21 . #\U+FF41) (#\U+FF22 . #\U+FF42) (#\U+FF23 . #\U+FF43)
     1833                (#\U+FF24 . #\U+FF44) (#\U+FF25 . #\U+FF45) (#\U+FF26 . #\U+FF46)
     1834                (#\U+FF27 . #\U+FF47) (#\U+FF28 . #\U+FF48) (#\U+FF29 . #\U+FF49)
     1835                (#\U+FF2A . #\U+FF4A) (#\U+FF2B . #\U+FF4B) (#\U+FF2C . #\U+FF4C)
     1836                (#\U+FF2D . #\U+FF4D) (#\U+FF2E . #\U+FF4E) (#\U+FF2F . #\U+FF4F)
     1837                (#\U+FF30 . #\U+FF50) (#\U+FF31 . #\U+FF51) (#\U+FF32 . #\U+FF52)
     1838                (#\U+FF33 . #\U+FF53) (#\U+FF34 . #\U+FF54) (#\U+FF35 . #\U+FF55)
     1839                (#\U+FF36 . #\U+FF56) (#\U+FF37 . #\U+FF57) (#\U+FF38 . #\U+FF58)
     1840                (#\U+FF39 . #\U+FF59) (#\U+FF3A . #\U+FF5A) (#\U+10400 . #\U+10428)
     1841                (#\U+10401 . #\U+10429) (#\U+10402 . #\U+1042A) (#\U+10403 . #\U+1042B)
     1842                (#\U+10404 . #\U+1042C) (#\U+10405 . #\U+1042D) (#\U+10406 . #\U+1042E)
     1843                (#\U+10407 . #\U+1042F) (#\U+10408 . #\U+10430) (#\U+10409 . #\U+10431)
     1844                (#\U+1040A . #\U+10432) (#\U+1040B . #\U+10433) (#\U+1040C . #\U+10434)
     1845                (#\U+1040D . #\U+10435) (#\U+1040E . #\U+10436) (#\U+1040F . #\U+10437)
     1846                (#\U+10410 . #\U+10438) (#\U+10411 . #\U+10439) (#\U+10412 . #\U+1043A)
     1847                (#\U+10413 . #\U+1043B) (#\U+10414 . #\U+1043C) (#\U+10415 . #\U+1043D)
     1848                (#\U+10416 . #\U+1043E) (#\U+10417 . #\U+1043F) (#\U+10418 . #\U+10440)
     1849                (#\U+10419 . #\U+10441) (#\U+1041A . #\U+10442) (#\U+1041B . #\U+10443)
     1850                (#\U+1041C . #\U+10444) (#\U+1041D . #\U+10445) (#\U+1041E . #\U+10446)
     1851                (#\U+1041F . #\U+10447) (#\U+10420 . #\U+10448) (#\U+10421 . #\U+10449)
     1852                (#\U+10422 . #\U+1044A) (#\U+10423 . #\U+1044B) (#\U+10424 . #\U+1044C)
     1853                (#\U+10425 . #\U+1044D) (#\U+10426 . #\U+1044E) (#\U+10427 . #\U+1044F)))
     1854  (destructuring-bind (upper . lower) pair
     1855    (setf (gethash upper *non-standard-upper-to-lower*) lower
     1856          (gethash lower *non-standard-lower-to-upper*) upper)))
     1857
     1858(defun %non-standard-upper-case-equivalent (char)
     1859  (gethash char *non-standard-lower-to-upper*))
     1860
     1861;;;True for a-z, and maybe other things.
    11361862(defun lower-case-p (c)
    11371863  "The argument must be a character object; LOWER-CASE-P returns T if the
    11381864   argument is a lower-case character, NIL otherwise."
    11391865  (let ((code (char-code c)))
    1140     (and (>= code (char-code #\a))
    1141          (<= code (char-code #\z)))))
    1142 
    1143 ;True for a-z A-Z
     1866    (if (< code #x80)
     1867      (and (>= code (char-code #\a))
     1868           (<= code (char-code #\z)))
     1869     (not (null (%non-standard-upper-case-equivalent c))))))
     1870
     1871
     1872;;;True for a-z A-Z, others.
    11441873
    11451874
    11461875(defun alpha-char-p (c)
    11471876  "The argument must be a character object. ALPHA-CHAR-P returns T if the
    1148    argument is an alphabetic character, A-Z or a-z; otherwise NIL."
     1877   argument is an alphabetic character; otherwise NIL."
    11491878  (let* ((code (char-code c)))
    11501879    (declare (fixnum code))
    11511880    (or (and (>= code (char-code #\A)) (<= code (char-code #\Z)))
    1152         (and (>= code (char-code #\a)) (<= code (char-code #\z))))))
    1153 
    1154 
    1155 
    1156 
    1157 ; def-accessors type-tracking stuff.  Used by inspector
     1881        (and (>= code (char-code #\a)) (<= code (char-code #\z)))
     1882        (and (>= code #x80)
     1883             (or (not (null (%non-standard-upper-case-equivalent c)))
     1884                 (not (null (%non-standard-lower-case-equivalent c))))))))
     1885
     1886
     1887
     1888
     1889;;; def-accessors type-tracking stuff.  Used by inspector
    11581890(defvar *def-accessor-types* nil)
    11591891
  • trunk/ccl/lib/chars.lisp

    r5328 r7369  
    8181
    8282
     83(defun %non-standard-lower-case-equivalent (char)
     84  (gethash char *non-standard-upper-to-lower*))
     85
     86
    8387
    8488(defun upper-case-p (c)
     
    8791  (let* ((code (char-code c)))
    8892    (declare (type (mod #x110000) code))
    89     (and (>= code (char-code #\A))
    90          (<= code (char-code #\Z)))))
     93    (or (and (>= code (char-code #\A))
     94             (<= code (char-code #\Z)))
     95        (and (>= code #x80)
     96             (not (null (%non-standard-lower-case-equivalent c)))))))
    9197
    9298
     
    115121          (<= code (char-code #\z)))
    116122     (and (>= code (char-code #\A))
    117           (<= code (char-code #\Z))))))
     123          (<= code (char-code #\Z)))
     124     (and (> code #x80)
     125          (or (not (null (%non-standard-upper-case-equivalent c)))
     126              (not (null (%non-standard-lower-case-equivalent c))))))))
    118127
    119128(defun char= (ch &rest others)
     
    297306  (%strdown string start end))
    298307
     308
    299309(defun %strdown (string start end)
    300   (declare (fixnum start end))
    301   (loop
    302     (when (>= start end)(return string))
    303     (let ((code (%scharcode string start)))
    304       (when (and (%i>= code (char-code #\A))(%i<= code (char-code #\Z)))
    305         (setq code (%i+ code #.(- (char-code #\a)(char-code #\A))))
    306         (setf (%scharcode string start) code))
    307       (setq start (%i+ 1 start)))))
     310  (declare (fixnum start end)
     311           (optimize (speed 3) (safety 0)))
     312  (unless (typep string 'simple-string)
     313    (check-type string simple-string))
     314  (do* ((i start (1+ i)))
     315       ((>= i end) string)
     316    (declare (fixnum i))
     317    (let* ((ch (schar string i))
     318           (code (char-code ch))
     319           (lower (if (and (char<= ch #\Z)
     320                           (char>= ch #\A))
     321                    (%code-char (the (unsigned-byte 8)
     322                                  (+ code (- (char-code #\a)(char-code #\A)))))
     323                    (if (>= code #x80)
     324                      (%non-standard-lower-case-equivalent ch)))))
     325      (declare (character ch) (type (mod #x11000) code))
     326      (when lower
     327        (setf (schar string i) lower)))))
     328
     329
    308330
    309331
     
    328350
    329351(defun %strup (string start end)
    330   (declare (fixnum start end))
    331   (loop
    332     (when (>= start end)(return string))
    333     (let ((code (%scharcode string start)))
    334       (when (and (%i>= code (char-code #\a))(%i<= code (char-code #\z)))
    335         (setq code (%i- code #.(- (char-code #\a)(char-code #\A))))
    336         (setf (%scharcode string start) code))
    337       (setq start (%i+ 1 start)))))
     352  (declare (fixnum start end)
     353           (optimize (speed 3) (safety 0)))
     354  (unless (typep string 'simple-string)
     355    (check-type string simple-string))
     356  (do* ((i start (1+ i)))
     357       ((>= i end) string)
     358    (declare (fixnum i))
     359    (let* ((ch (schar string i))
     360           (code (char-code ch))
     361           (upper (if (and (char<= ch #\z)
     362                           (char>= ch #\a))
     363                    (%code-char (the (unsigned-byte 8)
     364                                  (- code (- (char-code #\a)(char-code #\A)))))
     365                    (if (>= code #x80)
     366                      (%non-standard-upper-case-equivalent ch)))))
     367      (declare (character ch) (type (mod #x11000) code))
     368      (when upper
     369        (setf (schar string i) upper)))))
    338370
    339371
Note: See TracChangeset for help on using the changeset viewer.