Tweak BIG5-2003 mapping to match Ping Yeh's explanations.
diff --git a/ChangeLog b/ChangeLog
index f43274c..0779cf2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2005-08-12 Bruno Haible <bruno@clisp.org>
+
+ * lib/big5_2003.h: Map 0xF9FA..0xF9FD differently.
+ * tests/BIG5-2003.TXT: Likewise.
+ * tests/BIG5-2003.IRREVERSIBLE.TXT: New file.
+ Reported by Ping Yeh <ping@pingyeh.net>.
+
2005-07-24 Bruno Haible <bruno@clisp.org>
Tidy up exported symbols.
diff --git a/lib/big5_2003.h b/lib/big5_2003.h
index 734ab8b..b532ce6 100644
--- a/lib/big5_2003.h
+++ b/lib/big5_2003.h
@@ -90,12 +90,24 @@
*
* 7. Box drawing characters are added at 0xF9DD..0xF9FE.
*
+ * Note: 4 of these characters are mapped in a non-inversible way, because
+ * Unicode does not yet include the corresponding characters:
+ *
+ * code Unicode approximation
+ * 0xF9FA BOX DRAWINGS DOUBLE ARC DOWN AND RIGHT 0x2554
+ * 0xF9FB BOX DRAWINGS DOUBLE ARC DOWN AND LEFT 0x2557
+ * 0xF9FC BOX DRAWINGS DOUBLE ARC UP AND RIGHT 0x255A
+ * 0xF9FD BOX DRAWINGS DOUBLE ARC UP AND LEFT 0x255D
+ *
* 8. Private area mappings are added:
*
* code Unicode
* 0x{81..8D}{40..7E,A1..FE} U+EEB8..U+F6B0
* 0x{8E..A0}{40..7E,A1..FE} U+E311..U+EEB7
* 0x{FA..FE}{40..7E,A1..FE} U+E000..U+E310
+ *
+ * These mappings are not contained in the BSMI Big5-2003 standard. However,
+ * they were contained in a draft of it.
*/
static const unsigned short big5_2003_2uni_pagea1[314] = {
@@ -164,7 +176,7 @@
0x255d, 0x2552, 0x2564, 0x2555, 0x255e, 0x256a, 0x2561, 0x2558,
0x2567, 0x255b, 0x2553, 0x2565, 0x2556, 0x255f, 0x256b, 0x2562,
0x2559, 0x2568, 0x255c, 0x2551, 0x2550,
- 0x25dc, 0x25dd, 0x25df, 0x25de, /* not 0x2554, 0x2557, 0x255a, 0x255d, */
+ 0x2554, 0x2557, 0x255a, 0x255d, /* not invertible */
0x2593,
};
@@ -321,10 +333,6 @@
}
if (wc == 0x2574) { buf[0] = 0xa1; buf[1] = 0x5a; ret = 2; break; }
if (wc == 0x2593) { buf[0] = 0xf9; buf[1] = 0xfe; ret = 2; break; }
- if (wc == 0x25dc) { buf[0] = 0xf9; buf[1] = 0xfa; ret = 2; break; }
- if (wc == 0x25dd) { buf[0] = 0xf9; buf[1] = 0xfb; ret = 2; break; }
- if (wc == 0x25de) { buf[0] = 0xf9; buf[1] = 0xfd; ret = 2; break; }
- if (wc == 0x25df) { buf[0] = 0xf9; buf[1] = 0xfc; ret = 2; break; }
break;
case 0x26:
if (wc == 0x2609 || wc == 0x2641)
diff --git a/tests/BIG5-2003.IRREVERSIBLE.TXT b/tests/BIG5-2003.IRREVERSIBLE.TXT
new file mode 100644
index 0000000..5c56fd3
--- /dev/null
+++ b/tests/BIG5-2003.IRREVERSIBLE.TXT
@@ -0,0 +1,4 @@
+0xF9FA 0x2554
+0xF9FB 0x2557
+0xF9FC 0x255A
+0xF9FD 0x255D
diff --git a/tests/BIG5-2003.TXT b/tests/BIG5-2003.TXT
index e93420b..865fe38 100644
--- a/tests/BIG5-2003.TXT
+++ b/tests/BIG5-2003.TXT
@@ -18918,10 +18918,10 @@
0xF9F7 0x255C
0xF9F8 0x2551
0xF9F9 0x2550
-0xF9FA 0x25DC
-0xF9FB 0x25DD
-0xF9FC 0x25DF
-0xF9FD 0x25DE
+0xF9FA 0x2554
+0xF9FB 0x2557
+0xF9FC 0x255A
+0xF9FD 0x255D
0xF9FE 0x2593
0xFA40 0xE000
0xFA41 0xE001