diff options
Diffstat (limited to 'gnulib-tests/uniwidth')
-rw-r--r-- | gnulib-tests/uniwidth/test-uc_width.c | 56 | ||||
-rw-r--r-- | gnulib-tests/uniwidth/test-uc_width2.c | 86 | ||||
-rwxr-xr-x | gnulib-tests/uniwidth/test-uc_width2.sh | 921 |
3 files changed, 1063 insertions, 0 deletions
diff --git a/gnulib-tests/uniwidth/test-uc_width.c b/gnulib-tests/uniwidth/test-uc_width.c new file mode 100644 index 0000000..86389b2 --- /dev/null +++ b/gnulib-tests/uniwidth/test-uc_width.c @@ -0,0 +1,56 @@ +/* Test of uc_width() function. + Copyright (C) 2007-2022 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include "uniwidth.h" + +#include "macros.h" + +int +main () +{ + ucs4_t uc; + + /* Test width of ASCII characters. */ + for (uc = 0x0020; uc < 0x007F; uc++) + ASSERT (uc_width (uc, "ISO-8859-2") == 1); + + /* Test width of some non-spacing characters. */ + ASSERT (uc_width (0x0301, "UTF-8") == 0); + ASSERT (uc_width (0x05B0, "UTF-8") == 0); + + /* Test width of some format control characters. */ + ASSERT (uc_width (0x200E, "UTF-8") == 0); + ASSERT (uc_width (0x2060, "UTF-8") == 0); + ASSERT (uc_width (0xE0001, "UTF-8") == 0); + ASSERT (uc_width (0xE0044, "UTF-8") == 0); + + /* Test width of some zero width characters. */ + ASSERT (uc_width (0x200B, "UTF-8") == 0); + ASSERT (uc_width (0xFEFF, "UTF-8") == 0); + + /* Test width of some CJK characters. */ + ASSERT (uc_width (0x3000, "UTF-8") == 2); + ASSERT (uc_width (0xB250, "UTF-8") == 2); + ASSERT (uc_width (0xFF1A, "UTF-8") == 2); + ASSERT (uc_width (0x20369, "UTF-8") == 2); + ASSERT (uc_width (0x2F876, "UTF-8") == 2); + + return 0; +} diff --git a/gnulib-tests/uniwidth/test-uc_width2.c b/gnulib-tests/uniwidth/test-uc_width2.c new file mode 100644 index 0000000..d088cf3 --- /dev/null +++ b/gnulib-tests/uniwidth/test-uc_width2.c @@ -0,0 +1,86 @@ +/* Test of uc_width() function. + Copyright (C) 2007-2022 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2008. */ + +#include <config.h> + +#include "uniwidth.h" + +#include <stdio.h> + +#include "macros.h" + +/* One of 0, '0', '1', 'A', '2'. */ +static char current_width; +/* The interval for which the current_width holds. */ +static ucs4_t current_start; +static ucs4_t current_end; + +static void +finish_interval (void) +{ + if (current_width != 0) + { + if (current_start == current_end) + printf ("%04X\t\t%c\n", (unsigned) current_start, current_width); + else + printf ("%04X..%04X\t%c\n", (unsigned) current_start, + (unsigned) current_end, current_width); + current_width = 0; + } +} + +static void +add_to_interval (ucs4_t uc, char width) +{ + if (current_width == width && uc == current_end + 1) + current_end = uc; + else + { + finish_interval (); + current_width = width; + current_start = current_end = uc; + } +} + +int +main () +{ + ucs4_t uc; + + for (uc = 0; uc < 0x110000; uc++) + { + int w1 = uc_width (uc, "UTF-8"); + int w2 = uc_width (uc, "GBK"); + char width = + (w1 == 0 && w2 == 0 ? '0' : + w1 == 1 && w2 == 1 ? '1' : + w1 == 1 && w2 == 2 ? 'A' : + w1 == 2 && w2 == 2 ? '2' : + 0); + if (width == 0) + { + /* uc must be a control character. */ + ASSERT (w1 < 0 && w2 < 0); + } + else + add_to_interval (uc, width); + } + finish_interval (); + + return 0; +} diff --git a/gnulib-tests/uniwidth/test-uc_width2.sh b/gnulib-tests/uniwidth/test-uc_width2.sh new file mode 100755 index 0000000..c426344 --- /dev/null +++ b/gnulib-tests/uniwidth/test-uc_width2.sh @@ -0,0 +1,921 @@ +#!/bin/sh + +tmpfiles="" +trap 'rm -fr $tmpfiles' 1 2 3 15 + +tmpfiles="$tmpfiles uc_width.out" +${CHECKER} ./test-uc_width2${EXEEXT} | LC_ALL=C tr -d '\r' > uc_width.out + +tmpfiles="$tmpfiles uc_width.ok" +cat > uc_width.ok <<\EOF +0000 0 +0020..007E 1 +00A0 1 +00A1..00AC A +00AD 0 +00AE..02FF A +0300..036F 0 +0370..0482 A +0483..0489 0 +048A..0590 A +0591..05BD 0 +05BE A +05BF 0 +05C0 A +05C1..05C2 0 +05C3 A +05C4..05C5 0 +05C6 A +05C7 0 +05C8..05FF A +0600..0605 0 +0606..060F A +0610..061A 0 +061B A +061C 0 +061D..064A A +064B..065F 0 +0660..066F A +0670 0 +0671..06D5 A +06D6..06DD 0 +06DE A +06DF..06E4 0 +06E5..06E6 A +06E7..06E8 0 +06E9 A +06EA..06ED 0 +06EE..070E A +070F 0 +0710 A +0711 0 +0712..072F A +0730..074A 0 +074B..07A5 A +07A6..07B0 0 +07B1..07EA A +07EB..07F3 0 +07F4..07FC A +07FD 0 +07FE..0815 A +0816..0819 0 +081A A +081B..0823 0 +0824 A +0825..0827 0 +0828 A +0829..082D 0 +082E..0858 A +0859..085B 0 +085C..088F A +0890..0891 0 +0892..0897 A +0898..089F 0 +08A0..08C9 A +08CA..0902 0 +0903..0939 A +093A 0 +093B A +093C 0 +093D..0940 A +0941..0948 0 +0949..094C A +094D 0 +094E..0950 A +0951..0957 0 +0958..0961 A +0962..0963 0 +0964..0980 A +0981 0 +0982..09BB A +09BC 0 +09BD..09C0 A +09C1..09C4 0 +09C5..09CC A +09CD 0 +09CE..09E1 A +09E2..09E3 0 +09E4..09FD A +09FE 0 +09FF..0A00 A +0A01..0A02 0 +0A03..0A3B A +0A3C 0 +0A3D..0A40 A +0A41..0A42 0 +0A43..0A46 A +0A47..0A48 0 +0A49..0A4A A +0A4B..0A4D 0 +0A4E..0A50 A +0A51 0 +0A52..0A6F A +0A70..0A71 0 +0A72..0A74 A +0A75 0 +0A76..0A80 A +0A81..0A82 0 +0A83..0ABB A +0ABC 0 +0ABD..0AC0 A +0AC1..0AC5 0 +0AC6 A +0AC7..0AC8 0 +0AC9..0ACC A +0ACD 0 +0ACE..0AE1 A +0AE2..0AE3 0 +0AE4..0AF9 A +0AFA..0AFF 0 +0B00 A +0B01 0 +0B02..0B3B A +0B3C 0 +0B3D..0B3E A +0B3F 0 +0B40 A +0B41..0B44 0 +0B45..0B4C A +0B4D 0 +0B4E..0B54 A +0B55..0B56 0 +0B57..0B61 A +0B62..0B63 0 +0B64..0B81 A +0B82 0 +0B83..0BBF A +0BC0 0 +0BC1..0BCC A +0BCD 0 +0BCE..0BFF A +0C00 0 +0C01..0C03 A +0C04 0 +0C05..0C3B A +0C3C 0 +0C3D A +0C3E..0C40 0 +0C41..0C45 A +0C46..0C48 0 +0C49 A +0C4A..0C4D 0 +0C4E..0C54 A +0C55..0C56 0 +0C57..0C61 A +0C62..0C63 0 +0C64..0C80 A +0C81 0 +0C82..0CBB A +0CBC 0 +0CBD..0CCB A +0CCC..0CCD 0 +0CCE..0CE1 A +0CE2..0CE3 0 +0CE4..0CFF A +0D00..0D01 0 +0D02..0D3A A +0D3B..0D3C 0 +0D3D..0D40 A +0D41..0D44 0 +0D45..0D4C A +0D4D 0 +0D4E..0D61 A +0D62..0D63 0 +0D64..0D80 A +0D81 0 +0D82..0DC9 A +0DCA 0 +0DCB..0DD1 A +0DD2..0DD4 0 +0DD5 A +0DD6 0 +0DD7..0E30 A +0E31 0 +0E32..0E33 A +0E34..0E3A 0 +0E3B..0E46 A +0E47..0E4E 0 +0E4F..0EB0 A +0EB1 0 +0EB2..0EB3 A +0EB4..0EBC 0 +0EBD..0EC7 A +0EC8..0ECD 0 +0ECE..0F17 A +0F18..0F19 0 +0F1A..0F34 A +0F35 0 +0F36 A +0F37 0 +0F38 A +0F39 0 +0F3A..0F70 A +0F71..0F7E 0 +0F7F A +0F80..0F84 0 +0F85 A +0F86..0F87 0 +0F88..0F8C A +0F8D..0F97 0 +0F98 A +0F99..0FBC 0 +0FBD..0FC5 A +0FC6 0 +0FC7..102C A +102D..1030 0 +1031 A +1032..1037 0 +1038 A +1039..103A 0 +103B..103C A +103D..103E 0 +103F..1057 A +1058..1059 0 +105A..105D A +105E..1060 0 +1061..1070 A +1071..1074 0 +1075..1081 A +1082 0 +1083..1084 A +1085..1086 0 +1087..108C A +108D 0 +108E..109C A +109D 0 +109E..10FF A +1100..115F 2 +1160..11FF 0 +1200..135C A +135D..135F 0 +1360..1711 A +1712..1714 0 +1715..1731 A +1732..1733 0 +1734..1751 A +1752..1753 0 +1754..1771 A +1772..1773 0 +1774..17B3 A +17B4..17B5 0 +17B6 A +17B7..17BD 0 +17BE..17C5 A +17C6 0 +17C7..17C8 A +17C9..17D3 0 +17D4..17DC A +17DD 0 +17DE..180A A +180B..180F 0 +1810..1884 A +1885..1886 0 +1887..18A8 A +18A9 0 +18AA..191F A +1920..1922 0 +1923..1926 A +1927..1928 0 +1929..1931 A +1932 0 +1933..1938 A +1939..193B 0 +193C..1A16 A +1A17..1A18 0 +1A19..1A1A A +1A1B 0 +1A1C..1A55 A +1A56 0 +1A57 A +1A58..1A5E 0 +1A5F A +1A60 0 +1A61 A +1A62 0 +1A63..1A64 A +1A65..1A6C 0 +1A6D..1A72 A +1A73..1A7C 0 +1A7D..1A7E A +1A7F 0 +1A80..1AAF A +1AB0..1ACE 0 +1ACF..1AFF A +1B00..1B03 0 +1B04..1B33 A +1B34 0 +1B35 A +1B36..1B3A 0 +1B3B A +1B3C 0 +1B3D..1B41 A +1B42 0 +1B43..1B6A A +1B6B..1B73 0 +1B74..1B7F A +1B80..1B81 0 +1B82..1BA1 A +1BA2..1BA5 0 +1BA6..1BA7 A +1BA8..1BA9 0 +1BAA A +1BAB..1BAD 0 +1BAE..1BE5 A +1BE6 0 +1BE7 A +1BE8..1BE9 0 +1BEA..1BEC A +1BED 0 +1BEE A +1BEF..1BF1 0 +1BF2..1C2B A +1C2C..1C33 0 +1C34..1C35 A +1C36..1C37 0 +1C38..1CCF A +1CD0..1CD2 0 +1CD3 A +1CD4..1CE0 0 +1CE1 A +1CE2..1CE8 0 +1CE9..1CEC A +1CED 0 +1CEE..1CF3 A +1CF4 0 +1CF5..1CF7 A +1CF8..1CF9 0 +1CFA..1DBF A +1DC0..1DFF 0 +1E00..200A A +200B..200F 0 +2010..2029 A +202A..202E 0 +202F..205F A +2060..2064 0 +2065 A +2066..206F 0 +2070..20A8 A +20A9 1 +20AA..20CF A +20D0..20F0 0 +20F1..2319 A +231A..231B 2 +231C..2328 A +2329..232A 2 +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 +2D80..2DDF A +2DE0..2DFF 0 +2E00..2E7F A +2E80..3029 2 +302A..302D 0 +302E..303E 2 +303F A +3040..3098 2 +3099..309A 0 +309B..3247 2 +3248..324F A +3250..4DBF 2 +4DC0..4DFF A +4E00..A4CF 2 +A4D0..A66E A +A66F..A672 0 +A673 A +A674..A67D 0 +A67E..A69D A +A69E..A69F 0 +A6A0..A6EF A +A6F0..A6F1 0 +A6F2..A801 A +A802 0 +A803..A805 A +A806 0 +A807..A80A A +A80B 0 +A80C..A824 A +A825..A826 0 +A827..A82B A +A82C 0 +A82D..A8C3 A +A8C4..A8C5 0 +A8C6..A8DF A +A8E0..A8F1 0 +A8F2..A8FE A +A8FF 0 +A900..A925 A +A926..A92D 0 +A92E..A946 A +A947..A951 0 +A952..A95F A +A960..A97C 2 +A97D..A97F A +A980..A982 0 +A983..A9B2 A +A9B3 0 +A9B4..A9B5 A +A9B6..A9B9 0 +A9BA..A9BB A +A9BC..A9BD 0 +A9BE..A9E4 A +A9E5 0 +A9E6..AA28 A +AA29..AA2E 0 +AA2F..AA30 A +AA31..AA32 0 +AA33..AA34 A +AA35..AA36 0 +AA37..AA42 A +AA43 0 +AA44..AA4B A +AA4C 0 +AA4D..AA7B A +AA7C 0 +AA7D..AAAF A +AAB0 0 +AAB1 A +AAB2..AAB4 0 +AAB5..AAB6 A +AAB7..AAB8 0 +AAB9..AABD A +AABE..AABF 0 +AAC0 A +AAC1 0 +AAC2..AAEB A +AAEC..AAED 0 +AAEE..AAF5 A +AAF6 0 +AAF7..ABE4 A +ABE5 0 +ABE6..ABE7 A +ABE8 0 +ABE9..ABEC A +ABED 0 +ABEE..ABFF A +AC00..D7A3 2 +D7A4..D7AF A +D7B0..D7C6 0 +D7C7..D7CA A +D7CB..D7FB 0 +D7FC..F8FF A +F900..FAFF 2 +FB00..FB1D A +FB1E 0 +FB1F..FDFF A +FE00..FE0F 0 +FE10..FE1F 2 +FE20..FE2F 0 +FE30..FE6F 2 +FE70..FEFE A +FEFF 0 +FF00..FF60 2 +FF61..FFDF 1 +FFE0..FFE6 2 +FFE7..FFF8 1 +FFF9..FFFB 0 +FFFC..101FC 1 +101FD 0 +101FE..102DF 1 +102E0 0 +102E1..10375 1 +10376..1037A 0 +1037B..10A00 1 +10A01..10A03 0 +10A04 1 +10A05..10A06 0 +10A07..10A0B 1 +10A0C..10A0F 0 +10A10..10A37 1 +10A38..10A3A 0 +10A3B..10A3E 1 +10A3F 0 +10A40..10AE4 1 +10AE5..10AE6 0 +10AE7..10D23 1 +10D24..10D27 0 +10D28..10EAA 1 +10EAB..10EAC 0 +10EAD..10F45 1 +10F46..10F50 0 +10F51..10F81 1 +10F82..10F85 0 +10F86..11000 1 +11001 0 +11002..11037 1 +11038..11046 0 +11047..1106F 1 +11070 0 +11071..11072 1 +11073..11074 0 +11075..1107E 1 +1107F..11081 0 +11082..110B2 1 +110B3..110B6 0 +110B7..110B8 1 +110B9..110BA 0 +110BB..110BC 1 +110BD 0 +110BE..110C1 1 +110C2 0 +110C3..110CC 1 +110CD 0 +110CE..110FF 1 +11100..11102 0 +11103..11126 1 +11127..1112B 0 +1112C 1 +1112D..11134 0 +11135..11172 1 +11173 0 +11174..1117F 1 +11180..11181 0 +11182..111B5 1 +111B6..111BE 0 +111BF..111C8 1 +111C9..111CC 0 +111CD..111CE 1 +111CF 0 +111D0..1122E 1 +1122F..11231 0 +11232..11233 1 +11234 0 +11235 1 +11236..11237 0 +11238..1123D 1 +1123E 0 +1123F..112DE 1 +112DF 0 +112E0..112E2 1 +112E3..112EA 0 +112EB..112FF 1 +11300..11301 0 +11302..1133A 1 +1133B..1133C 0 +1133D..1133F 1 +11340 0 +11341..11365 1 +11366..1136C 0 +1136D..1136F 1 +11370..11374 0 +11375..11437 1 +11438..1143F 0 +11440..11441 1 +11442..11444 0 +11445 1 +11446 0 +11447..1145D 1 +1145E 0 +1145F..114B2 1 +114B3..114B8 0 +114B9 1 +114BA 0 +114BB..114BE 1 +114BF..114C0 0 +114C1 1 +114C2..114C3 0 +114C4..115B1 1 +115B2..115B5 0 +115B6..115BB 1 +115BC..115BD 0 +115BE 1 +115BF..115C0 0 +115C1..115DB 1 +115DC..115DD 0 +115DE..11632 1 +11633..1163A 0 +1163B..1163C 1 +1163D 0 +1163E 1 +1163F..11640 0 +11641..116AA 1 +116AB 0 +116AC 1 +116AD 0 +116AE..116AF 1 +116B0..116B5 0 +116B6 1 +116B7 0 +116B8..1171C 1 +1171D..1171F 0 +11720..11721 1 +11722..11725 0 +11726 1 +11727..1172B 0 +1172C..1182E 1 +1182F..11837 0 +11838 1 +11839..1183A 0 +1183B..1193A 1 +1193B..1193C 0 +1193D 1 +1193E 0 +1193F..11942 1 +11943 0 +11944..119D3 1 +119D4..119D7 0 +119D8..119D9 1 +119DA..119DB 0 +119DC..119DF 1 +119E0 0 +119E1..11A00 1 +11A01..11A06 0 +11A07..11A08 1 +11A09..11A0A 0 +11A0B..11A32 1 +11A33..11A38 0 +11A39..11A3A 1 +11A3B..11A3E 0 +11A3F..11A46 1 +11A47 0 +11A48..11A50 1 +11A51..11A56 0 +11A57..11A58 1 +11A59..11A5B 0 +11A5C..11A89 1 +11A8A..11A96 0 +11A97 1 +11A98..11A99 0 +11A9A..11C2F 1 +11C30..11C36 0 +11C37 1 +11C38..11C3D 0 +11C3E..11C91 1 +11C92..11CA7 0 +11CA8..11CA9 1 +11CAA..11CB0 0 +11CB1 1 +11CB2..11CB3 0 +11CB4 1 +11CB5..11CB6 0 +11CB7..11D30 1 +11D31..11D36 0 +11D37..11D39 1 +11D3A 0 +11D3B 1 +11D3C..11D3D 0 +11D3E 1 +11D3F..11D45 0 +11D46 1 +11D47 0 +11D48..11D8F 1 +11D90..11D91 0 +11D92..11D94 1 +11D95 0 +11D96 1 +11D97 0 +11D98..11EF2 1 +11EF3..11EF4 0 +11EF5..1342F 1 +13430..13438 0 +13439..16AEF 1 +16AF0..16AF4 0 +16AF5..16B2F 1 +16B30..16B36 0 +16B37..16F4E 1 +16F4F 0 +16F50..16F8E 1 +16F8F..16F92 0 +16F93..16FDF 1 +16FE0..16FE3 2 +16FE4 0 +16FE5..16FEF 1 +16FF0..16FF1 2 +16FF2..16FFF 1 +17000..187F7 2 +187F8..187FF 1 +18800..18CD5 2 +18CD6..18CFF 1 +18D00..18D08 2 +18D09..1AFEF 1 +1AFF0..1AFF3 2 +1AFF4 1 +1AFF5..1AFFB 2 +1AFFC 1 +1AFFD..1AFFE 2 +1AFFF 1 +1B000..1B122 2 +1B123..1B14F 1 +1B150..1B152 2 +1B153..1B163 1 +1B164..1B167 2 +1B168..1B16F 1 +1B170..1B2FB 2 +1B2FC..1BC9C 1 +1BC9D..1BC9E 0 +1BC9F 1 +1BCA0..1BCA3 0 +1BCA4..1CEFF 1 +1CF00..1CF2D 0 +1CF2E..1CF2F 1 +1CF30..1CF46 0 +1CF47..1D166 1 +1D167..1D169 0 +1D16A..1D172 1 +1D173..1D182 0 +1D183..1D184 1 +1D185..1D18B 0 +1D18C..1D1A9 1 +1D1AA..1D1AD 0 +1D1AE..1D241 1 +1D242..1D244 0 +1D245..1D9FF 1 +1DA00..1DA36 0 +1DA37..1DA3A 1 +1DA3B..1DA6C 0 +1DA6D..1DA74 1 +1DA75 0 +1DA76..1DA83 1 +1DA84 0 +1DA85..1DA9A 1 +1DA9B..1DA9F 0 +1DAA0 1 +1DAA1..1DAAF 0 +1DAB0..1DFFF 1 +1E000..1E006 0 +1E007 1 +1E008..1E018 0 +1E019..1E01A 1 +1E01B..1E021 0 +1E022 1 +1E023..1E024 0 +1E025 1 +1E026..1E02A 0 +1E02B..1E12F 1 +1E130..1E136 0 +1E137..1E2AD 1 +1E2AE 0 +1E2AF..1E2EB 1 +1E2EC..1E2EF 0 +1E2F0..1E8CF 1 +1E8D0..1E8D6 0 +1E8D7..1E943 1 +1E944..1E94A 0 +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..1F6D4 1 +1F6D5..1F6D7 2 +1F6D8..1F6DC 1 +1F6DD..1F6DF 2 +1F6E0..1F6EA 1 +1F6EB..1F6EC 2 +1F6ED..1F6F3 1 +1F6F4..1F6FC 2 +1F6FD..1F7DF 1 +1F7E0..1F7EB 2 +1F7EC..1F7EF 1 +1F7F0 2 +1F7F1..1F90B 1 +1F90C..1F93A 2 +1F93B 1 +1F93C..1F945 2 +1F946 1 +1F947..1F9FF 2 +1FA00..1FA6F 1 +1FA70..1FA74 2 +1FA75..1FA77 1 +1FA78..1FA7C 2 +1FA7D..1FA7F 1 +1FA80..1FA86 2 +1FA87..1FA8F 1 +1FA90..1FAAC 2 +1FAAD..1FAAF 1 +1FAB0..1FABA 2 +1FABB..1FABF 1 +1FAC0..1FAC5 2 +1FAC6..1FACF 1 +1FAD0..1FAD9 2 +1FADA..1FADF 1 +1FAE0..1FAE7 2 +1FAE8..1FAEF 1 +1FAF0..1FAF6 2 +1FAF7..1FFFF 1 +20000..3FFFF 2 +40000..E0000 1 +E0001 0 +E0002..E001F 1 +E0020..E007F 0 +E0080..E00FF 1 +E0100..E01EF 0 +E01F0..10FFFF 1 +EOF + +: ${DIFF=diff} +${DIFF} uc_width.ok uc_width.out +result=$? + +rm -fr $tmpfiles + +exit $result |