415 } 416 } 417 return dp; 418 } 419 420 static char[] C2B_UNMAPPABLE = new char[0x100]; 421 static { 422 Arrays.fill(C2B_UNMAPPABLE, (char)UNMAPPABLE_ENCODING); 423 } 424 425 public static void initc2b(char[][] c2b, String[] b2cStr, String pua) { 426 // init c2b/c2bSupp from b2cStr and supp 427 int b2Min = 0x40; 428 Arrays.fill(c2b, C2B_UNMAPPABLE); 429 for (int b1 = 0; b1 < 0x100; b1++) { 430 String s = b2cStr[b1]; 431 if (s == null) 432 continue; 433 for (int i = 0; i < s.length(); i++) { 434 char c = s.charAt(i); 435 int hi = c >> 8; 436 if (c2b[hi] == C2B_UNMAPPABLE) { 437 c2b[hi] = new char[0x100]; 438 Arrays.fill(c2b[hi], (char)UNMAPPABLE_ENCODING); 439 } 440 c2b[hi][c & 0xff] = (char)((b1 << 8) | (i + b2Min)); 441 } 442 } 443 if (pua != null) { // add the compatibility pua entries 444 char c = '\ue000'; //first pua character 445 for (int i = 0; i < pua.length(); i++) { 446 char bb = pua.charAt(i); 447 if (bb != UNMAPPABLE_DECODING) { 448 int hi = c >> 8; 449 if (c2b[hi] == C2B_UNMAPPABLE) { 450 c2b[hi] = new char[0x100]; 451 Arrays.fill(c2b[hi], (char)UNMAPPABLE_ENCODING); 452 } 453 c2b[hi][c & 0xff] = bb; 454 } | 415 } 416 } 417 return dp; 418 } 419 420 static char[] C2B_UNMAPPABLE = new char[0x100]; 421 static { 422 Arrays.fill(C2B_UNMAPPABLE, (char)UNMAPPABLE_ENCODING); 423 } 424 425 public static void initc2b(char[][] c2b, String[] b2cStr, String pua) { 426 // init c2b/c2bSupp from b2cStr and supp 427 int b2Min = 0x40; 428 Arrays.fill(c2b, C2B_UNMAPPABLE); 429 for (int b1 = 0; b1 < 0x100; b1++) { 430 String s = b2cStr[b1]; 431 if (s == null) 432 continue; 433 for (int i = 0; i < s.length(); i++) { 434 char c = s.charAt(i); 435 if (c == UNMAPPABLE_DECODING) 436 continue; 437 int hi = c >> 8; 438 if (c2b[hi] == C2B_UNMAPPABLE) { 439 c2b[hi] = new char[0x100]; 440 Arrays.fill(c2b[hi], (char)UNMAPPABLE_ENCODING); 441 } 442 c2b[hi][c & 0xff] = (char)((b1 << 8) | (i + b2Min)); 443 } 444 } 445 if (pua != null) { // add the compatibility pua entries 446 char c = '\ue000'; //first pua character 447 for (int i = 0; i < pua.length(); i++) { 448 char bb = pua.charAt(i); 449 if (bb != UNMAPPABLE_DECODING) { 450 int hi = c >> 8; 451 if (c2b[hi] == C2B_UNMAPPABLE) { 452 c2b[hi] = new char[0x100]; 453 Arrays.fill(c2b[hi], (char)UNMAPPABLE_ENCODING); 454 } 455 c2b[hi][c & 0xff] = bb; 456 } |