]> Savannah Git Hosting - gnulib.git/commitdiff
uniwidth: Update to Unicode 10.0.0.
authorBruno Haible <bruno@clisp.org>
Wed, 29 Dec 2021 21:34:24 +0000 (22:34 +0100)
committerBruno Haible <bruno@clisp.org>
Wed, 29 Dec 2021 21:40:35 +0000 (22:40 +0100)
* lib/uniwidth/width.c (uc_width): Assign width 2 to the characters
0x231A..0x231B, 0x23E9..0x23EC, 0x23F0, 0x23F3, 0x25FD..0x25FE,
0x2614..0x2615, 0x2648..0x2653, 0x267F, 0x2693, 0x26A1, 0x26AA..0x26AB,
0x26BD..0x26BE, 0x26C4..0x26C5, 0x26CE, 0x26D4, 0x26EA, 0x26F2..0x26F3,
0x26F5, 0x26FA, 0x26FD, 0x2705, 0x270A..0x270B, 0x2728, 0x274C, 0x274E,
0x2753..0x2755, 0x2757, 0x2795..0x2797, 0x27B0, 0x27BF, 0x2B1B..0x2B1C,
0x2B50, 0x2B55, 0xA960..0xA97C, 0x16FE0..0x16FE1, 0x17000..0x187EC,
0x18800..0x18AF2, 0x1B000..0x1B11F, 0x1B170..0x1B2FB, 0x1F004, 0x1F0CF,
0x1F18E, 0x1F191..0x1F19A, 0x1F200..0x1F320, 0x1F32D..0x1F335,
0x1F337..0x1F37C, 0x1F37E..0x1F393, 0x1F3A0..0x1F3CA, 0x1F3CF..0x1F3D3,
0x1F3E0..0x1F3F0, 0x1F3F4, 0x1F3F8..0x1F43E, 0x1F440, 0x1F442..0x1F4FC,
0x1F4FF..0x1F53D, 0x1F54B..0x1F54E, 0x1F550..0x1F567, 0x1F57A,
0x1F595..0x1F596, 0x1F5A4, 0x1F5FB..0x1F64F, 0x1F680..0x1F6C5, 0x1F6CC,
0x1F6D0..0x1F6D2, 0x1F6EB..0x1F6EC, 0x1F6F4..0x1F6F8, 0x1F910..0x1F9E6.
Assign ambiguous width to the characters 0x3248..0x324F.
* tests/uniwidth/test-uc_width2.sh: Expect these changes.

ChangeLog
lib/uniwidth/width.c
tests/uniwidth/test-uc_width2.sh

index 7af2943f840129852fad3add26aa10d27838d70f..874e89b004b57ef7811b28a44d99683280841cc0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,23 @@
+2021-12-29  Bruno Haible  <bruno@clisp.org>
+
+       uniwidth: Update to Unicode 10.0.0.
+       * lib/uniwidth/width.c (uc_width): Assign width 2 to the characters
+       0x231A..0x231B, 0x23E9..0x23EC, 0x23F0, 0x23F3, 0x25FD..0x25FE,
+       0x2614..0x2615, 0x2648..0x2653, 0x267F, 0x2693, 0x26A1, 0x26AA..0x26AB,
+       0x26BD..0x26BE, 0x26C4..0x26C5, 0x26CE, 0x26D4, 0x26EA, 0x26F2..0x26F3,
+       0x26F5, 0x26FA, 0x26FD, 0x2705, 0x270A..0x270B, 0x2728, 0x274C, 0x274E,
+       0x2753..0x2755, 0x2757, 0x2795..0x2797, 0x27B0, 0x27BF, 0x2B1B..0x2B1C,
+       0x2B50, 0x2B55, 0xA960..0xA97C, 0x16FE0..0x16FE1, 0x17000..0x187EC,
+       0x18800..0x18AF2, 0x1B000..0x1B11F, 0x1B170..0x1B2FB, 0x1F004, 0x1F0CF,
+       0x1F18E, 0x1F191..0x1F19A, 0x1F200..0x1F320, 0x1F32D..0x1F335,
+       0x1F337..0x1F37C, 0x1F37E..0x1F393, 0x1F3A0..0x1F3CA, 0x1F3CF..0x1F3D3,
+       0x1F3E0..0x1F3F0, 0x1F3F4, 0x1F3F8..0x1F43E, 0x1F440, 0x1F442..0x1F4FC,
+       0x1F4FF..0x1F53D, 0x1F54B..0x1F54E, 0x1F550..0x1F567, 0x1F57A,
+       0x1F595..0x1F596, 0x1F5A4, 0x1F5FB..0x1F64F, 0x1F680..0x1F6C5, 0x1F6CC,
+       0x1F6D0..0x1F6D2, 0x1F6EB..0x1F6EC, 0x1F6F4..0x1F6F8, 0x1F910..0x1F9E6.
+       Assign ambiguous width to the characters 0x3248..0x324F.
+       * tests/uniwidth/test-uc_width2.sh: Expect these changes.
+
 2021-12-29  Bruno Haible  <bruno@clisp.org>
 
        unilbrk: Improve support for strings that contain CR-LF sequences.
