summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2000-11-02 07:51:38 +0000
committerUlrich Drepper <drepper@redhat.com>2000-11-02 07:51:38 +0000
commit18a3a9a3b4f00ed773c452abc7ded7c56cc0859c (patch)
tree005769ffbbf01bb893066cbfba8cdb989e384e43
parent275cdda0e2bf9bed3d7e873e2d038d6ff1a78c75 (diff)
Update.
* iconvdata/TESTS: Add entries for IBM856, IBM930, IBM933, IBM935, IBM937, IBM939, and IBM1046. * iconvdata/testdata/IBM1046: New file. * iconvdata/testdata/IBM930..UTF8: New file. * iconvdata/testdata/IBM1046..UTF8: New file. * iconvdata/testdata/IBM933: New file. * iconvdata/testdata/IBM935: New file. * iconvdata/testdata/IBM937: New file. * iconvdata/testdata/IBM856..UTF8: New file. * iconvdata/testdata/IBM939: New file. * iconvdata/testdata/IBM933..UTF8: New file. * iconvdata/testdata/IBM935..UTF8: New file. * iconvdata/testdata/IBM930: New file. * iconvdata/testdata/IBM856: New file. * iconvdata/testdata/IBM937..UTF8: New file. * iconvdata/testdata/IBM939..UTF8: New file. Contributed by Masahide Washizawa <washi@yamato.ibm.co.jp>. 2000-11-01 Martin Buchholz <martin@xemacs.org> * manual/memory.texi (Hooks for Malloc): Fix `caller' arg docs to agree with implementation. 2000-11-01 Ulrich Drepper <drepper@redhat.com>
-rw-r--r--ChangeLog25
-rw-r--r--iconvdata/TESTS7
-rwxr-xr-xiconvdata/run-iconv-test.sh4
-rw-r--r--iconvdata/testdata/IBM104614
-rw-r--r--iconvdata/testdata/IBM1046..UTF814
-rw-r--r--iconvdata/testdata/IBM85611
-rw-r--r--iconvdata/testdata/IBM856..UTF811
-rw-r--r--iconvdata/testdata/IBM930bin0 -> 59775 bytes
-rw-r--r--iconvdata/testdata/IBM930..UTF8bin0 -> 48136 bytes
-rw-r--r--iconvdata/testdata/IBM933bin0 -> 55021 bytes
-rw-r--r--iconvdata/testdata/IBM933..UTF8bin0 -> 44229 bytes
-rw-r--r--iconvdata/testdata/IBM935bin0 -> 47825 bytes
-rw-r--r--iconvdata/testdata/IBM935..UTF8bin0 -> 38355 bytes
-rw-r--r--iconvdata/testdata/IBM937bin0 -> 102085 bytes
-rw-r--r--iconvdata/testdata/IBM937..UTF8bin0 -> 81911 bytes
-rw-r--r--iconvdata/testdata/IBM939bin0 -> 59775 bytes
-rw-r--r--iconvdata/testdata/IBM939..UTF8bin0 -> 48136 bytes
-rw-r--r--intl/translit.po4
-rw-r--r--intl/tst-translit.c10
-rw-r--r--locale/C-translit.h261
-rw-r--r--locale/C-translit.h.in500
-rw-r--r--locale/gen-translit.pl2
-rw-r--r--manual/memory.texi33
23 files changed, 784 insertions, 112 deletions
diff --git a/ChangeLog b/ChangeLog
index ef46b97215..fd9601e5ec 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,30 @@
2000-11-01 Ulrich Drepper <drepper@redhat.com>
+ * iconvdata/TESTS: Add entries for IBM856, IBM930, IBM933, IBM935,
+ IBM937, IBM939, and IBM1046.
+ * iconvdata/testdata/IBM1046: New file.
+ * iconvdata/testdata/IBM930..UTF8: New file.
+ * iconvdata/testdata/IBM1046..UTF8: New file.
+ * iconvdata/testdata/IBM933: New file.
+ * iconvdata/testdata/IBM935: New file.
+ * iconvdata/testdata/IBM937: New file.
+ * iconvdata/testdata/IBM856..UTF8: New file.
+ * iconvdata/testdata/IBM939: New file.
+ * iconvdata/testdata/IBM933..UTF8: New file.
+ * iconvdata/testdata/IBM935..UTF8: New file.
+ * iconvdata/testdata/IBM930: New file.
+ * iconvdata/testdata/IBM856: New file.
+ * iconvdata/testdata/IBM937..UTF8: New file.
+ * iconvdata/testdata/IBM939..UTF8: New file.
+ Contributed by Masahide Washizawa <washi@yamato.ibm.co.jp>.
+
+2000-11-01 Martin Buchholz <martin@xemacs.org>
+
+ * manual/memory.texi (Hooks for Malloc): Fix `caller' arg docs to
+ agree with implementation.
+
+2000-11-01 Ulrich Drepper <drepper@redhat.com>
+
* sysdeps/unix/sysv/linux/bits/time.h (CLK_TCK): Cast sysconf result
to __clock_t.
* sysdeps/unix/sysv/linux/alpha/bits/time.h: Likewise.
diff --git a/iconvdata/TESTS b/iconvdata/TESTS
index eb3776537a..cbdae2ea44 100644
--- a/iconvdata/TESTS
+++ b/iconvdata/TESTS
@@ -88,3 +88,10 @@ EUC-TW EUC-TW Y UTF8
GBK GBK Y UTF8
BIG5HKSCS BIG5HKSCS Y UTF8
UTF-7 UTF-7 N UTF8
+IBM856 IBM856 N UTF8
+IBM930 IBM930 N UTF8
+IBM933 IBM933 N UTF8
+IBM935 IBM935 N UTF8
+IBM937 IBM937 N UTF8
+IBM939 IBM939 N UTF8
+IBM1046 IBM1046 Y UTF8
diff --git a/iconvdata/run-iconv-test.sh b/iconvdata/run-iconv-test.sh
index a000b68b14..532006cdcb 100755
--- a/iconvdata/run-iconv-test.sh
+++ b/iconvdata/run-iconv-test.sh
@@ -84,8 +84,8 @@ while read from to subset targets; do
rm -f $temp1 $temp2
# Now test some bigger text, entirely in ASCII. If ASCII is no subset
- # of the coded character set we test we convert the test to this
- # coded character set. Otherwise we convert to all the TARGETS.
+ # of the coded character set we convert the text to this coded character
+ # set. Otherwise we convert to all the TARGETS.
if test $subset = Y; then
echo $ac_n " suntzu: $from -> $t -> $to $ac_c"
$PROG -f $from -t $t testdata/suntzus |
diff --git a/iconvdata/testdata/IBM1046 b/iconvdata/testdata/IBM1046
new file mode 100644
index 0000000000..0a43e9523a
--- /dev/null
+++ b/iconvdata/testdata/IBM1046
@@ -0,0 +1,14 @@
+ ! " # $ % & ' ( ) * + , - . / 0
+1 2 3 4 5 6 7 8 9 : ; < = > ? @ A
+B C D E F G H I J K L M N O P Q R
+S T U V W X Y Z [ \ ] ^ _ ` a b c
+d e f g h i j k l m n o p q r s t
+u v w x y z { | } ~ 
+
+
+
+
+
+
+
+
diff --git a/iconvdata/testdata/IBM1046..UTF8 b/iconvdata/testdata/IBM1046..UTF8
new file mode 100644
index 0000000000..ed2679759b
--- /dev/null
+++ b/iconvdata/testdata/IBM1046..UTF8
@@ -0,0 +1,14 @@
+ ! " # $ % & ' ( ) * + , - . / 0
+1 2 3 4 5 6 7 8 9 : ; < = > ? @ A
+B C D E F G H I J K L M N O P Q R
+S T U V W X Y Z [ \ ] ^ _ ` a b c
+d e f g h i j k l m n o p q r s t
+u v w x y z { | } ~  ﺈ × ÷ س ش ص
+ض ﹱ ˆ ■ │ ─ ┐ ┌ └ ┘ ﹹ ﹻ ﹽ ﹿ ﹷ ﺊ ﻰ
+ﻳ ﻲ ﻎ ﻏ ﻐ ﻶ ﻸ ﻺ ﻼ   ﺂ ﺄ ﺈ ¤ ﺎ ﺋ ﺑ
+ﺗ ﺛ ﺟ ﺣ ، ­ ﺧ ﺳ ٠ ١ ٢ ٣ ٤ ٥ ٦ ٧ ٨
+٩ ﺷ ؛ ﺻ ﺿ ﻊ ؟ ﻋ ء آ أ ؤ إ ئ ا ب ة
+ت ث ج ح خ د ذ ر ز س ش ص ض ط ظ ع غ
+ﻌ ﺂ ﺄ ﺎ ﻓ ـ ف ق ك ل م ن ه و ى ي ً
+ٌ ٍ َ ُ ِ ّ ْ ﻗ ﻛ ﻟ ​ ﻵ ﻷ ﻹ ﻻ ﻣ ﻧ
+ﻬ ﻩ
diff --git a/iconvdata/testdata/IBM856 b/iconvdata/testdata/IBM856
new file mode 100644
index 0000000000..83af6682f1
--- /dev/null
+++ b/iconvdata/testdata/IBM856
@@ -0,0 +1,11 @@
+ ! " # $ % & ' ( ) * + , - . / 0
+1 2 3 4 5 6 7 8 9 : ; < = > ? @ A
+B C D E F G H I J K L M N O P Q R
+S T U V W X Y Z [ \ ] ^ _ ` a b c
+d e f g h i j k l m n o p q r s t
+u v w x y z { | } ~ 
+
+
+
+
+
diff --git a/iconvdata/testdata/IBM856..UTF8 b/iconvdata/testdata/IBM856..UTF8
new file mode 100644
index 0000000000..080fe1d679
--- /dev/null
+++ b/iconvdata/testdata/IBM856..UTF8
@@ -0,0 +1,11 @@
+ ! " # $ % & ' ( ) * + , - . / 0
+1 2 3 4 5 6 7 8 9 : ; < = > ? @ A
+B C D E F G H I J K L M N O P Q R
+S T U V W X Y Z [ \ ] ^ _ ` a b c
+d e f g h i j k l m n o p q r s t
+u v w x y z { | } ~  א ב ג ד ה ו
+ז ח ט י ך כ ל ם מ ן נ ס ע ף פ ץ צ
+ק ר ש ת £ × ® ¬ ½ ¼ « » ░ ▒ ▓ │ ┤
+© ╣ ║ ╗ ╝ ¢ ¥ ┐ └ ┴ ┬ ├ ─ ┼ ╚ ╔ ╩
+╦ ╠ ═ ╬ ¤ ┘ ┌ █ ▄ ¦ ▀ µ ‾ ´ ­ ± ‗
+¾ ¶ § ÷ ¸ ° ¨ • ¹ ³ ² ■  
diff --git a/iconvdata/testdata/IBM930 b/iconvdata/testdata/IBM930
new file mode 100644
index 0000000000..551cb60797
--- /dev/null
+++ b/iconvdata/testdata/IBM930
Binary files differ
diff --git a/iconvdata/testdata/IBM930..UTF8 b/iconvdata/testdata/IBM930..UTF8
new file mode 100644
index 0000000000..89df7f15ac
--- /dev/null
+++ b/iconvdata/testdata/IBM930..UTF8
Binary files differ
diff --git a/iconvdata/testdata/IBM933 b/iconvdata/testdata/IBM933
new file mode 100644
index 0000000000..4da0d685bf
--- /dev/null
+++ b/iconvdata/testdata/IBM933
Binary files differ
diff --git a/iconvdata/testdata/IBM933..UTF8 b/iconvdata/testdata/IBM933..UTF8
new file mode 100644
index 0000000000..025c6285e1
--- /dev/null
+++ b/iconvdata/testdata/IBM933..UTF8
Binary files differ
diff --git a/iconvdata/testdata/IBM935 b/iconvdata/testdata/IBM935
new file mode 100644
index 0000000000..4a905ee27e
--- /dev/null
+++ b/iconvdata/testdata/IBM935
Binary files differ
diff --git a/iconvdata/testdata/IBM935..UTF8 b/iconvdata/testdata/IBM935..UTF8
new file mode 100644
index 0000000000..2fc263d52a
--- /dev/null
+++ b/iconvdata/testdata/IBM935..UTF8
Binary files differ
diff --git a/iconvdata/testdata/IBM937 b/iconvdata/testdata/IBM937
new file mode 100644
index 0000000000..58bd2632c4
--- /dev/null
+++ b/iconvdata/testdata/IBM937
Binary files differ
diff --git a/iconvdata/testdata/IBM937..UTF8 b/iconvdata/testdata/IBM937..UTF8
new file mode 100644
index 0000000000..61282f129f
--- /dev/null
+++ b/iconvdata/testdata/IBM937..UTF8
Binary files differ
diff --git a/iconvdata/testdata/IBM939 b/iconvdata/testdata/IBM939
new file mode 100644
index 0000000000..9c10f9e416
--- /dev/null
+++ b/iconvdata/testdata/IBM939
Binary files differ
diff --git a/iconvdata/testdata/IBM939..UTF8 b/iconvdata/testdata/IBM939..UTF8
new file mode 100644
index 0000000000..89df7f15ac
--- /dev/null
+++ b/iconvdata/testdata/IBM939..UTF8
Binary files differ
diff --git a/intl/translit.po b/intl/translit.po
index 0dc380f525..5df5d0d064 100644
--- a/intl/translit.po
+++ b/intl/translit.po
@@ -3,7 +3,7 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-1\n"
msgid "test"
-msgstr ""
+msgstr "߻"
msgid "onemore"
-msgstr "ssdf"
+msgstr "*="
diff --git a/intl/tst-translit.c b/intl/tst-translit.c
index f12d99bc96..8e4e6ca26d 100644
--- a/intl/tst-translit.c
+++ b/intl/tst-translit.c
@@ -39,11 +39,11 @@ main (void)
puts (s); \
result |= strcmp (s, exp) != 0;
- TEST ("test", "aeoeueAEUEOEss");
- TEST ("test", "aeoeueAEUEOEss");
- TEST ("onemore", "AEssdf");
- TEST ("onemore", "AEssdf");
- TEST ("test", "aeoeueAEUEOEss");
+ TEST ("test", "<<(C) AEss>>");
+ TEST ("test", "<<(C) AEss>>");
+ TEST ("onemore", "1/2*1/2=1/4");
+ TEST ("onemore", "1/2*1/2=1/4");
+ TEST ("test", "<<(C) AEss>>");
return result;
}
diff --git a/locale/C-translit.h b/locale/C-translit.h
index 2d42133b0e..09c0346636 100644
--- a/locale/C-translit.h
+++ b/locale/C-translit.h
@@ -1,21 +1,258 @@
-#define NTRANSLIT 20
+#define NTRANSLIT 425
static const uint32_t translit_from_idx[] =
{
0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22,
- 24, 26, 28, 30, 32, 34, 36, 38
+ 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46,
+ 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70,
+ 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94,
+ 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118,
+ 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142,
+ 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166,
+ 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190,
+ 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214,
+ 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238,
+ 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262,
+ 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286,
+ 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310,
+ 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, 334,
+ 336, 338, 340, 342, 344, 346, 348, 350, 352, 354, 356, 358,
+ 360, 362, 364, 366, 368, 370, 372, 374, 376, 378, 380, 382,
+ 384, 386, 388, 390, 392, 394, 396, 398, 400, 402, 404, 406,
+ 408, 410, 412, 414, 416, 418, 420, 422, 424, 426, 428, 430,
+ 432, 434, 436, 438, 440, 442, 444, 446, 448, 450, 452, 454,
+ 456, 458, 460, 462, 464, 466, 468, 470, 472, 474, 476, 478,
+ 480, 482, 484, 486, 488, 490, 492, 494, 496, 498, 500, 502,
+ 504, 506, 508, 510, 512, 514, 516, 518, 520, 522, 524, 526,
+ 528, 530, 532, 534, 536, 538, 540, 542, 544, 546, 548, 550,
+ 552, 554, 556, 558, 560, 562, 564, 566, 568, 570, 572, 574,
+ 576, 578, 580, 582, 584, 586, 588, 590, 592, 594, 596, 598,
+ 600, 602, 604, 606, 608, 610, 612, 614, 616, 618, 620, 622,
+ 624, 626, 628, 630, 632, 634, 636, 638, 640, 642, 644, 646,
+ 648, 650, 652, 654, 656, 658, 660, 662, 664, 666, 668, 670,
+ 672, 674, 676, 678, 680, 682, 684, 686, 688, 690, 692, 694,
+ 696, 698, 700, 702, 704, 706, 708, 710, 712, 714, 716, 718,
+ 720, 722, 724, 726, 728, 730, 732, 734, 736, 738, 740, 742,
+ 744, 746, 748, 750, 752, 754, 756, 758, 760, 762, 764, 766,
+ 768, 770, 772, 774, 776, 778, 780, 782, 784, 786, 788, 790,
+ 792, 794, 796, 798, 800, 802, 804, 806, 808, 810, 812, 814,
+ 816, 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 838,
+ 840, 842, 844, 846, 848
};
static const wchar_t translit_from_tbl[] =
- L"\xa9" L"\0" L"\xab" L"\0" L"\xae" L"\0" L"\xbb" L"\0" L"\xbc" L"\0"
- L"\xbd" L"\0" L"\xbe" L"\0" L"\xc4" L"\0" L"\xc5" L"\0" L"\xc6" L"\0"
- L"\xd6" L"\0" L"\xdc" L"\0" L"\xdf" L"\0" L"\xe4" L"\0" L"\xe5" L"\0"
- L"\xe6" L"\0" L"\xf6" L"\0" L"\xfc" L"\0" L"\x201c" L"\0" L"\x201d";
+ L"\x00a0" L"\0" L"\x00a9" L"\0" L"\x00ab" L"\0" L"\x00ad" L"\0" L"\x00ae"
+ L"\0" L"\x00bb" L"\0" L"\x00bc" L"\0" L"\x00bd" L"\0" L"\x00be" L"\0"
+ L"\x00c6" L"\0" L"\x00df" L"\0" L"\x00e6" L"\0" L"\x0132" L"\0" L"\x0133"
+ L"\0" L"\x017f" L"\0" L"\x01c7" L"\0" L"\x01c8" L"\0" L"\x01c9" L"\0"
+ L"\x01ca" L"\0" L"\x01cb" L"\0" L"\x01cc" L"\0" L"\x01f1" L"\0" L"\x01f2"
+ L"\0" L"\x01f3" L"\0" L"\x02dc" L"\0" L"\x2002" L"\0" L"\x2003" L"\0"
+ L"\x2004" L"\0" L"\x2005" L"\0" L"\x2006" L"\0" L"\x2008" L"\0" L"\x2009"
+ L"\0" L"\x200a" L"\0" L"\x2010" L"\0" L"\x2011" L"\0" L"\x2012" L"\0"
+ L"\x2013" L"\0" L"\x2014" L"\0" L"\x2015" L"\0" L"\x2018" L"\0" L"\x2019"
+ L"\0" L"\x201a" L"\0" L"\x201b" L"\0" L"\x201c" L"\0" L"\x201d" L"\0"
+ L"\x201e" L"\0" L"\x201f" L"\0" L"\x2020" L"\0" L"\x2022" L"\0" L"\x2024"
+ L"\0" L"\x2025" L"\0" L"\x2026" L"\0" L"\x2039" L"\0" L"\x203a" L"\0"
+ L"\x203c" L"\0" L"\x2048" L"\0" L"\x2049" L"\0" L"\x20a8" L"\0" L"\x20ac"
+ L"\0" L"\x2100" L"\0" L"\x2101" L"\0" L"\x2102" L"\0" L"\x2105" L"\0"
+ L"\x2106" L"\0" L"\x210a" L"\0" L"\x210b" L"\0" L"\x210c" L"\0" L"\x210d"
+ L"\0" L"\x210e" L"\0" L"\x2110" L"\0" L"\x2111" L"\0" L"\x2112" L"\0"
+ L"\x2113" L"\0" L"\x2115" L"\0" L"\x2116" L"\0" L"\x2119" L"\0" L"\x211a"
+ L"\0" L"\x211b" L"\0" L"\x211c" L"\0" L"\x211d" L"\0" L"\x2121" L"\0"
+ L"\x2122" L"\0" L"\x2124" L"\0" L"\x2126" L"\0" L"\x2128" L"\0" L"\x212c"
+ L"\0" L"\x212d" L"\0" L"\x212f" L"\0" L"\x2130" L"\0" L"\x2131" L"\0"
+ L"\x2133" L"\0" L"\x2134" L"\0" L"\x2139" L"\0" L"\x2153" L"\0" L"\x2154"
+ L"\0" L"\x2155" L"\0" L"\x2156" L"\0" L"\x2157" L"\0" L"\x2158" L"\0"
+ L"\x2159" L"\0" L"\x215a" L"\0" L"\x215b" L"\0" L"\x215c" L"\0" L"\x215d"
+ L"\0" L"\x215e" L"\0" L"\x215f" L"\0" L"\x2160" L"\0" L"\x2161" L"\0"
+ L"\x2162" L"\0" L"\x2163" L"\0" L"\x2164" L"\0" L"\x2165" L"\0" L"\x2166"
+ L"\0" L"\x2167" L"\0" L"\x2168" L"\0" L"\x2169" L"\0" L"\x216a" L"\0"
+ L"\x216b" L"\0" L"\x216c" L"\0" L"\x216d" L"\0" L"\x216e" L"\0" L"\x216f"
+ L"\0" L"\x2170" L"\0" L"\x2171" L"\0" L"\x2172" L"\0" L"\x2173" L"\0"
+ L"\x2174" L"\0" L"\x2175" L"\0" L"\x2176" L"\0" L"\x2177" L"\0" L"\x2178"
+ L"\0" L"\x2179" L"\0" L"\x217a" L"\0" L"\x217b" L"\0" L"\x217c" L"\0"
+ L"\x217d" L"\0" L"\x217e" L"\0" L"\x217f" L"\0" L"\x2190" L"\0" L"\x2192"
+ L"\0" L"\x21d0" L"\0" L"\x21d2" L"\0" L"\x2212" L"\0" L"\x2215" L"\0"
+ L"\x2264" L"\0" L"\x2265" L"\0" L"\x226a" L"\0" L"\x226b" L"\0" L"\x2460"
+ L"\0" L"\x2461" L"\0" L"\x2462" L"\0" L"\x2463" L"\0" L"\x2464" L"\0"
+ L"\x2465" L"\0" L"\x2466" L"\0" L"\x2467" L"\0" L"\x2468" L"\0" L"\x2469"
+ L"\0" L"\x246a" L"\0" L"\x246b" L"\0" L"\x246c" L"\0" L"\x246d" L"\0"
+ L"\x246e" L"\0" L"\x246f" L"\0" L"\x2470" L"\0" L"\x2471" L"\0" L"\x2472"
+ L"\0" L"\x2473" L"\0" L"\x2474" L"\0" L"\x2475" L"\0" L"\x2476" L"\0"
+ L"\x2477" L"\0" L"\x2478" L"\0" L"\x2479" L"\0" L"\x247a" L"\0" L"\x247b"
+ L"\0" L"\x247c" L"\0" L"\x247d" L"\0" L"\x247e" L"\0" L"\x247f" L"\0"
+ L"\x2480" L"\0" L"\x2481" L"\0" L"\x2482" L"\0" L"\x2483" L"\0" L"\x2484"
+ L"\0" L"\x2485" L"\0" L"\x2486" L"\0" L"\x2487" L"\0" L"\x2488" L"\0"
+ L"\x2489" L"\0" L"\x248a" L"\0" L"\x248b" L"\0" L"\x248c" L"\0" L"\x248d"
+ L"\0" L"\x248e" L"\0" L"\x248f" L"\0" L"\x2490" L"\0" L"\x2491" L"\0"
+ L"\x2492" L"\0" L"\x2493" L"\0" L"\x2494" L"\0" L"\x2495" L"\0" L"\x2496"
+ L"\0" L"\x2497" L"\0" L"\x2498" L"\0" L"\x2499" L"\0" L"\x249a" L"\0"
+ L"\x249b" L"\0" L"\x249c" L"\0" L"\x249d" L"\0" L"\x249e" L"\0" L"\x249f"
+ L"\0" L"\x24a0" L"\0" L"\x24a1" L"\0" L"\x24a2" L"\0" L"\x24a3" L"\0"
+ L"\x24a4" L"\0" L"\x24a5" L"\0" L"\x24a6" L"\0" L"\x24a7" L"\0" L"\x24a8"
+ L"\0" L"\x24a9" L"\0" L"\x24aa" L"\0" L"\x24ab" L"\0" L"\x24ac" L"\0"
+ L"\x24ad" L"\0" L"\x24ae" L"\0" L"\x24af" L"\0" L"\x24b0" L"\0" L"\x24b1"
+ L"\0" L"\x24b2" L"\0" L"\x24b3" L"\0" L"\x24b4" L"\0" L"\x24b5" L"\0"
+ L"\x24b6" L"\0" L"\x24b7" L"\0" L"\x24b8" L"\0" L"\x24b9" L"\0" L"\x24ba"
+ L"\0" L"\x24bb" L"\0" L"\x24bc" L"\0" L"\x24bd" L"\0" L"\x24be" L"\0"
+ L"\x24bf" L"\0" L"\x24c0" L"\0" L"\x24c1" L"\0" L"\x24c2" L"\0" L"\x24c3"
+ L"\0" L"\x24c4" L"\0" L"\x24c5" L"\0" L"\x24c6" L"\0" L"\x24c7" L"\0"
+ L"\x24c8" L"\0" L"\x24c9" L"\0" L"\x24ca" L"\0" L"\x24cb" L"\0" L"\x24cc"
+ L"\0" L"\x24cd" L"\0" L"\x24ce" L"\0" L"\x24cf" L"\0" L"\x24d0" L"\0"
+ L"\x24d1" L"\0" L"\x24d2" L"\0" L"\x24d3" L"\0" L"\x24d4" L"\0" L"\x24d5"
+ L"\0" L"\x24d6" L"\0" L"\x24d7" L"\0" L"\x24d8" L"\0" L"\x24d9" L"\0"
+ L"\x24da" L"\0" L"\x24db" L"\0" L"\x24dc" L"\0" L"\x24dd" L"\0" L"\x24de"
+ L"\0" L"\x24df" L"\0" L"\x24e0" L"\0" L"\x24e1" L"\0" L"\x24e2" L"\0"
+ L"\x24e3" L"\0" L"\x24e4" L"\0" L"\x24e5" L"\0" L"\x24e6" L"\0" L"\x24e7"
+ L"\0" L"\x24e8" L"\0" L"\x24e9" L"\0" L"\x24ea" L"\0" L"\x2500" L"\0"
+ L"\x2502" L"\0" L"\x250c" L"\0" L"\x2510" L"\0" L"\x2514" L"\0" L"\x2518"
+ L"\0" L"\x251c" L"\0" L"\x2524" L"\0" L"\x252c" L"\0" L"\x2534" L"\0"
+ L"\x253c" L"\0" L"\x3000" L"\0" L"\xfb00" L"\0" L"\xfb01" L"\0" L"\xfb02"
+ L"\0" L"\xfb03" L"\0" L"\xfb04" L"\0" L"\xfb06" L"\0" L"\xfb29" L"\0"
+ L"\xfe4d" L"\0" L"\xfe4e" L"\0" L"\xfe4f" L"\0" L"\xfe50" L"\0" L"\xfe52"
+ L"\0" L"\xfe54" L"\0" L"\xfe55" L"\0" L"\xfe56" L"\0" L"\xfe57" L"\0"
+ L"\xfe59" L"\0" L"\xfe5a" L"\0" L"\xfe5b" L"\0" L"\xfe5c" L"\0" L"\xfe5f"
+ L"\0" L"\xfe60" L"\0" L"\xfe61" L"\0" L"\xfe62" L"\0" L"\xfe63" L"\0"
+ L"\xfe64" L"\0" L"\xfe65" L"\0" L"\xfe66" L"\0" L"\xfe68" L"\0" L"\xfe69"
+ L"\0" L"\xfe6a" L"\0" L"\xfe6b" L"\0" L"\xff01" L"\0" L"\xff02" L"\0"
+ L"\xff03" L"\0" L"\xff04" L"\0" L"\xff05" L"\0" L"\xff06" L"\0" L"\xff07"
+ L"\0" L"\xff08" L"\0" L"\xff09" L"\0" L"\xff0a" L"\0" L"\xff0b" L"\0"
+ L"\xff0c" L"\0" L"\xff0d" L"\0" L"\xff0e" L"\0" L"\xff0f" L"\0" L"\xff10"
+ L"\0" L"\xff11" L"\0" L"\xff12" L"\0" L"\xff13" L"\0" L"\xff14" L"\0"
+ L"\xff15" L"\0" L"\xff16" L"\0" L"\xff17" L"\0" L"\xff18" L"\0" L"\xff19"
+ L"\0" L"\xff1a" L"\0" L"\xff1b" L"\0" L"\xff1c" L"\0" L"\xff1d" L"\0"
+ L"\xff1e" L"\0" L"\xff1f" L"\0" L"\xff20" L"\0" L"\xff21" L"\0" L"\xff22"
+ L"\0" L"\xff23" L"\0" L"\xff24" L"\0" L"\xff25" L"\0" L"\xff26" L"\0"
+ L"\xff27" L"\0" L"\xff28" L"\0" L"\xff29" L"\0" L"\xff2a" L"\0" L"\xff2b"
+ L"\0" L"\xff2c" L"\0" L"\xff2d" L"\0" L"\xff2e" L"\0" L"\xff2f" L"\0"
+ L"\xff30" L"\0" L"\xff31" L"\0" L"\xff32" L"\0" L"\xff33" L"\0" L"\xff34"
+ L"\0" L"\xff35" L"\0" L"\xff36" L"\0" L"\xff37" L"\0" L"\xff38" L"\0"
+ L"\xff39" L"\0" L"\xff3a" L"\0" L"\xff3b" L"\0" L"\xff3c" L"\0" L"\xff3d"
+ L"\0" L"\xff3e" L"\0" L"\xff3f" L"\0" L"\xff40" L"\0" L"\xff41" L"\0"
+ L"\xff42" L"\0" L"\xff43" L"\0" L"\xff44" L"\0" L"\xff45" L"\0" L"\xff46"
+ L"\0" L"\xff47" L"\0" L"\xff48" L"\0" L"\xff49" L"\0" L"\xff4a" L"\0"
+ L"\xff4b" L"\0" L"\xff4c" L"\0" L"\xff4d" L"\0" L"\xff4e" L"\0" L"\xff4f"
+ L"\0" L"\xff50" L"\0" L"\xff51" L"\0" L"\xff52" L"\0" L"\xff53" L"\0"
+ L"\xff54" L"\0" L"\xff55" L"\0" L"\xff56" L"\0" L"\xff57" L"\0" L"\xff58"
+ L"\0" L"\xff59" L"\0" L"\xff5a" L"\0" L"\xff5b" L"\0" L"\xff5c" L"\0"
+ L"\xff5d" L"\0" L"\xff5e";
static const uint32_t translit_to_idx[] =
{
- 0, 5, 9, 14, 18, 23, 28, 33, 37, 41, 45, 49,
- 53, 57, 61, 65, 69, 73, 77, 80
+ 0, 3, 8, 12, 15, 20, 24, 29, 34, 39, 43, 47,
+ 51, 55, 59, 62, 66, 70, 74, 78, 82, 86, 90, 94,
+ 98, 101, 104, 107, 110, 113, 116, 119, 122, 125, 128, 131,
+ 134, 137, 140, 143, 146, 149, 152, 155, 158, 161, 165, 168,
+ 171, 174, 177, 181, 186, 189, 192, 196, 200, 204, 208, 213,
+ 218, 223, 226, 231, 236, 239, 242, 245, 248, 251, 254, 257,
+ 260, 263, 266, 270, 273, 276, 279, 282, 285, 290, 296, 299,
+ 304, 307, 310, 313, 316, 319, 322, 325, 328, 331, 336, 341,
+ 346, 351, 356, 361, 366, 371, 376, 381, 386, 391, 395, 398,
+ 402, 407, 411, 414, 418, 423, 429, 433, 436, 440, 445, 448,
+ 451, 454, 457, 460, 464, 469, 473, 476, 480, 485, 491, 495,
+ 498, 502, 507, 510, 513, 516, 519, 523, 527, 531, 535, 538,
+ 541, 545, 549, 553, 557, 562, 567, 572, 577, 582, 587, 592,
+ 597, 602, 608, 614, 620, 626, 632, 638, 644, 650, 656, 662,
+ 668, 673, 678, 683, 688, 693, 698, 703, 708, 713, 719, 725,
+ 731, 737, 743, 749, 755, 761, 767, 773, 779, 783, 787, 791,
+ 795, 799, 803, 807, 811, 815, 820, 825, 830, 835, 840, 845,
+ 850, 855, 860, 865, 870, 875, 880, 885, 890, 895, 900, 905,
+ 910, 915, 920, 925, 930, 935, 940, 945, 950, 955, 960, 965,
+ 970, 975, 980, 985, 990, 995, 1000, 1005, 1010, 1015, 1020, 1025,
+ 1030, 1035, 1040, 1045, 1050, 1055, 1060, 1065, 1070, 1075, 1080, 1085,
+ 1090, 1095, 1100, 1105, 1110, 1115, 1120, 1125, 1130, 1135, 1140, 1145,
+ 1150, 1155, 1160, 1165, 1170, 1175, 1180, 1185, 1190, 1195, 1200, 1205,
+ 1210, 1215, 1220, 1225, 1230, 1235, 1240, 1245, 1250, 1255, 1260, 1265,
+ 1268, 1271, 1274, 1277, 1280, 1283, 1286, 1289, 1292, 1295, 1298, 1301,
+ 1305, 1309, 1313, 1318, 1323, 1327, 1330, 1333, 1336, 1339, 1342, 1345,
+ 1348, 1351, 1354, 1357, 1360, 1363, 1366, 1369, 1372, 1375, 1378, 1381,
+ 1384, 1387, 1390, 1393, 1396, 1399, 1402, 1405, 1408, 1411, 1414, 1417,
+ 1420, 1423, 1426, 1429, 1432, 1435, 1438, 1441, 1444, 1447, 1450, 1453,
+ 1456, 1459, 1462, 1465, 1468, 1471, 1474, 1477, 1480, 1483, 1486, 1489,
+ 1492, 1495, 1498, 1501, 1504, 1507, 1510, 1513, 1516, 1519, 1522, 1525,
+ 1528, 1531, 1534, 1537, 1540, 1543, 1546, 1549, 1552, 1555, 1558, 1561,
+ 1564, 1567, 1570, 1573, 1576, 1579, 1582, 1585, 1588, 1591, 1594, 1597,
+ 1600, 1603, 1606, 1609, 1612, 1615, 1618, 1621, 1624, 1627, 1630, 1633,
+ 1636, 1639, 1642, 1645, 1648, 1651, 1654, 1657, 1660, 1663, 1666, 1669,
+ 1672, 1675, 1678, 1681, 1684
};
static const wchar_t translit_to_tbl[] =
- L"(C)\0" L"\0" L"<<\0" L"\0" L"(R)\0" L"\0" L">>\0" L"\0" L"1/4\0" L"\0"
- L"1/2\0" L"\0" L"3/4\0" L"\0" L"AE\0" L"\0" L"AA\0" L"\0" L"AE\0" L"\0"
- L"OE\0" L"\0" L"UE\0" L"\0" L"ss\0" L"\0" L"ae\0" L"\0" L"aa\0" L"\0"
- L"ae\0" L"\0" L"oe\0" L"\0" L"ue\0" L"\0" L"\"\0" L"\0" L"\"\0";
+ L" \0" L"\0" L"(C)\0" L"\0" L"<<\0" L"\0" L"-\0" L"\0" L"(R)\0" L"\0"
+ L">>\0" L"\0" L"1/4\0" L"\0" L"1/2\0" L"\0" L"3/4\0" L"\0" L"AE\0" L"\0"
+ L"ss\0" L"\0" L"ae\0" L"\0" L"IJ\0" L"\0" L"ij\0" L"\0" L"s\0" L"\0" L"LJ\0"
+ L"\0" L"Lj\0" L"\0" L"lj\0" L"\0" L"NJ\0" L"\0" L"Nj\0" L"\0" L"nj\0" L"\0"
+ L"DZ\0" L"\0" L"Dz\0" L"\0" L"dz\0" L"\0" L"~\0" L"\0" L" \0" L"\0" L" \0"
+ L"\0" L" \0" L"\0" L" \0" L"\0" L" \0" L"\0" L" \0" L"\0" L" \0" L"\0"
+ L" \0" L"\0" L"-\0" L"\0" L"-\0" L"\0" L"-\0" L"\0" L"-\0" L"\0" L"-\0"
+ L"\0" L"-\0" L"\0" L"'\0" L"\0" L"'\0" L"\0" L",\0" L"\0" L"'\0" L"\0"
+ L"\"\0" L"\0" L"\"\0" L"\0" L",,\0" L"\0" L"\"\0" L"\0" L"+\0" L"\0" L"o\0"
+ L"\0" L".\0" L"\0" L"..\0" L"\0" L"...\0" L"\0" L"<\0" L"\0" L">\0" L"\0"
+ L"!!\0" L"\0" L"?!\0" L"\0" L"!?\0" L"\0" L"Rs\0" L"\0" L"EUR\0" L"\0"
+ L"a/c\0" L"\0" L"a/s\0" L"\0" L"C\0" L"\0" L"c/o\0" L"\0" L"c/u\0" L"\0"
+ L"g\0" L"\0" L"H\0" L"\0" L"H\0" L"\0" L"H\0" L"\0" L"h\0" L"\0" L"I\0"
+ L"\0" L"I\0" L"\0" L"L\0" L"\0" L"l\0" L"\0" L"N\0" L"\0" L"No\0" L"\0"
+ L"P\0" L"\0" L"Q\0" L"\0" L"R\0" L"\0" L"R\0" L"\0" L"R\0" L"\0" L"TEL\0"
+ L"\0" L"(TM)\0" L"\0" L"Z\0" L"\0" L"Ohm\0" L"\0" L"Z\0" L"\0" L"B\0" L"\0"
+ L"C\0" L"\0" L"e\0" L"\0" L"E\0" L"\0" L"F\0" L"\0" L"M\0" L"\0" L"o\0"
+ L"\0" L"i\0" L"\0" L"1/3\0" L"\0" L"2/3\0" L"\0" L"1/5\0" L"\0" L"2/5\0"
+ L"\0" L"3/5\0" L"\0" L"4/5\0" L"\0" L"1/6\0" L"\0" L"5/6\0" L"\0" L"1/8\0"
+ L"\0" L"3/8\0" L"\0" L"5/8\0" L"\0" L"7/8\0" L"\0" L"1/\0" L"\0" L"I\0"
+ L"\0" L"II\0" L"\0" L"III\0" L"\0" L"IV\0" L"\0" L"V\0" L"\0" L"VI\0" L"\0"
+ L"VII\0" L"\0" L"VIII\0" L"\0" L"IX\0" L"\0" L"X\0" L"\0" L"XI\0" L"\0"
+ L"XII\0" L"\0" L"L\0" L"\0" L"C\0" L"\0" L"D\0" L"\0" L"M\0" L"\0" L"i\0"
+ L"\0" L"ii\0" L"\0" L"iii\0" L"\0" L"iv\0" L"\0" L"v\0" L"\0" L"vi\0" L"\0"
+ L"vii\0" L"\0" L"viii\0" L"\0" L"ix\0" L"\0" L"x\0" L"\0" L"xi\0" L"\0"
+ L"xii\0" L"\0" L"l\0" L"\0" L"c\0" L"\0" L"d\0" L"\0" L"m\0" L"\0" L"<-\0"
+ L"\0" L"->\0" L"\0" L"<=\0" L"\0" L"=>\0" L"\0" L"-\0" L"\0" L"/\0" L"\0"
+ L"<=\0" L"\0" L">=\0" L"\0" L"<<\0" L"\0" L">>\0" L"\0" L"(1)\0" L"\0"
+ L"(2)\0" L"\0" L"(3)\0" L"\0" L"(4)\0" L"\0" L"(5)\0" L"\0" L"(6)\0" L"\0"
+ L"(7)\0" L"\0" L"(8)\0" L"\0" L"(9)\0" L"\0" L"(10)\0" L"\0" L"(11)\0" L"\0"
+ L"(12)\0" L"\0" L"(13)\0" L"\0" L"(14)\0" L"\0" L"(15)\0" L"\0" L"(16)\0"
+ L"\0" L"(17)\0" L"\0" L"(18)\0" L"\0" L"(19)\0" L"\0" L"(20)\0" L"\0"
+ L"(1)\0" L"\0" L"(2)\0" L"\0" L"(3)\0" L"\0" L"(4)\0" L"\0" L"(5)\0" L"\0"
+ L"(6)\0" L"\0" L"(7)\0" L"\0" L"(8)\0" L"\0" L"(9)\0" L"\0" L"(10)\0" L"\0"
+ L"(11)\0" L"\0" L"(12)\0" L"\0" L"(13)\0" L"\0" L"(14)\0" L"\0" L"(15)\0"
+ L"\0" L"(16)\0" L"\0" L"(17)\0" L"\0" L"(18)\0" L"\0" L"(19)\0" L"\0"
+ L"(20)\0" L"\0" L"1.\0" L"\0" L"2.\0" L"\0" L"3.\0" L"\0" L"4.\0" L"\0"
+ L"5.\0" L"\0" L"6.\0" L"\0" L"7.\0" L"\0" L"8.\0" L"\0" L"9.\0" L"\0"
+ L"10.\0" L"\0" L"11.\0" L"\0" L"12.\0" L"\0" L"13.\0" L"\0" L"14.\0" L"\0"
+ L"15.\0" L"\0" L"16.\0" L"\0" L"17.\0" L"\0" L"18.\0" L"\0" L"19.\0" L"\0"
+ L"20.\0" L"\0" L"(a)\0" L"\0" L"(b)\0" L"\0" L"(c)\0" L"\0" L"(d)\0" L"\0"
+ L"(e)\0" L"\0" L"(f)\0" L"\0" L"(g)\0" L"\0" L"(h)\0" L"\0" L"(i)\0" L"\0"
+ L"(j)\0" L"\0" L"(k)\0" L"\0" L"(l)\0" L"\0" L"(m)\0" L"\0" L"(n)\0" L"\0"
+ L"(o)\0" L"\0" L"(p)\0" L"\0" L"(q)\0" L"\0" L"(r)\0" L"\0" L"(s)\0" L"\0"
+ L"(t)\0" L"\0" L"(u)\0" L"\0" L"(v)\0" L"\0" L"(w)\0" L"\0" L"(x)\0" L"\0"
+ L"(y)\0" L"\0" L"(z)\0" L"\0" L"(A)\0" L"\0" L"(B)\0" L"\0" L"(C)\0" L"\0"
+ L"(D)\0" L"\0" L"(E)\0" L"\0" L"(F)\0" L"\0" L"(G)\0" L"\0" L"(H)\0" L"\0"
+ L"(I)\0" L"\0" L"(J)\0" L"\0" L"(K)\0" L"\0" L"(L)\0" L"\0" L"(M)\0" L"\0"
+ L"(N)\0" L"\0" L"(O)\0" L"\0" L"(P)\0" L"\0" L"(Q)\0" L"\0" L"(R)\0" L"\0"
+ L"(S)\0" L"\0" L"(T)\0" L"\0" L"(U)\0" L"\0" L"(V)\0" L"\0" L"(W)\0" L"\0"
+ L"(X)\0" L"\0" L"(Y)\0" L"\0" L"(Z)\0" L"\0" L"(a)\0" L"\0" L"(b)\0" L"\0"
+ L"(c)\0" L"\0" L"(d)\0" L"\0" L"(e)\0" L"\0" L"(f)\0" L"\0" L"(g)\0" L"\0"
+ L"(h)\0" L"\0" L"(i)\0" L"\0" L"(j)\0" L"\0" L"(k)\0" L"\0" L"(l)\0" L"\0"
+ L"(m)\0" L"\0" L"(n)\0" L"\0" L"(o)\0" L"\0" L"(p)\0" L"\0" L"(q)\0" L"\0"
+ L"(r)\0" L"\0" L"(s)\0" L"\0" L"(t)\0" L"\0" L"(u)\0" L"\0" L"(v)\0" L"\0"
+ L"(w)\0" L"\0" L"(x)\0" L"\0" L"(y)\0" L"\0" L"(z)\0" L"\0" L"(0)\0" L"\0"
+ L"-\0" L"\0" L"|\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0"
+ L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0"
+ L" \0" L"\0" L"ff\0" L"\0" L"fi\0" L"\0" L"fl\0" L"\0" L"ffi\0" L"\0"
+ L"ffl\0" L"\0" L"st\0" L"\0" L"+\0" L"\0" L"_\0" L"\0" L"_\0" L"\0" L"_\0"
+ L"\0" L",\0" L"\0" L".\0" L"\0" L";\0" L"\0" L":\0" L"\0" L"?\0" L"\0"
+ L"!\0" L"\0" L"(\0" L"\0" L")\0" L"\0" L"{\0" L"\0" L"}\0" L"\0" L"#\0"
+ L"\0" L"&\0" L"\0" L"*\0" L"\0" L"+\0" L"\0" L"-\0" L"\0" L"<\0" L"\0"
+ L">\0" L"\0" L"=\0" L"\0" L"\\\0" L"\0" L"$\0" L"\0" L"%\0" L"\0" L"@\0"
+ L"\0" L"!\0" L"\0" L"\"\0" L"\0" L"#\0" L"\0" L"$\0" L"\0" L"%\0" L"\0"
+ L"&\0" L"\0" L"'\0" L"\0" L"(\0" L"\0" L")\0" L"\0" L"*\0" L"\0" L"+\0"
+ L"\0" L",\0" L"\0" L"-\0" L"\0" L".\0" L"\0" L"/\0" L"\0" L"0\0" L"\0"
+ L"1\0" L"\0" L"2\0" L"\0" L"3\0" L"\0" L"4\0" L"\0" L"5\0" L"\0" L"6\0"
+ L"\0" L"7\0" L"\0" L"8\0" L"\0" L"9\0" L"\0" L":\0" L"\0" L";\0" L"\0"
+ L"<\0" L"\0" L"=\0" L"\0" L">\0" L"\0" L"?\0" L"\0" L"@\0" L"\0" L"A\0"
+ L"\0" L"B\0" L"\0" L"C\0" L"\0" L"D\0" L"\0" L"E\0" L"\0" L"F\0" L"\0"
+ L"G\0" L"\0" L"H\0" L"\0" L"I\0" L"\0" L"J\0" L"\0" L"K\0" L"\0" L"L\0"
+ L"\0" L"M\0" L"\0" L"N\0" L"\0" L"O\0" L"\0" L"P\0" L"\0" L"Q\0" L"\0"
+ L"R\0" L"\0" L"S\0" L"\0" L"T\0" L"\0" L"U\0" L"\0" L"V\0" L"\0" L"W\0"
+ L"\0" L"X\0" L"\0" L"Y\0" L"\0" L"Z\0" L"\0" L"[\0" L"\0" L"\\\0" L"\0"
+ L"]\0" L"\0" L"^\0" L"\0" L"_\0" L"\0" L"`\0" L"\0" L"a\0" L"\0" L"b\0"
+ L"\0" L"c\0" L"\0" L"d\0" L"\0" L"e\0" L"\0" L"f\0" L"\0" L"g\0" L"\0"
+ L"h\0" L"\0" L"i\0" L"\0" L"j\0" L"\0" L"k\0" L"\0" L"l\0" L"\0" L"m\0"
+ L"\0" L"n\0" L"\0" L"o\0" L"\0" L"p\0" L"\0" L"q\0" L"\0" L"r\0" L"\0"
+ L"s\0" L"\0" L"t\0" L"\0" L"u\0" L"\0" L"v\0" L"\0" L"w\0" L"\0" L"x\0"
+ L"\0" L"y\0" L"\0" L"z\0" L"\0" L"{\0" L"\0" L"|\0" L"\0" L"}\0" L"\0"
+ L"~\0";
diff --git a/locale/C-translit.h.in b/locale/C-translit.h.in
index 4734789ecb..93abad4415 100644
--- a/locale/C-translit.h.in
+++ b/locale/C-translit.h.in
@@ -20,78 +20,428 @@
/* The entries here have to be sorted relative to the input string. */
-/* <U00A9> COPYRIGHT SIGN. */
-"\xa9" "(C)"
-
-/* <U00AB> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK. */
-"\xab" "<<"
-
-/* <U00AE> REGISTERED SIGN. */
-"\xae" "(R)"
-
-/* <U00BB> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK. */
-"\xbb" ">>"
-
-/* <U00BC> VULGAR FRACTION ONE QUARTER. */
-"\xbc" "1/4"
-
-/* <U00BD> VULGAR FRACTION ONE HALF. */
-"\xbd" "1/2"
-
-/* <U00BE> VULGAR FRACTION THREE QUARTERS. */
-"\xbe" "3/4"
-
-/* <U00C4> LATIN CAPITAL LETTER A WITH DIAERESIS. */
-/* XXX It is not clear whether this is the best transliteration for
- all locales. If not, we probably have to take it out completely. */
-"\xc4" "AE"
-
-/* <U00C5> LATIN CAPITAL LETTER A WITH RING ABOVE. */
-/* XXX It is not clear whether this is the best transliteration for
- all locales. If not, we probably have to take it out completely. */
-"\xc5" "AA"
-
-/* <U00C6> LATIN CAPITAL LETTER AE. */
-"\xc6" "AE"
-
-/* <U00D6> LATIN CAPITAL LETTER O WITH DIAERESIS. */
-/* XXX It is not clear whether this is the best transliteration for
- all locales. If not, we probably have to take it out completely. */
-"\xd6" "OE"
-
-/* <U00DC> LATIN CAPITAL LETTER U WITH DIAERESIS. */
-/* XXX It is not clear whether this is the best transliteration for
- all locales. If not, we probably have to take it out completely. */
-"\xdc" "UE"
-
-/* <U00DF> LATIN SMALL LETTER SHARP S. */
-"\xdf" "ss"
-
-/* <U00E4> LATIN SMALL LETTER A WITH DIAERESIS. */
-/* XXX It is not clear whether this is the best transliteration for
- all locales. If not, we probably have to take it out completely. */
-"\xe4" "ae"
-
-/* <U00E5> LATIN SMALL LETTER A WITH RING ABOVE. */
-/* XXX It is not clear whether this is the best transliteration for
- all locales. If not, we probably have to take it out completely. */
-"\xe5" "aa"
-
-/* <U00E6> LATIN SMALL LETTER AE. */
-"\xe6" "ae"
-
-/* <U00F6> LATIN SMALL LETTER O WITH DIAERESIS. */
-/* XXX It is not clear whether this is the best transliteration for
- all locales. If not, we probably have to take it out completely. */
-"\xf6" "oe"
-
-/* <U00FC> LATIN SMALL LETTER U WITH DIAERESIS. */
-/* XXX It is not clear whether this is the best transliteration for
- all locales. If not, we probably have to take it out completely. */
-"\xfc" "ue"
-
-/* <U201C> LEFT DOUBLE QUOTATION MARK. */
-"\x201c" "\""
-
-/* <U201D> RIGHT DOUBLE QUOTATION MARK. */
-"\x201d" "\""
+"\x00a0" " " /* <U00A0> NO-BREAK SPACE */
+"\x00a9" "(C)" /* <U00A9> COPYRIGHT SIGN */
+"\x00ab" "<<" /* <U00AB> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */
+"\x00ad" "-" /* <U00AD> SOFT HYPHEN */
+"\x00ae" "(R)" /* <U00AE> REGISTERED SIGN */
+"\x00bb" ">>" /* <U00BB> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */
+"\x00bc" "1/4" /* <U00BC> VULGAR FRACTION ONE QUARTER */
+"\x00bd" "1/2" /* <U00BD> VULGAR FRACTION ONE HALF */
+"\x00be" "3/4" /* <U00BE> VULGAR FRACTION THREE QUARTERS */
+"\x00c6" "AE" /* <U00C6> LATIN CAPITAL LETTER AE */
+"\x00df" "ss" /* <U00DF> LATIN SMALL LETTER SHARP S */
+"\x00e6" "ae" /* <U00E6> LATIN SMALL LETTER AE */
+"\x0132" "IJ" /* <U0132> LATIN CAPITAL LIGATURE IJ */
+"\x0133" "ij" /* <U0133> LATIN SMALL LIGATURE IJ */
+"\x017f" "s" /* <U017F> LATIN SMALL LETTER LONG S */
+"\x01c7" "LJ" /* <U01C7> LATIN CAPITAL LETTER LJ */
+"\x01c8" "Lj" /* <U01C8> LATIN CAPITAL LETTER L WITH SMALL LETTER J */
+"\x01c9" "lj" /* <U01C9> LATIN SMALL LETTER LJ */
+"\x01ca" "NJ" /* <U01CA> LATIN CAPITAL LETTER NJ */
+"\x01cb" "Nj" /* <U01CB> LATIN CAPITAL LETTER N WITH SMALL LETTER J */
+"\x01cc" "nj" /* <U01CC> LATIN SMALL LETTER NJ */
+"\x01f1" "DZ" /* <U01F1> LATIN CAPITAL LETTER DZ */
+"\x01f2" "Dz" /* <U01F2> LATIN CAPITAL LETTER D WITH SMALL LETTER Z */
+"\x01f3" "dz" /* <U01F3> LATIN SMALL LETTER DZ */
+"\x02dc" "~" /* <U02DC> SMALL TILDE */
+"\x2002" " " /* <U2002> EN SPACE */
+"\x2003" " " /* <U2003> EM SPACE */
+"\x2004" " " /* <U2004> THREE-PER-EM SPACE */
+"\x2005" " " /* <U2005> FOUR-PER-EM SPACE */
+"\x2006" " " /* <U2006> SIX-PER-EM SPACE */
+"\x2008" " " /* <U2008> PUNCTUATION SPACE */
+"\x2009" " " /* <U2009> THIN SPACE */
+"\x200a" " " /* <U200A> HAIR SPACE */
+"\x2010" "-" /* <U2010> HYPHEN */
+"\x2011" "-" /* <U2011> NON-BREAKING HYPHEN */
+"\x2012" "-" /* <U2012> FIGURE DASH */
+"\x2013" "-" /* <U2013> EN DASH */
+"\x2014" "-" /* <U2014> EM DASH */
+"\x2015" "-" /* <U2015> HORIZONTAL BAR */
+"\x2018" "'" /* <U2018> LEFT SINGLE QUOTATION MARK */
+"\x2019" "'" /* <U2019> RIGHT SINGLE QUOTATION MARK */
+"\x201a" "," /* <U201A> SINGLE LOW-9 QUOTATION MARK */
+"\x201b" "'" /* <U201B> SINGLE HIGH-REVERSED-9 QUOTATION MARK */
+"\x201c" "\"" /* <U201C> LEFT DOUBLE QUOTATION MARK */
+"\x201d" "\"" /* <U201D> RIGHT DOUBLE QUOTATION MARK */
+"\x201e" ",," /* <U201E> DOUBLE LOW-9 QUOTATION MARK */
+"\x201f" "\"" /* <U201F> DOUBLE HIGH-REVERSED-9 QUOTATION MARK */
+"\x2020" "+" /* <U2020> DAGGER */
+"\x2022" "o" /* <U2022> BULLET */
+"\x2024" "." /* <U2024> ONE DOT LEADER */
+"\x2025" ".." /* <U2025> TWO DOT LEADER */
+"\x2026" "..." /* <U2026> HORIZONTAL ELLIPSIS */
+"\x2039" "<" /* <U2039> SINGLE LEFT-POINTING ANGLE QUOTATION MARK */
+"\x203a" ">" /* <U203A> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK */
+"\x203c" "!!" /* <U203C> DOUBLE EXCLAMATION MARK */
+"\x2048" "?!" /* <U2048> QUESTION EXCLAMATION MARK */
+"\x2049" "!?" /* <U2049> EXCLAMATION QUESTION MARK */
+"\x20a8" "Rs" /* <U20A8> RUPEE SIGN */
+"\x20ac" "EUR" /* <U20AC> EURO SIGN */
+"\x2100" "a/c" /* <U2100> ACCOUNT OF */
+"\x2101" "a/s" /* <U2101> ADDRESSED TO THE SUBJECT */
+"\x2102" "C" /* <U2102> DOUBLE-STRUCK CAPITAL C */
+"\x2105" "c/o" /* <U2105> CARE OF */
+"\x2106" "c/u" /* <U2106> CADA UNA */
+"\x210a" "g" /* <U210A> SCRIPT SMALL G */
+"\x210b" "H" /* <U210B> SCRIPT CAPITAL H */
+"\x210c" "H" /* <U210C> BLACK-LETTER CAPITAL H */
+"\x210d" "H" /* <U210D> DOUBLE-STRUCK CAPITAL H */
+"\x210e" "h" /* <U210E> PLANCK CONSTANT */
+"\x2110" "I" /* <U2110> SCRIPT CAPITAL I */
+"\x2111" "I" /* <U2111> BLACK-LETTER CAPITAL I */
+"\x2112" "L" /* <U2112> SCRIPT CAPITAL L */
+"\x2113" "l" /* <U2113> SCRIPT SMALL L */
+"\x2115" "N" /* <U2115> DOUBLE-STRUCK CAPITAL N */
+"\x2116" "No" /* <U2116> NUMERO SIGN */
+"\x2119" "P" /* <U2119> DOUBLE-STRUCK CAPITAL P */
+"\x211a" "Q" /* <U211A> DOUBLE-STRUCK CAPITAL Q */
+"\x211b" "R" /* <U211B> SCRIPT CAPITAL R */
+"\x211c" "R" /* <U211C> BLACK-LETTER CAPITAL R */
+"\x211d" "R" /* <U211D> DOUBLE-STRUCK CAPITAL R */
+"\x2121" "TEL" /* <U2121> TELEPHONE SIGN */
+"\x2122" "(TM)" /* <U2122> TRADE MARK SIGN */
+"\x2124" "Z" /* <U2124> DOUBLE-STRUCK CAPITAL Z */
+"\x2126" "Ohm" /* <U2126> OHM SIGN */
+"\x2128" "Z" /* <U2128> BLACK-LETTER CAPITAL Z */
+"\x212c" "B" /* <U212C> SCRIPT CAPITAL B */
+"\x212d" "C" /* <U212D> BLACK-LETTER CAPITAL C */
+"\x212f" "e" /* <U212F> SCRIPT SMALL E */
+"\x2130" "E" /* <U2130> SCRIPT CAPITAL E */
+"\x2131" "F" /* <U2131> SCRIPT CAPITAL F */
+"\x2133" "M" /* <U2133> SCRIPT CAPITAL M */
+"\x2134" "o" /* <U2134> SCRIPT SMALL O */
+"\x2139" "i" /* <U2139> INFORMATION SOURCE */
+"\x2153" "1/3" /* <U2153> VULGAR FRACTION ONE THIRD */
+"\x2154" "2/3" /* <U2154> VULGAR FRACTION TWO THIRDS */
+"\x2155" "1/5" /* <U2155> VULGAR FRACTION ONE FIFTH */
+"\x2156" "2/5" /* <U2156> VULGAR FRACTION TWO FIFTHS */
+"\x2157" "3/5" /* <U2157> VULGAR FRACTION THREE FIFTHS */
+"\x2158" "4/5" /* <U2158> VULGAR FRACTION FOUR FIFTHS */
+"\x2159" "1/6" /* <U2159> VULGAR FRACTION ONE SIXTH */
+"\x215a" "5/6" /* <U215A> VULGAR FRACTION FIVE SIXTHS */
+"\x215b" "1/8" /* <U215B> VULGAR FRACTION ONE EIGHTH */
+"\x215c" "3/8" /* <U215C> VULGAR FRACTION THREE EIGHTHS */
+"\x215d" "5/8" /* <U215D> VULGAR FRACTION FIVE EIGHTHS */
+"\x215e" "7/8" /* <U215E> VULGAR FRACTION SEVEN EIGHTHS */
+"\x215f" "1/" /* <U215F> FRACTION NUMERATOR ONE */
+"\x2160" "I" /* <U2160> ROMAN NUMERAL ONE */
+"\x2161" "II" /* <U2161> ROMAN NUMERAL TWO */
+"\x2162" "III" /* <U2162> ROMAN NUMERAL THREE */
+"\x2163" "IV" /* <U2163> ROMAN NUMERAL FOUR */
+"\x2164" "V" /* <U2164> ROMAN NUMERAL FIVE */
+"\x2165" "VI" /* <U2165> ROMAN NUMERAL SIX */
+"\x2166" "VII" /* <U2166> ROMAN NUMERAL SEVEN */
+"\x2167" "VIII" /* <U2167> ROMAN NUMERAL EIGHT */
+"\x2168" "IX" /* <U2168> ROMAN NUMERAL NINE */
+"\x2169" "X" /* <U2169> ROMAN NUMERAL TEN */
+"\x216a" "XI" /* <U216A> ROMAN NUMERAL ELEVEN */
+"\x216b" "XII" /* <U216B> ROMAN NUMERAL TWELVE */
+"\x216c" "L" /* <U216C> ROMAN NUMERAL FIFTY */
+"\x216d" "C" /* <U216D> ROMAN NUMERAL ONE HUNDRED */
+"\x216e" "D" /* <U216E> ROMAN NUMERAL FIVE HUNDRED */
+"\x216f" "M" /* <U216F> ROMAN NUMERAL ONE THOUSAND */
+"\x2170" "i" /* <U2170> SMALL ROMAN NUMERAL ONE */
+"\x2171" "ii" /* <U2171> SMALL ROMAN NUMERAL TWO */
+"\x2172" "iii" /* <U2172> SMALL ROMAN NUMERAL THREE */
+"\x2173" "iv" /* <U2173> SMALL ROMAN NUMERAL FOUR */
+"\x2174" "v" /* <U2174> SMALL ROMAN NUMERAL FIVE */
+"\x2175" "vi" /* <U2175> SMALL ROMAN NUMERAL SIX */
+"\x2176" "vii" /* <U2176> SMALL ROMAN NUMERAL SEVEN */
+"\x2177" "viii" /* <U2177> SMALL ROMAN NUMERAL EIGHT */
+"\x2178" "ix" /* <U2178> SMALL ROMAN NUMERAL NINE */
+"\x2179" "x" /* <U2179> SMALL ROMAN NUMERAL TEN */
+"\x217a" "xi" /* <U217A> SMALL ROMAN NUMERAL ELEVEN */
+"\x217b" "xii" /* <U217B> SMALL ROMAN NUMERAL TWELVE */
+"\x217c" "l" /* <U217C> SMALL ROMAN NUMERAL FIFTY */
+"\x217d" "c" /* <U217D> SMALL ROMAN NUMERAL ONE HUNDRED */
+"\x217e" "d" /* <U217E> SMALL ROMAN NUMERAL FIVE HUNDRED */
+"\x217f" "m" /* <U217F> SMALL ROMAN NUMERAL ONE THOUSAND */
+"\x2190" "<-" /* <U2190> LEFTWARDS ARROW */
+"\x2192" "->" /* <U2192> RIGHTWARDS ARROW */
+"\x21d0" "<=" /* <U21D0> LEFTWARDS DOUBLE ARROW */
+"\x21d2" "=>" /* <U21D2> RIGHTWARDS DOUBLE ARROW */
+"\x2212" "-" /* <U2212> MINUS SIGN */
+"\x2215" "/" /* <U2215> DIVISION SLASH */
+"\x2264" "<=" /* <U2264> LESS-THAN OR EQUAL TO */
+"\x2265" ">=" /* <U2265> GREATER-THAN OR EQUAL TO */
+"\x226a" "<<" /* <U226A> MUCH LESS-THAN */
+"\x226b" ">>" /* <U226B> MUCH GREATER-THAN */
+"\x2460" "(1)" /* <U2460> CIRCLED DIGIT ONE */
+"\x2461" "(2)" /* <U2461> CIRCLED DIGIT TWO */
+"\x2462" "(3)" /* <U2462> CIRCLED DIGIT THREE */
+"\x2463" "(4)" /* <U2463> CIRCLED DIGIT FOUR */
+"\x2464" "(5)" /* <U2464> CIRCLED DIGIT FIVE */
+"\x2465" "(6)" /* <U2465> CIRCLED DIGIT SIX */
+"\x2466" "(7)" /* <U2466> CIRCLED DIGIT SEVEN */
+"\x2467" "(8)" /* <U2467> CIRCLED DIGIT EIGHT */
+"\x2468" "(9)" /* <U2468> CIRCLED DIGIT NINE */
+"\x2469" "(10)" /* <U2469> CIRCLED NUMBER TEN */
+"\x246a" "(11)" /* <U246A> CIRCLED NUMBER ELEVEN */
+"\x246b" "(12)" /* <U246B> CIRCLED NUMBER TWELVE */
+"\x246c" "(13)" /* <U246C> CIRCLED NUMBER THIRTEEN */
+"\x246d" "(14)" /* <U246D> CIRCLED NUMBER FOURTEEN */
+"\x246e" "(15)" /* <U246E> CIRCLED NUMBER FIFTEEN */
+"\x246f" "(16)" /* <U246F> CIRCLED NUMBER SIXTEEN */
+"\x2470" "(17)" /* <U2470> CIRCLED NUMBER SEVENTEEN */
+"\x2471" "(18)" /* <U2471> CIRCLED NUMBER EIGHTEEN */
+"\x2472" "(19)" /* <U2472> CIRCLED NUMBER NINETEEN */
+"\x2473" "(20)" /* <U2473> CIRCLED NUMBER TWENTY */
+"\x2474" "(1)" /* <U2474> PARENTHESIZED DIGIT ONE */
+"\x2475" "(2)" /* <U2475> PARENTHESIZED DIGIT TWO */
+"\x2476" "(3)" /* <U2476> PARENTHESIZED DIGIT THREE */
+"\x2477" "(4)" /* <U2477> PARENTHESIZED DIGIT FOUR */
+"\x2478" "(5)" /* <U2478> PARENTHESIZED DIGIT FIVE */
+"\x2479" "(6)" /* <U2479> PARENTHESIZED DIGIT SIX */
+"\x247a" "(7)" /* <U247A> PARENTHESIZED DIGIT SEVEN */
+"\x247b" "(8)" /* <U247B> PARENTHESIZED DIGIT EIGHT */
+"\x247c" "(9)" /* <U247C> PARENTHESIZED DIGIT NINE */
+"\x247d" "(10)" /* <U247D> PARENTHESIZED NUMBER TEN */
+"\x247e" "(11)" /* <U247E> PARENTHESIZED NUMBER ELEVEN */
+"\x247f" "(12)" /* <U247F> PARENTHESIZED NUMBER TWELVE */
+"\x2480" "(13)" /* <U2480> PARENTHESIZED NUMBER THIRTEEN */
+"\x2481" "(14)" /* <U2481> PARENTHESIZED NUMBER FOURTEEN */
+"\x2482" "(15)" /* <U2482> PARENTHESIZED NUMBER FIFTEEN */
+"\x2483" "(16)" /* <U2483> PARENTHESIZED NUMBER SIXTEEN */
+"\x2484" "(17)" /* <U2484> PARENTHESIZED NUMBER SEVENTEEN */
+"\x2485" "(18)" /* <U2485> PARENTHESIZED NUMBER EIGHTEEN */
+"\x2486" "(19)" /* <U2486> PARENTHESIZED NUMBER NINETEEN */
+"\x2487" "(20)" /* <U2487> PARENTHESIZED NUMBER TWENTY */
+"\x2488" "1." /* <U2488> DIGIT ONE FULL STOP */
+"\x2489" "2." /* <U2489> DIGIT TWO FULL STOP */
+"\x248a" "3." /* <U248A> DIGIT THREE FULL STOP */
+"\x248b" "4." /* <U248B> DIGIT FOUR FULL STOP */
+"\x248c" "5." /* <U248C> DIGIT FIVE FULL STOP */
+"\x248d" "6." /* <U248D> DIGIT SIX FULL STOP */
+"\x248e" "7." /* <U248E> DIGIT SEVEN FULL STOP */
+"\x248f" "8." /* <U248F> DIGIT EIGHT FULL STOP */
+"\x2490" "9." /* <U2490> DIGIT NINE FULL STOP */
+"\x2491" "10." /* <U2491> NUMBER TEN FULL STOP */
+"\x2492" "11." /* <U2492> NUMBER ELEVEN FULL STOP */
+"\x2493" "12." /* <U2493> NUMBER TWELVE FULL STOP */
+"\x2494" "13." /* <U2494> NUMBER THIRTEEN FULL STOP */
+"\x2495" "14." /* <U2495> NUMBER FOURTEEN FULL STOP */
+"\x2496" "15." /* <U2496> NUMBER FIFTEEN FULL STOP */
+"\x2497" "16." /* <U2497> NUMBER SIXTEEN FULL STOP */
+"\x2498" "17." /* <U2498> NUMBER SEVENTEEN FULL STOP */
+"\x2499" "18." /* <U2499> NUMBER EIGHTEEN FULL STOP */
+"\x249a" "19." /* <U249A> NUMBER NINETEEN FULL STOP */
+"\x249b" "20." /* <U249B> NUMBER TWENTY FULL STOP */
+"\x249c" "(a)" /* <U249C> PARENTHESIZED LATIN SMALL LETTER A */
+"\x249d" "(b)" /* <U249D> PARENTHESIZED LATIN SMALL LETTER B */
+"\x249e" "(c)" /* <U249E> PARENTHESIZED LATIN SMALL LETTER C */
+"\x249f" "(d)" /* <U249F> PARENTHESIZED LATIN SMALL LETTER D */
+"\x24a0" "(e)" /* <U24A0> PARENTHESIZED LATIN SMALL LETTER E */
+"\x24a1" "(f)" /* <U24A1> PARENTHESIZED LATIN SMALL LETTER F */
+"\x24a2" "(g)" /* <U24A2> PARENTHESIZED LATIN SMALL LETTER G */
+"\x24a3" "(h)" /* <U24A3> PARENTHESIZED LATIN SMALL LETTER H */
+"\x24a4" "(i)" /* <U24A4> PARENTHESIZED LATIN SMALL LETTER I */
+"\x24a5" "(j)" /* <U24A5> PARENTHESIZED LATIN SMALL LETTER J */
+"\x24a6" "(k)" /* <U24A6> PARENTHESIZED LATIN SMALL LETTER K */
+"\x24a7" "(l)" /* <U24A7> PARENTHESIZED LATIN SMALL LETTER L */
+"\x24a8" "(m)" /* <U24A8> PARENTHESIZED LATIN SMALL LETTER M */
+"\x24a9" "(n)" /* <U24A9> PARENTHESIZED LATIN SMALL LETTER N */
+"\x24aa" "(o)" /* <U24AA> PARENTHESIZED LATIN SMALL LETTER O */
+"\x24ab" "(p)" /* <U24AB> PARENTHESIZED LATIN SMALL LETTER P */
+"\x24ac" "(q)" /* <U24AC> PARENTHESIZED LATIN SMALL LETTER Q */
+"\x24ad" "(r)" /* <U24AD> PARENTHESIZED LATIN SMALL LETTER R */
+"\x24ae" "(s)" /* <U24AE> PARENTHESIZED LATIN SMALL LETTER S */
+"\x24af" "(t)" /* <U24AF> PARENTHESIZED LATIN SMALL LETTER T */
+"\x24b0" "(u)" /* <U24B0> PARENTHESIZED LATIN SMALL LETTER U */
+"\x24b1" "(v)" /* <U24B1> PARENTHESIZED LATIN SMALL LETTER V */
+"\x24b2" "(w)" /* <U24B2> PARENTHESIZED LATIN SMALL LETTER W */
+"\x24b3" "(x)" /* <U24B3> PARENTHESIZED LATIN SMALL LETTER X */
+"\x24b4" "(y)" /* <U24B4> PARENTHESIZED LATIN SMALL LETTER Y */
+"\x24b5" "(z)" /* <U24B5> PARENTHESIZED LATIN SMALL LETTER Z */
+"\x24b6" "(A)" /* <U24B6> CIRCLED LATIN CAPITAL LETTER A */
+"\x24b7" "(B)" /* <U24B7> CIRCLED LATIN CAPITAL LETTER B */
+"\x24b8" "(C)" /* <U24B8> CIRCLED LATIN CAPITAL LETTER C */
+"\x24b9" "(D)" /* <U24B9> CIRCLED LATIN CAPITAL LETTER D */
+"\x24ba" "(E)" /* <U24BA> CIRCLED LATIN CAPITAL LETTER E */
+"\x24bb" "(F)" /* <U24BB> CIRCLED LATIN CAPITAL LETTER F */
+"\x24bc" "(G)" /* <U24BC> CIRCLED LATIN CAPITAL LETTER G */
+"\x24bd" "(H)" /* <U24BD> CIRCLED LATIN CAPITAL LETTER H */
+"\x24be" "(I)" /* <U24BE> CIRCLED LATIN CAPITAL LETTER I */
+"\x24bf" "(J)" /* <U24BF> CIRCLED LATIN CAPITAL LETTER J */
+"\x24c0" "(K)" /* <U24C0> CIRCLED LATIN CAPITAL LETTER K */
+"\x24c1" "(L)" /* <U24C1> CIRCLED LATIN CAPITAL LETTER L */
+"\x24c2" "(M)" /* <U24C2> CIRCLED LATIN CAPITAL LETTER M */
+"\x24c3" "(N)" /* <U24C3> CIRCLED LATIN CAPITAL LETTER N */
+"\x24c4" "(O)" /* <U24C4> CIRCLED LATIN CAPITAL LETTER O */
+"\x24c5" "(P)" /* <U24C5> CIRCLED LATIN CAPITAL LETTER P */
+"\x24c6" "(Q)" /* <U24C6> CIRCLED LATIN CAPITAL LETTER Q */
+"\x24c7" "(R)" /* <U24C7> CIRCLED LATIN CAPITAL LETTER R */
+"\x24c8" "(S)" /* <U24C8> CIRCLED LATIN CAPITAL LETTER S */
+"\x24c9" "(T)" /* <U24C9> CIRCLED LATIN CAPITAL LETTER T */
+"\x24ca" "(U)" /* <U24CA> CIRCLED LATIN CAPITAL LETTER U */
+"\x24cb" "(V)" /* <U24CB> CIRCLED LATIN CAPITAL LETTER V */
+"\x24cc" "(W)" /* <U24CC> CIRCLED LATIN CAPITAL LETTER W */
+"\x24cd" "(X)" /* <U24CD> CIRCLED LATIN CAPITAL LETTER X */
+"\x24ce" "(Y)" /* <U24CE> CIRCLED LATIN CAPITAL LETTER Y */
+"\x24cf" "(Z)" /* <U24CF> CIRCLED LATIN CAPITAL LETTER Z */
+"\x24d0" "(a)" /* <U24D0> CIRCLED LATIN SMALL LETTER A */
+"\x24d1" "(b)" /* <U24D1> CIRCLED LATIN SMALL LETTER B */
+"\x24d2" "(c)" /* <U24D2> CIRCLED LATIN SMALL LETTER C */
+"\x24d3" "(d)" /* <U24D3> CIRCLED LATIN SMALL LETTER D */
+"\x24d4" "(e)" /* <U24D4> CIRCLED LATIN SMALL LETTER E */
+"\x24d5" "(f)" /* <U24D5> CIRCLED LATIN SMALL LETTER F */
+"\x24d6" "(g)" /* <U24D6> CIRCLED LATIN SMALL LETTER G */
+"\x24d7" "(h)" /* <U24D7> CIRCLED LATIN SMALL LETTER H */
+"\x24d8" "(i)" /* <U24D8> CIRCLED LATIN SMALL LETTER I */
+"\x24d9" "(j)" /* <U24D9> CIRCLED LATIN SMALL LETTER J */
+"\x24da" "(k)" /* <U24DA> CIRCLED LATIN SMALL LETTER K */
+"\x24db" "(l)" /* <U24DB> CIRCLED LATIN SMALL LETTER L */
+"\x24dc" "(m)" /* <U24DC> CIRCLED LATIN SMALL LETTER M */
+"\x24dd" "(n)" /* <U24DD> CIRCLED LATIN SMALL LETTER N */
+"\x24de" "(o)" /* <U24DE> CIRCLED LATIN SMALL LETTER O */
+"\x24df" "(p)" /* <U24DF> CIRCLED LATIN SMALL LETTER P */
+"\x24e0" "(q)" /* <U24E0> CIRCLED LATIN SMALL LETTER Q */
+"\x24e1" "(r)" /* <U24E1> CIRCLED LATIN SMALL LETTER R */
+"\x24e2" "(s)" /* <U24E2> CIRCLED LATIN SMALL LETTER S */
+"\x24e3" "(t)" /* <U24E3> CIRCLED LATIN SMALL LETTER T */
+"\x24e4" "(u)" /* <U24E4> CIRCLED LATIN SMALL LETTER U */
+"\x24e5" "(v)" /* <U24E5> CIRCLED LATIN SMALL LETTER V */
+"\x24e6" "(w)" /* <U24E6> CIRCLED LATIN SMALL LETTER W */
+"\x24e7" "(x)" /* <U24E7> CIRCLED LATIN SMALL LETTER X */
+"\x24e8" "(y)" /* <U24E8> CIRCLED LATIN SMALL LETTER Y */
+"\x24e9" "(z)" /* <U24E9> CIRCLED LATIN SMALL LETTER Z */
+"\x24ea" "(0)" /* <U24EA> CIRCLED DIGIT ZERO */
+"\x2500" "-" /* <U2500> BOX DRAWINGS LIGHT HORIZONTAL */
+"\x2502" "|" /* <U2502> BOX DRAWINGS LIGHT VERTICAL */
+"\x250c" "+" /* <U250C> BOX DRAWINGS LIGHT DOWN AND RIGHT */
+"\x2510" "+" /* <U2510> BOX DRAWINGS LIGHT DOWN AND LEFT */
+"\x2514" "+" /* <U2514> BOX DRAWINGS LIGHT UP AND RIGHT */
+"\x2518" "+" /* <U2518> BOX DRAWINGS LIGHT UP AND LEFT */
+"\x251c" "+" /* <U251C> BOX DRAWINGS LIGHT VERTICAL AND RIGHT */
+"\x2524" "+" /* <U2524> BOX DRAWINGS LIGHT VERTICAL AND LEFT */
+"\x252c" "+" /* <U252C> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL */
+"\x2534" "+" /* <U2534> BOX DRAWINGS LIGHT UP AND HORIZONTAL */
+"\x253c" "+" /* <U253C> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL */
+"\x3000" " " /* <U3000> IDEOGRAPHIC SPACE */
+"\xfb00" "ff" /* <UFB00> LATIN SMALL LIGATURE FF */
+"\xfb01" "fi" /* <UFB01> LATIN SMALL LIGATURE FI */
+"\xfb02" "fl" /* <UFB02> LATIN SMALL LIGATURE FL */
+"\xfb03" "ffi" /* <UFB03> LATIN SMALL LIGATURE FFI */
+"\xfb04" "ffl" /* <UFB04> LATIN SMALL LIGATURE FFL */
+"\xfb06" "st" /* <UFB06> LATIN SMALL LIGATURE ST */
+"\xfb29" "+" /* <UFB29> HEBREW LETTER ALTERNATIVE PLUS SIGN */
+"\xfe4d" "_" /* <UFE4D> DASHED LOW LINE */
+"\xfe4e" "_" /* <UFE4E> CENTRELINE LOW LINE */
+"\xfe4f" "_" /* <UFE4F> WAVY LOW LINE */
+"\xfe50" "," /* <UFE50> SMALL COMMA */
+"\xfe52" "." /* <UFE52> SMALL FULL STOP */
+"\xfe54" ";" /* <UFE54> SMALL SEMICOLON */
+"\xfe55" ":" /* <UFE55> SMALL COLON */
+"\xfe56" "?" /* <UFE56> SMALL QUESTION MARK */
+"\xfe57" "!" /* <UFE57> SMALL EXCLAMATION MARK */
+"\xfe59" "(" /* <UFE59> SMALL LEFT PARENTHESIS */
+"\xfe5a" ")" /* <UFE5A> SMALL RIGHT PARENTHESIS */
+"\xfe5b" "{" /* <UFE5B> SMALL LEFT CURLY BRACKET */
+"\xfe5c" "}" /* <UFE5C> SMALL RIGHT CURLY BRACKET */
+"\xfe5f" "#" /* <UFE5F> SMALL NUMBER SIGN */
+"\xfe60" "&" /* <UFE60> SMALL AMPERSAND */
+"\xfe61" "*" /* <UFE61> SMALL ASTERISK */
+"\xfe62" "+" /* <UFE62> SMALL PLUS SIGN */
+"\xfe63" "-" /* <UFE63> SMALL HYPHEN-MINUS */
+"\xfe64" "<" /* <UFE64> SMALL LESS-THAN SIGN */
+"\xfe65" ">" /* <UFE65> SMALL GREATER-THAN SIGN */
+"\xfe66" "=" /* <UFE66> SMALL EQUALS SIGN */
+"\xfe68" "\\" /* <UFE68> SMALL REVERSE SOLIDUS */
+"\xfe69" "$" /* <UFE69> SMALL DOLLAR SIGN */
+"\xfe6a" "%" /* <UFE6A> SMALL PERCENT SIGN */
+"\xfe6b" "@" /* <UFE6B> SMALL COMMERCIAL AT */
+"\xff01" "!" /* <UFF01> FULLWIDTH EXCLAMATION MARK */
+"\xff02" "\"" /* <UFF02> FULLWIDTH QUOTATION MARK */
+"\xff03" "#" /* <UFF03> FULLWIDTH NUMBER SIGN */
+"\xff04" "$" /* <UFF04> FULLWIDTH DOLLAR SIGN */
+"\xff05" "%" /* <UFF05> FULLWIDTH PERCENT SIGN */
+"\xff06" "&" /* <UFF06> FULLWIDTH AMPERSAND */
+"\xff07" "'" /* <UFF07> FULLWIDTH APOSTROPHE */
+"\xff08" "(" /* <UFF08> FULLWIDTH LEFT PARENTHESIS */
+"\xff09" ")" /* <UFF09> FULLWIDTH RIGHT PARENTHESIS */
+"\xff0a" "*" /* <UFF0A> FULLWIDTH ASTERISK */
+"\xff0b" "+" /* <UFF0B> FULLWIDTH PLUS SIGN */
+"\xff0c" "," /* <UFF0C> FULLWIDTH COMMA */
+"\xff0d" "-" /* <UFF0D> FULLWIDTH HYPHEN-MINUS */
+"\xff0e" "." /* <UFF0E> FULLWIDTH FULL STOP */
+"\xff0f" "/" /* <UFF0F> FULLWIDTH SOLIDUS */
+"\xff10" "0" /* <UFF10> FULLWIDTH DIGIT ZERO */
+"\xff11" "1" /* <UFF11> FULLWIDTH DIGIT ONE */
+"\xff12" "2" /* <UFF12> FULLWIDTH DIGIT TWO */
+"\xff13" "3" /* <UFF13> FULLWIDTH DIGIT THREE */
+"\xff14" "4" /* <UFF14> FULLWIDTH DIGIT FOUR */
+"\xff15" "5" /* <UFF15> FULLWIDTH DIGIT FIVE */
+"\xff16" "6" /* <UFF16> FULLWIDTH DIGIT SIX */
+"\xff17" "7" /* <UFF17> FULLWIDTH DIGIT SEVEN */
+"\xff18" "8" /* <UFF18> FULLWIDTH DIGIT EIGHT */
+"\xff19" "9" /* <UFF19> FULLWIDTH DIGIT NINE */
+"\xff1a" ":" /* <UFF1A> FULLWIDTH COLON */
+"\xff1b" ";" /* <UFF1B> FULLWIDTH SEMICOLON */
+"\xff1c" "<" /* <UFF1C> FULLWIDTH LESS-THAN SIGN */
+"\xff1d" "=" /* <UFF1D> FULLWIDTH EQUALS SIGN */
+"\xff1e" ">" /* <UFF1E> FULLWIDTH GREATER-THAN SIGN */
+"\xff1f" "?" /* <UFF1F> FULLWIDTH QUESTION MARK */
+"\xff20" "@" /* <UFF20> FULLWIDTH COMMERCIAL AT */
+"\xff21" "A" /* <UFF21> FULLWIDTH LATIN CAPITAL LETTER A */
+"\xff22" "B" /* <UFF22> FULLWIDTH LATIN CAPITAL LETTER B */
+"\xff23" "C" /* <UFF23> FULLWIDTH LATIN CAPITAL LETTER C */
+"\xff24" "D" /* <UFF24> FULLWIDTH LATIN CAPITAL LETTER D */
+"\xff25" "E" /* <UFF25> FULLWIDTH LATIN CAPITAL LETTER E */
+"\xff26" "F" /* <UFF26> FULLWIDTH LATIN CAPITAL LETTER F */
+"\xff27" "G" /* <UFF27> FULLWIDTH LATIN CAPITAL LETTER G */
+"\xff28" "H" /* <UFF28> FULLWIDTH LATIN CAPITAL LETTER H */
+"\xff29" "I" /* <UFF29> FULLWIDTH LATIN CAPITAL LETTER I */
+"\xff2a" "J" /* <UFF2A> FULLWIDTH LATIN CAPITAL LETTER J */
+"\xff2b" "K" /* <UFF2B> FULLWIDTH LATIN CAPITAL LETTER K */
+"\xff2c" "L" /* <UFF2C> FULLWIDTH LATIN CAPITAL LETTER L */
+"\xff2d" "M" /* <UFF2D> FULLWIDTH LATIN CAPITAL LETTER M */
+"\xff2e" "N" /* <UFF2E> FULLWIDTH LATIN CAPITAL LETTER N */
+"\xff2f" "O" /* <UFF2F> FULLWIDTH LATIN CAPITAL LETTER O */
+"\xff30" "P" /* <UFF30> FULLWIDTH LATIN CAPITAL LETTER P */
+"\xff31" "Q" /* <UFF31> FULLWIDTH LATIN CAPITAL LETTER Q */
+"\xff32" "R" /* <UFF32> FULLWIDTH LATIN CAPITAL LETTER R */
+"\xff33" "S" /* <UFF33> FULLWIDTH LATIN CAPITAL LETTER S */
+"\xff34" "T" /* <UFF34> FULLWIDTH LATIN CAPITAL LETTER T */
+"\xff35" "U" /* <UFF35> FULLWIDTH LATIN CAPITAL LETTER U */
+"\xff36" "V" /* <UFF36> FULLWIDTH LATIN CAPITAL LETTER V */
+"\xff37" "W" /* <UFF37> FULLWIDTH LATIN CAPITAL LETTER W */
+"\xff38" "X" /* <UFF38> FULLWIDTH LATIN CAPITAL LETTER X */
+"\xff39" "Y" /* <UFF39> FULLWIDTH LATIN CAPITAL LETTER Y */
+"\xff3a" "Z" /* <UFF3A> FULLWIDTH LATIN CAPITAL LETTER Z */
+"\xff3b" "[" /* <UFF3B> FULLWIDTH LEFT SQUARE BRACKET */
+"\xff3c" "\\" /* <UFF3C> FULLWIDTH REVERSE SOLIDUS */
+"\xff3d" "]" /* <UFF3D> FULLWIDTH RIGHT SQUARE BRACKET */
+"\xff3e" "^" /* <UFF3E> FULLWIDTH CIRCUMFLEX ACCENT */
+"\xff3f" "_" /* <UFF3F> FULLWIDTH LOW LINE */
+"\xff40" "`" /* <UFF40> FULLWIDTH GRAVE ACCENT */
+"\xff41" "a" /* <UFF41> FULLWIDTH LATIN SMALL LETTER A */
+"\xff42" "b" /* <UFF42> FULLWIDTH LATIN SMALL LETTER B */
+"\xff43" "c" /* <UFF43> FULLWIDTH LATIN SMALL LETTER C */
+"\xff44" "d" /* <UFF44> FULLWIDTH LATIN SMALL LETTER D */
+"\xff45" "e" /* <UFF45> FULLWIDTH LATIN SMALL LETTER E */
+"\xff46" "f" /* <UFF46> FULLWIDTH LATIN SMALL LETTER F */
+"\xff47" "g" /* <UFF47> FULLWIDTH LATIN SMALL LETTER G */
+"\xff48" "h" /* <UFF48> FULLWIDTH LATIN SMALL LETTER H */
+"\xff49" "i" /* <UFF49> FULLWIDTH LATIN SMALL LETTER I */
+"\xff4a" "j" /* <UFF4A> FULLWIDTH LATIN SMALL LETTER J */
+"\xff4b" "k" /* <UFF4B> FULLWIDTH LATIN SMALL LETTER K */
+"\xff4c" "l" /* <UFF4C> FULLWIDTH LATIN SMALL LETTER L */
+"\xff4d" "m" /* <UFF4D> FULLWIDTH LATIN SMALL LETTER M */
+"\xff4e" "n" /* <UFF4E> FULLWIDTH LATIN SMALL LETTER N */
+"\xff4f" "o" /* <UFF4F> FULLWIDTH LATIN SMALL LETTER O */
+"\xff50" "p" /* <UFF50> FULLWIDTH LATIN SMALL LETTER P */
+"\xff51" "q" /* <UFF51> FULLWIDTH LATIN SMALL LETTER Q */
+"\xff52" "r" /* <UFF52> FULLWIDTH LATIN SMALL LETTER R */
+"\xff53" "s" /* <UFF53> FULLWIDTH LATIN SMALL LETTER S */
+"\xff54" "t" /* <UFF54> FULLWIDTH LATIN SMALL LETTER T */
+"\xff55" "u" /* <UFF55> FULLWIDTH LATIN SMALL LETTER U */
+"\xff56" "v" /* <UFF56> FULLWIDTH LATIN SMALL LETTER V */
+"\xff57" "w" /* <UFF57> FULLWIDTH LATIN SMALL LETTER W */
+"\xff58" "x" /* <UFF58> FULLWIDTH LATIN SMALL LETTER X */
+"\xff59" "y" /* <UFF59> FULLWIDTH LATIN SMALL LETTER Y */
+"\xff5a" "z" /* <UFF5A> FULLWIDTH LATIN SMALL LETTER Z */
+"\xff5b" "{" /* <UFF5B> FULLWIDTH LEFT CURLY BRACKET */
+"\xff5c" "|" /* <UFF5C> FULLWIDTH VERTICAL LINE */
+"\xff5d" "}" /* <UFF5D> FULLWIDTH RIGHT CURLY BRACKET */
+"\xff5e" "~" /* <UFF5E> FULLWIDTH TILDE */
diff --git a/locale/gen-translit.pl b/locale/gen-translit.pl
index b6fba77c80..d44310b316 100644
--- a/locale/gen-translit.pl
+++ b/locale/gen-translit.pl
@@ -134,7 +134,7 @@ for ($cnt = 0; $cnt <= $#tos; ++$cnt) {
printf(" ");
++$col;
}
- printf("L\"$tos[$cnt]\\0\"");
+ printf("%s", "L\"$tos[$cnt]\\0\"");
$col += length($tos[$cnt]) + 5;
}
printf(";\n");
diff --git a/manual/memory.texi b/manual/memory.texi
index fc364194df..6d86f550a3 100644
--- a/manual/memory.texi
+++ b/manual/memory.texi
@@ -841,7 +841,7 @@ The value of this variable is a pointer to the function that
function to look like @code{malloc}; that is, like:
@smallexample
-void *@var{function} (size_t @var{size}, void *@var{caller})
+void *@var{function} (size_t @var{size}, const void *@var{caller})
@end smallexample
The value of @var{caller} is the return address found on the stack when
@@ -857,7 +857,7 @@ uses whenever it is called. You should define this function to look
like @code{realloc}; that is, like:
@smallexample
-void *@var{function} (void *@var{ptr}, size_t @var{size}, void *@var{caller})
+void *@var{function} (void *@var{ptr}, size_t @var{size}, const void *@var{caller})
@end smallexample
The value of @var{caller} is the return address found on the stack when
@@ -873,7 +873,7 @@ uses whenever it is called. You should define this function to look
like @code{free}; that is, like:
@smallexample
-void @var{function} (void *@var{ptr}, void *@var{caller})
+void @var{function} (void *@var{ptr}, const void *@var{caller})
@end smallexample
The value of @var{caller} is the return address found on the stack when
@@ -889,8 +889,12 @@ uses whenever it is called. You should define this function to look
like @code{memalign}; that is, like:
@smallexample
-void *@var{function} (size_t @var{size}, size_t @var{alignment})
+void *@var{function} (size_t @var{size}, size_t @var{alignment}, const void *@var{caller})
@end smallexample
+
+The value of @var{caller} is the return address found on the stack when
+the @code{memalign} function was called. This value allows you to trace the
+memory consumption of the program.
@end defvar
You must make sure that the function you install as a hook for one of
@@ -936,14 +940,13 @@ assume here that @code{realloc} and @code{memalign} are not used in our
program.
@smallexample
-/* Global variables used to hold underlaying hook values. */
-static void *(*old_malloc_hook) (size_t);
-static void (*old_free_hook) (void*);
+/* Prototypes for __malloc_hook, __free_hook */
+#include <malloc.h>
/* Prototypes for our hooks. */
static void *my_init_hook (void);
-static void *my_malloc_hook (size_t);
-static void my_free_hook (void*);
+static void *my_malloc_hook (size_t, const void *);
+static void my_free_hook (void*, const void *);
/* Override initializing hook from the C library. */
void (*__malloc_initialize_hook) (void) = my_init_hook;
@@ -958,7 +961,7 @@ my_init_hook (void)
@}
static void *
-my_malloc_hook (size_t size)
+my_malloc_hook (size_t size, const void *caller)
@{
void *result;
/* Restore all old hooks */
@@ -978,7 +981,7 @@ my_malloc_hook (size_t size)
@}
static void *
-my_free_hook (void *ptr)
+my_free_hook (void *ptr, const void *caller)
@{
/* Restore all old hooks */
__malloc_hook = old_malloc_hook;
@@ -1109,16 +1112,16 @@ Tell @code{malloc} to perform occasional consistency checks on
dynamically allocated memory, and to call @var{abortfn} when an
inconsistency is found. @xref{Heap Consistency Checking}.
-@item void *(*__malloc_hook) (size_t @var{size}, void *@var{caller})
+@item void *(*__malloc_hook) (size_t @var{size}, const void *@var{caller})
A pointer to a function that @code{malloc} uses whenever it is called.
-@item void *(*__realloc_hook) (void *@var{ptr}, size_t @var{size}, void *@var{caller})
+@item void *(*__realloc_hook) (void *@var{ptr}, size_t @var{size}, const void *@var{caller})
A pointer to a function that @code{realloc} uses whenever it is called.
-@item void (*__free_hook) (void *@var{ptr}, void *@var{caller})
+@item void (*__free_hook) (void *@var{ptr}, const void *@var{caller})
A pointer to a function that @code{free} uses whenever it is called.
-@item void (*__memalign_hook) (size_t @var{size}, size_t @var{alignment})
+@item void (*__memalign_hook) (size_t @var{size}, size_t @var{alignment}, const void *@var{caller})
A pointer to a function that @code{memalign} uses whenever it is called.
@item struct mallinfo mallinfo (void)