Fix Unicode table.

* (mkcategories): Fix a bug that outputs incorrect Unicode category
  table for code point ranges.
* (categories.t): Rebuild it using the bug-fixed mkcategories.

This fixes the problem reported in the following post.
https://cygwin.com/ml/cygwin/2018-06/msg00248.html
This commit is contained in:
Takashi Yano 2018-06-25 13:34:47 +09:00 committed by Corinna Vinschen
parent b14daac482
commit 048490485a
2 changed files with 16 additions and 26 deletions

View File

@ -1217,11 +1217,9 @@
{CAT_No, 0x32B1, 14},
{CAT_So, 0x32C0, 62},
{CAT_So, 0x3300, 255},
{CAT_Lo, 0x3400, 0},
{CAT_Lo, 0x4DB5, 0},
{CAT_Lo, 0x3400, 6581},
{CAT_So, 0x4DC0, 63},
{CAT_Lo, 0x4E00, 0},
{CAT_Lo, 0x9FEA, 0},
{CAT_Lo, 0x4E00, 20970},
{CAT_Lo, 0xA000, 20},
{CAT_Lm, 0xA015, 0},
{CAT_Lo, 0xA016, 1142},
@ -1394,14 +1392,10 @@
{CAT_Mc, 0xABEC, 0},
{CAT_Mn, 0xABED, 0},
{CAT_Nd, 0xABF0, 9},
{CAT_Lo, 0xAC00, 0},
{CAT_Lo, 0xD7A3, 0},
{CAT_Lo, 0xAC00, 11171},
{CAT_Lo, 0xD7B0, 22},
{CAT_Lo, 0xD7CB, 48},
{CAT_Cs, 0xD800, 0},
{CAT_Cs, 0xDB7F, 1},
{CAT_Cs, 0xDBFF, 1},
{CAT_Cs, 0xDFFF, 0},
{CAT_Cs, 0xD800, 2047},
{CAT_Lo, 0xF900, 365},
{CAT_Lo, 0xFA70, 105},
{CAT_Ll, 0xFB00, 6},
@ -1876,8 +1870,7 @@
{CAT_Mn, 0x16F8F, 3},
{CAT_Lm, 0x16F93, 12},
{CAT_Lm, 0x16FE0, 1},
{CAT_Lo, 0x17000, 0},
{CAT_Lo, 0x187EC, 0},
{CAT_Lo, 0x17000, 6124},
{CAT_Lo, 0x18800, 754},
{CAT_Lo, 0x1B000, 286},
{CAT_Lo, 0x1B170, 395},
@ -2070,16 +2063,11 @@
{CAT_So, 0x1F980, 23},
{CAT_So, 0x1F9C0, 0},
{CAT_So, 0x1F9D0, 22},
{CAT_Lo, 0x20000, 0},
{CAT_Lo, 0x2A6D6, 0},
{CAT_Lo, 0x2A700, 0},
{CAT_Lo, 0x2B734, 0},
{CAT_Lo, 0x2B740, 0},
{CAT_Lo, 0x2B81D, 0},
{CAT_Lo, 0x2B820, 0},
{CAT_Lo, 0x2CEA1, 0},
{CAT_Lo, 0x2CEB0, 0},
{CAT_Lo, 0x2EBE0, 0},
{CAT_Lo, 0x20000, 42710},
{CAT_Lo, 0x2A700, 4148},
{CAT_Lo, 0x2B740, 221},
{CAT_Lo, 0x2B820, 5761},
{CAT_Lo, 0x2CEB0, 7472},
{CAT_Lo, 0x2F800, 541},
{CAT_Cf, 0xE0001, 0},
{CAT_Cf, 0xE0020, 95},

View File

@ -24,14 +24,15 @@ cat <<\/EOS
first=
item () {
if [ -n "$first" ]
then if [ $(( 0x$1 )) -ne $(( 0x${last-0} + 1 )) ]
then if [ "$2" != "isRangeLast" \
-a $(( 0x$1 )) -ne $(( 0x${last-0} + 1 )) ]
then range
fi
fi
if [ -z "$first" ]
then first=$1
val=$2
val=$3
fi
last=$1
@ -60,8 +61,9 @@ then
-e '/;Co;/ d'
else cat
fi |
sed -e "s,^\([^;]*\);[^;]*;\([^;]*\);.*,\1 \2," |
uniq -f1 --group=append | sed -e "s,^$,range," -e t -e "s,^,item ,"
sed -e "s,^\([^;]*\);<[^;]*\, Last>;\([^;]*\);.*,\1 isRangeLast \2," \
-e "s,^\([^;]*\);[^;]*;\([^;]*\);.*,\1 isNormalOrRangeFirst \2," |
uniq -f2 --group=append | sed -e "s,^$,range," -e t -e "s,^,item ,"
) | sh > categories.t
sed -e "s/.*\(CAT_[A-Za-z]*\).*/ \1,/" categories.t |