index cc3dd6eb88af425627719533ceb895f21dda29ae..4db700ea1a5ef0f3101c23addc5e29a48383f43e 100644 (file)
@@ -450,20 +450,99 @@ uc_width (ucs4_t uc, const char *encoding)
         }
     }
   /* Test for double-width character.
-   * Generated from "grep '^[^;]\{4,5\};[WF]' EastAsianWidth.txt"
-   * and            "grep '^[^;]\{4,5\};[^WF]' EastAsianWidth.txt"
+   * Generated from "grep '^[^;]\+;[WF]' EastAsianWidth.txt"
+   * and            "grep '^[^;]\+;[^WF]' EastAsianWidth.txt"
    */
   if (uc >= 0x1100
       && ((uc < 0x1160) /* Hangul Jamo */
-          || (uc >= 0x2329 && uc < 0x232b) /* Angle Brackets */
+          || ((uc >> 9) == 0x11
+              && ((uc >= 0x231a && uc < 0x231c) /* Watch, Hourglass */
+                  || (uc >= 0x2329 && uc < 0x232b) /* Angle Brackets */
+                  || (uc >= 0x23e9 && uc < 0x23ed) /* Black double triangles */
+                  || uc == 0x23f0 /* Alarm clock */
+                  || uc == 0x23f3)) /* Hourglass */
+          || ((uc >> 9) == 0x12
+              && (uc >= 0x25fd && uc < 0x25ff)) /* Medium small squares */
+          || ((uc >> 9) == 0x13 /* Miscellaneous symbols, dingbats */
+              && ((uc >= 0x2614 && uc < 0x2616)
+                  || (uc >= 0x2648 && uc < 0x2654)
+                  || uc == 0x267f
+                  || uc == 0x2693
+                  || uc == 0x26a1
+                  || (uc >= 0x26aa && uc < 0x26ac)
+                  || (uc >= 0x26bd && uc < 0x26bf)
+                  || (uc >= 0x26c4 && uc < 0x26c6)
+                  || uc == 0x26ce
+                  || uc == 0x26d4
+                  || uc == 0x26ea
+                  || (uc >= 0x26f2 && uc < 0x26f4)
+                  || uc == 0x26f5
+                  || uc == 0x26fa
+                  || uc == 0x26fd
+                  || uc == 0x2705
+                  || (uc >= 0x270a && uc < 0x270c)
+                  || uc == 0x2728
+                  || uc == 0x274c
+                  || uc == 0x274e
+                  || (uc >= 0x2753 && uc < 0x2756)
+                  || uc == 0x2757
+                  || (uc >= 0x2795 && uc < 0x2798)
+                  || uc == 0x27b0
+                  || uc == 0x27bf))
+          || ((uc >> 9) == 0x15
+              && ((uc >= 0x2b1b && uc < 0x2b1d) /* Large squares */
+                  || uc == 0x2b50
+                  || uc == 0x2b55))
           || (uc >= 0x2e80 && uc < 0xa4d0  /* CJK ... Yi */
-              && !(uc == 0x303f) && !(uc >= 0x4dc0 && uc < 0x4e00))
+              && !(uc == 0x303f)
+              && !(uc >= 0x3248 && uc < 0x3250)
+              && !(uc >= 0x4dc0 && uc < 0x4e00))
+          || (uc >= 0xa960 && uc < 0xa97d) /* Hangul Jamo Extended-A */
           || (uc >= 0xac00 && uc < 0xd7a4) /* Hangul Syllables */
           || (uc >= 0xf900 && uc < 0xfb00) /* CJK Compatibility Ideographs */
           || (uc >= 0xfe10 && uc < 0xfe20) /* Presentation Forms for Vertical */
           || (uc >= 0xfe30 && uc < 0xfe70) /* CJK Compatibility Forms */
           || (uc >= 0xff00 && uc < 0xff61) /* Fullwidth Forms */
           || (uc >= 0xffe0 && uc < 0xffe7) /* Fullwidth Signs */
+          || (uc >= 0x16fe0 && uc < 0x16fe2) /* Tangut mark, Nushu mark */
+          || (uc >= 0x17000 && uc < 0x187ed) /* Tangut */
+          || (uc >= 0x18800 && uc < 0x18af3) /* Tangut components */
+          || (uc >= 0x1b000 && uc < 0x1b120) /* Kana supplement, Kana Extended-A */
+          || (uc >= 0x1b170 && uc < 0x1b2fc) /* Nushu */
+          || ((uc >> 9) == 0xf8
+              && (uc == 0x1f004
+                  || uc == 0x1f0cf
+                  || uc == 0x1f18e
+                  || (uc >= 0x1f191 && uc < 0x1f19b)))
+          || ((uc >> 9) == 0xf9 /* Miscellaneous symbols and pictographs */
+              && ((uc >= 0x1f200 && uc < 0x1f321)
+                  || (uc >= 0x1f32d && uc < 0x1f336)
+                  || (uc >= 0x1f337 && uc < 0x1f37d)
+                  || (uc >= 0x1f37e && uc < 0x1f394)
+                  || (uc >= 0x1f3a0 && uc < 0x1f3cb)
+                  || (uc >= 0x1f3cf && uc < 0x1f3d4)
+                  || (uc >= 0x1f3e0 && uc < 0x1f3f1)
+                  || uc == 0x1f3f4
+                  || uc >= 0x1f3f8))
+          || ((uc >> 9) == 0xfa
+              && (uc < 0x1f43f
+                  || uc == 0x1f440
+                  || (uc >= 0x1f442 && uc < 0x1f4fd)
+                  || (uc >= 0x1f4ff && uc < 0x1f53e)
+                  || (uc >= 0x1f54b && uc < 0x1f54f)
+                  || (uc >= 0x1f550 && uc < 0x1f568)
+                  || uc == 0x1f57a
+                  || (uc >= 0x1f595 && uc < 0x1f597)
+                  || uc == 0x1f5a4
+                  || uc >= 0x1f5fb))
+          || ((uc >> 9) == 0xfb
+              && (uc < 0x1f650
+                  || (uc >= 0x1f680 && uc < 0x1f6c6)
+                  || uc == 0x1f6cc
+                  || (uc >= 0x1f6d0 && uc < 0x1f6d3)
+                  || (uc >= 0x1f6eb && uc < 0x1f6ed)
+                  || (uc >= 0x1f6f4 && uc < 0x1f6f9)))
+          || (uc >= 0x1f910 && uc < 0x1f9e7)
           || (uc >= 0x20000 && uc <= 0x2ffff) /* Supplementary Ideographic Plane */
           || (uc >= 0x30000 && uc <= 0x3ffff) /* Tertiary Ideographic Plane */
      )   )
