$block_enable[$block] = 0;
}
+ $block_enable[1] = 1; # ASCII block is forcibly included
+ $block_enable[2] = 1; # in the array for Speed-Up.
+
for ($block = 1024 ; $block <= 17409 ; $block++) {
$block_enable_sp[$block] = 0;
}
while (<UNICODEDATA>) {
chop;
(
- $code0,
- $Name1,
- $General_Category2,
- $Canonical_Combining_Class3,
- $Bidi_Class4,
- $Decomposition_Mapping5,
- $Numeric_Value6,
- $Numeric_Value7,
- $Numeric_Value8,
- $Bidi_Mirrored9,
- $Unicode_1_Name10,
- $ISO_Comment11,
- $Simple_Uppercase_Mapping12,
- $Simple_Lowercase_Mapping13,
- $Simple_Titlecase_Mapping14
+ $code0,
+ $Name1,
+ $General_Category2,
+ $Canonical_Combining_Class3,
+ $Bidi_Class4,
+ $Decomposition_Mapping5,
+ $Numeric_Value6,
+ $Numeric_Value7,
+ $Numeric_Value8,
+ $Bidi_Mirrored9,
+ $Unicode_1_Name10,
+ $ISO_Comment11,
+ $Simple_Uppercase_Mapping12,
+ $Simple_Lowercase_Mapping13,
+ $Simple_Titlecase_Mapping14
) = split(/\;/);
if ($_[0] eq "upper") {
$table[$char][0],
$table[$char][1],
$table[$char][2]
- );
+ );
}
printf(CHEADER "\}\;\n");
printf(CHEADER "\n");
- printf(CSOURCE " if \( val \>\= 0x%04X \&\& val \<\= 0x%04X)\n",
- $char_start, $char_end);
- printf(CSOURCE " return %s\_table\_%d\[val-0x%04X\]\;\n",
- $_[0], $table_no, $char_start);
+ if ($char_start == 0x0000) {
+ printf(CSOURCE " if \( val \<\= 0x%04X)\n",
+ $char_end);
+ printf(CSOURCE " return %s\_table\_%d\[val]\;\n",
+ $_[0], $table_no);
+ } else {
+ printf(CSOURCE " if \( val \>\= 0x%04X \&\& val \<\= 0x%04X)\n",
+ $char_start, $char_end);
+ printf(CSOURCE " return %s\_table\_%d\[val-0x%04X\]\;\n",
+ $_[0], $table_no, $char_start);
+ }
printf(CSOURCE "\n");
$table_no++;
# rising edge detection
if ((($block_enable_sp[$block - 1] == 0) || ((($block - 1) & 0xF) == 0))
- && ($block_enable_sp[$block] == 1)) {
+ && ($block_enable_sp[$block] == 1)) {
$block_start = $block;
}
# falling edge detection
if (($block_enable_sp[$block] == 1) &&
- ((($block - 1) & 0xF == 0xF) || ($block_enable_sp[$block + 1] == 0))) {
+ ((($block - 1) & 0xF == 0xF) || ($block_enable_sp[$block + 1] == 0))) {
$block_end = $block;
$char_start = ($block_start -1)* 64;
$table_sp[$char][2],
$table_sp[$char][3],
$table_sp[$char][4]
- );
+ );
}
printf(CHEADER "\}\;\n");
printf(CHEADER "\n");
http://www.unicode.org/Public/UNIDATA/UnicodeData.txt
*/
-static const u_int16_t upper_table_1[640] = {
+static const u_int16_t upper_table_1[704] = {
+ 0x0000, /*U+0000*/ /**/
+ 0x0001, /*U+0001*/ /**/
+ 0x0002, /*U+0002*/ /**/
+ 0x0003, /*U+0003*/ /**/
+ 0x0004, /*U+0004*/ /**/
+ 0x0005, /*U+0005*/ /**/
+ 0x0006, /*U+0006*/ /**/
+ 0x0007, /*U+0007*/ /**/
+ 0x0008, /*U+0008*/ /**/
+ 0x0009, /*U+0009*/ /**/
+ 0x000A, /*U+000A*/ /**/
+ 0x000B, /*U+000B*/ /**/
+ 0x000C, /*U+000C*/ /**/
+ 0x000D, /*U+000D*/ /**/
+ 0x000E, /*U+000E*/ /**/
+ 0x000F, /*U+000F*/ /**/
+ 0x0010, /*U+0010*/ /**/
+ 0x0011, /*U+0011*/ /**/
+ 0x0012, /*U+0012*/ /**/
+ 0x0013, /*U+0013*/ /**/
+ 0x0014, /*U+0014*/ /**/
+ 0x0015, /*U+0015*/ /**/
+ 0x0016, /*U+0016*/ /**/
+ 0x0017, /*U+0017*/ /**/
+ 0x0018, /*U+0018*/ /**/
+ 0x0019, /*U+0019*/ /**/
+ 0x001A, /*U+001A*/ /**/
+ 0x001B, /*U+001B*/ /**/
+ 0x001C, /*U+001C*/ /**/
+ 0x001D, /*U+001D*/ /**/
+ 0x001E, /*U+001E*/ /**/
+ 0x001F, /*U+001F*/ /**/
+ 0x0020, /*U+0020*/ /**/
+ 0x0021, /*U+0021*/ /**/
+ 0x0022, /*U+0022*/ /**/
+ 0x0023, /*U+0023*/ /**/
+ 0x0024, /*U+0024*/ /**/
+ 0x0025, /*U+0025*/ /**/
+ 0x0026, /*U+0026*/ /**/
+ 0x0027, /*U+0027*/ /**/
+ 0x0028, /*U+0028*/ /**/
+ 0x0029, /*U+0029*/ /**/
+ 0x002A, /*U+002A*/ /**/
+ 0x002B, /*U+002B*/ /**/
+ 0x002C, /*U+002C*/ /**/
+ 0x002D, /*U+002D*/ /**/
+ 0x002E, /*U+002E*/ /**/
+ 0x002F, /*U+002F*/ /**/
+ 0x0030, /*U+0030*/ /**/
+ 0x0031, /*U+0031*/ /**/
+ 0x0032, /*U+0032*/ /**/
+ 0x0033, /*U+0033*/ /**/
+ 0x0034, /*U+0034*/ /**/
+ 0x0035, /*U+0035*/ /**/
+ 0x0036, /*U+0036*/ /**/
+ 0x0037, /*U+0037*/ /**/
+ 0x0038, /*U+0038*/ /**/
+ 0x0039, /*U+0039*/ /**/
+ 0x003A, /*U+003A*/ /**/
+ 0x003B, /*U+003B*/ /**/
+ 0x003C, /*U+003C*/ /**/
+ 0x003D, /*U+003D*/ /**/
+ 0x003E, /*U+003E*/ /**/
+ 0x003F, /*U+003F*/ /**/
0x0040, /*U+0040*/ /**/
0x0041, /*U+0041*/ /**/
0x0042, /*U+0042*/ /**/
0xD801DC7F, /*0xD801DC7F*/ /*U+01047F*/ /*U+01047F*/ /**/
};
-static const u_int16_t lower_table_1[64] = {
+static const u_int16_t lower_table_1[128] = {
+ 0x0000, /*U+0000*/ /**/
+ 0x0001, /*U+0001*/ /**/
+ 0x0002, /*U+0002*/ /**/
+ 0x0003, /*U+0003*/ /**/
+ 0x0004, /*U+0004*/ /**/
+ 0x0005, /*U+0005*/ /**/
+ 0x0006, /*U+0006*/ /**/
+ 0x0007, /*U+0007*/ /**/
+ 0x0008, /*U+0008*/ /**/
+ 0x0009, /*U+0009*/ /**/
+ 0x000A, /*U+000A*/ /**/
+ 0x000B, /*U+000B*/ /**/
+ 0x000C, /*U+000C*/ /**/
+ 0x000D, /*U+000D*/ /**/
+ 0x000E, /*U+000E*/ /**/
+ 0x000F, /*U+000F*/ /**/
+ 0x0010, /*U+0010*/ /**/
+ 0x0011, /*U+0011*/ /**/
+ 0x0012, /*U+0012*/ /**/
+ 0x0013, /*U+0013*/ /**/
+ 0x0014, /*U+0014*/ /**/
+ 0x0015, /*U+0015*/ /**/
+ 0x0016, /*U+0016*/ /**/
+ 0x0017, /*U+0017*/ /**/
+ 0x0018, /*U+0018*/ /**/
+ 0x0019, /*U+0019*/ /**/
+ 0x001A, /*U+001A*/ /**/
+ 0x001B, /*U+001B*/ /**/
+ 0x001C, /*U+001C*/ /**/
+ 0x001D, /*U+001D*/ /**/
+ 0x001E, /*U+001E*/ /**/
+ 0x001F, /*U+001F*/ /**/
+ 0x0020, /*U+0020*/ /**/
+ 0x0021, /*U+0021*/ /**/
+ 0x0022, /*U+0022*/ /**/
+ 0x0023, /*U+0023*/ /**/
+ 0x0024, /*U+0024*/ /**/
+ 0x0025, /*U+0025*/ /**/
+ 0x0026, /*U+0026*/ /**/
+ 0x0027, /*U+0027*/ /**/
+ 0x0028, /*U+0028*/ /**/
+ 0x0029, /*U+0029*/ /**/
+ 0x002A, /*U+002A*/ /**/
+ 0x002B, /*U+002B*/ /**/
+ 0x002C, /*U+002C*/ /**/
+ 0x002D, /*U+002D*/ /**/
+ 0x002E, /*U+002E*/ /**/
+ 0x002F, /*U+002F*/ /**/
+ 0x0030, /*U+0030*/ /**/
+ 0x0031, /*U+0031*/ /**/
+ 0x0032, /*U+0032*/ /**/
+ 0x0033, /*U+0033*/ /**/
+ 0x0034, /*U+0034*/ /**/
+ 0x0035, /*U+0035*/ /**/
+ 0x0036, /*U+0036*/ /**/
+ 0x0037, /*U+0037*/ /**/
+ 0x0038, /*U+0038*/ /**/
+ 0x0039, /*U+0039*/ /**/
+ 0x003A, /*U+003A*/ /**/
+ 0x003B, /*U+003B*/ /**/
+ 0x003C, /*U+003C*/ /**/
+ 0x003D, /*U+003D*/ /**/
+ 0x003E, /*U+003E*/ /**/
+ 0x003F, /*U+003F*/ /**/
0x0040, /*U+0040*/ /**/
0x0061, /*U+0041*/ /*LATIN CAPITAL LETTER A*/
0x0062, /*U+0042*/ /*LATIN CAPITAL LETTER B*/