index cc37101645bb43968eca25024e0bbd4d828e0f10..9662ca71f5872fb154c486c1480fbb19b1838fbe 100755 (executable)
@@ -347,9 +347,75 @@ cat > uc_width.ok <<\EOF
 20A9           1
 20AA..20CF     A
 20D0..20F0     0
-20F1..2328     A
+20F1..2319     A
+231A..231B     2
+231C..2328     A
 2329..232A     2
-232B..2CEE     A
+232B..23E8     A
+23E9..23EC     2
+23ED..23EF     A
+23F0           2
+23F1..23F2     A
+23F3           2
+23F4..25FC     A
+25FD..25FE     2
+25FF..2613     A
+2614..2615     2
+2616..2647     A
+2648..2653     2
+2654..267E     A
+267F           2
+2680..2692     A
+2693           2
+2694..26A0     A
+26A1           2
+26A2..26A9     A
+26AA..26AB     2
+26AC..26BC     A
+26BD..26BE     2
+26BF..26C3     A
+26C4..26C5     2
+26C6..26CD     A
+26CE           2
+26CF..26D3     A
+26D4           2
+26D5..26E9     A
+26EA           2
+26EB..26F1     A
+26F2..26F3     2
+26F4           A
+26F5           2
+26F6..26F9     A
+26FA           2
+26FB..26FC     A
+26FD           2
+26FE..2704     A
+2705           2
+2706..2709     A
+270A..270B     2
+270C..2727     A
+2728           2
+2729..274B     A
+274C           2
+274D           A
+274E           2
+274F..2752     A
+2753..2755     2
+2756           A
+2757           2
+2758..2794     A
+2795..2797     2
+2798..27AF     A
+27B0           2
+27B1..27BE     A
+27BF           2
+27C0..2B1A     A
+2B1B..2B1C     2
+2B1D..2B4F     A
+2B50           2
+2B51..2B54     A
+2B55           2
+2B56..2CEE     A
 2CEF..2CF1     0
 2CF2..2D7E     A
 2D7F           0
@@ -362,7 +428,9 @@ cat > uc_width.ok <<\EOF
 303F           A
 3040..3098     2
 3099..309A     0
-309B..4DBF     2
+309B..3247     2
+3248..324F     A
+3250..4DBF     2
 4DC0..4DFF     A
 4E00..A4CF     2
 A4D0..A66E     A
@@ -389,7 +457,9 @@ A8F2..A925  A
 A926..A92D     0
 A92E..A946     A
 A947..A951     0
-A952..A97F     A
+A952..A95F     A
+A960..A97C     2
+A97D..A97F     A
 A980..A982     0
 A983..A9B2     A
 A9B3           0
@@ -603,7 +673,17 @@ FFFC..101FC        1
 16B30..16B36   0
 16B37..16F8E   1
 16F8F..16F92   0
-16F93..1BC9C   1
+16F93..16FDF   1
+16FE0..16FE1   2
+16FE2..16FFF   1
+17000..187EC   2
+187ED..187FF   1
+18800..18AF2   2
+18AF3..1AFFF   1
+1B000..1B11F   2
+1B120..1B16F   1
+1B170..1B2FB   2
+1B2FC..1BC9C   1
 1BC9D..1BC9E   0
 1BC9F          1
 1BCA0..1BCA3   0
@@ -643,7 +723,63 @@ FFFC..101FC        1
 1E8D0..1E8D6   0
 1E8D7..1E943   1
 1E944..1E94A   0
-1E94B..1FFFF   1
+1E94B..1F003   1
+1F004          2
+1F005..1F0CE   1
+1F0CF          2
+1F0D0..1F18D   1
+1F18E          2
+1F18F..1F190   1
+1F191..1F19A   2
+1F19B..1F1FF   1
+1F200..1F320   2
+1F321..1F32C   1
+1F32D..1F335   2
+1F336          1
+1F337..1F37C   2
+1F37D          1
+1F37E..1F393   2
+1F394..1F39F   1
+1F3A0..1F3CA   2
+1F3CB..1F3CE   1
+1F3CF..1F3D3   2
+1F3D4..1F3DF   1
+1F3E0..1F3F0   2
+1F3F1..1F3F3   1
+1F3F4          2
+1F3F5..1F3F7   1
+1F3F8..1F43E   2
+1F43F          1
+1F440          2
+1F441          1
+1F442..1F4FC   2
+1F4FD..1F4FE   1
+1F4FF..1F53D   2
+1F53E..1F54A   1
+1F54B..1F54E   2
+1F54F          1
+1F550..1F567   2
+1F568..1F579   1
+1F57A          2
+1F57B..1F594   1
+1F595..1F596   2
+1F597..1F5A3   1
+1F5A4          2
+1F5A5..1F5FA   1
+1F5FB..1F64F   2
+1F650..1F67F   1
+1F680..1F6C5   2
+1F6C6..1F6CB   1
+1F6CC          2
+1F6CD..1F6CF   1
+1F6D0..1F6D2   2
+1F6D3..1F6EA   1
+1F6EB..1F6EC   2
+1F6ED..1F6F3   1
+1F6F4..1F6F8   2
+1F6F9..1F90F   1
+1F910..1F9E6   2
+1F9E7..1FFFF   1
 20000..3FFFF   2
 40000..E0000   1
 E0001          0