Add two new SBCSes: BS 4730 (alias UK-ASCII) and DEC graphics (alias VT100
authorben <ben@cda61777-01e9-0310-a592-d414129be87e>
Sun, 18 Sep 2005 14:53:19 +0000 (14:53 +0000)
committerben <ben@cda61777-01e9-0310-a592-d414129be87e>
Sun, 18 Sep 2005 14:53:19 +0000 (14:53 +0000)
line-drawing).  I think this means that libcharset supports all the character
sets that PuTTY supports, which is nice.

git-svn-id: svn://svn.tartarus.org/sgt/charset@6330 cda61777-01e9-0310-a592-d414129be87e

charset.h
iso2022.c
localenc.c
mimeenc.c
sbcs.dat

index a216508..cc7b324 100644 (file)
--- a/charset.h
+++ b/charset.h
@@ -86,7 +86,9 @@ typedef enum {
     CS_CP949,
     CS_PDF,
     CS_CTEXT,
-    CS_ISO2022
+    CS_ISO2022,
+    CS_BS4730,
+    CS_DEC_GRAPHICS
 } charset_t;
 
 typedef struct {
index 726770d..9a11a31 100644 (file)
--- a/iso2022.c
+++ b/iso2022.c
@@ -43,9 +43,10 @@ const struct iso2022_subcharset {
     const sbcs_data *sbcs_base;
     long int (*dbcs_fn)(int, int);
 } iso2022_subcharsets[] = {
-    { S4, 0, 'B', 0x00, &sbcsdata_CS_ASCII },
-
+    { S4, 0, '0', 0x00, &sbcsdata_CS_DEC_GRAPHICS },
     { S4, 0, '<', 0x80, &sbcsdata_CS_DEC_MCS },
+    { S4, 0, 'A', 0x00, &sbcsdata_CS_BS4730 },
+    { S4, 0, 'B', 0x00, &sbcsdata_CS_ASCII },
     { S4, 0, 'I', 0x80, &sbcsdata_CS_JISX0201 },
     { S4, 0, 'J', 0x00, &sbcsdata_CS_JISX0201 },
     { S4, 0, '~' },
index 4be2a39..1df0fd5 100644 (file)
@@ -28,6 +28,7 @@ static const struct {
 } localencs[] = {
     { "<UNKNOWN>", CS_NONE, 0 },
     { "ASCII", CS_ASCII, 1 },
+    { "BS 4730", CS_BS4730, 1 },
     { "ISO-8859-1", CS_ISO8859_1, 1 },
     { "ISO-8859-1 with X11 line drawing", CS_ISO8859_1_X11, 0 },
     { "ISO-8859-2", CS_ISO8859_2, 1 },
@@ -94,6 +95,9 @@ static const struct {
     { "VISCII", CS_VISCII, 1 },
     { "HP ROMAN8", CS_HP_ROMAN8, 1 },
     { "DEC MCS", CS_DEC_MCS, 1 },
+    { "DEC graphics", CS_DEC_GRAPHICS, 1 },
+    { "DEC-graphics", CS_DEC_GRAPHICS, 0 },
+    { "DECgraphics", CS_DEC_GRAPHICS, 0 },
     { "UTF-8", CS_UTF8, 1 },
     { "UTF-7", CS_UTF7, 1 },
     { "UTF-7-conservative", CS_UTF7_CONSERVATIVE, 0 },
index 34066dd..9916cf4 100644 (file)
--- a/mimeenc.c
+++ b/mimeenc.c
@@ -40,6 +40,13 @@ static const struct {
     { "csASCII", CS_ASCII },
     { "646", CS_ASCII },              /* WILD */
 
+    { "BS_4730", CS_BS4730 },
+    { "iso-ir-4", CS_BS4730 },
+    { "ISO646-GB", CS_BS4730 },
+    { "gb", CS_BS4730 },
+    { "uk", CS_BS4730 },
+    { "csISO4UnitedKingdom", CS_BS4730 },
+
     { "ISO-8859-1", CS_ISO8859_1 },
     { "ISO8859-1", CS_ISO8859_1 },     /* WILD */
     { "iso-ir-100", CS_ISO8859_1 },
index 75080f3..93e0676 100644 (file)
--- a/sbcs.dat
+++ b/sbcs.dat
@@ -23,6 +23,52 @@ XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX
 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX
 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX
 
+  BS 4730, sometimes known as UK-ASCII.  This is ASCII with
+  U+0023 NUMBER SIGN replaced by U+00A3 POUND SIGN, and U+007E TILDE
+  replaced by U+203E OVERLINE.  For some reason, DEC terminals don't
+  implement the latter.
+
+charset CS_BS4730
+0000 0001 0002 0003 0004 0005 0006 0007 0008 0009 000a 000b 000c 000d 000e 000f
+0010 0011 0012 0013 0014 0015 0016 0017 0018 0019 001a 001b 001c 001d 001e 001f
+0020 0021 0022 00A3 0024 0025 0026 0027 0028 0029 002a 002b 002c 002d 002e 002f
+0030 0031 0032 0033 0034 0035 0036 0037 0038 0039 003a 003b 003c 003d 003e 003f
+0040 0041 0042 0043 0044 0045 0046 0047 0048 0049 004a 004b 004c 004d 004e 004f
+0050 0051 0052 0053 0054 0055 0056 0057 0058 0059 005a 005b 005c 005d 005e 005f
+0060 0061 0062 0063 0064 0065 0066 0067 0068 0069 006a 006b 006c 006d 006e 006f
+0070 0071 0072 0073 0074 0075 0076 0077 0078 0079 007a 007b 007c 007d 203e 007f
+XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX
+XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX
+XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX
+XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX
+XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX
+XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX
+XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX
+XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX
+
+  VT100 line drawing character set.  There seems to be no definitive
+  mapping of this onto Unicode, but the only uncertain mapping is for
+  code point 60, which might be U+2666 BLACK DIAMOND SUIT, U+25C6
+  BLACK DIAMOND, or in Apple's case, U+2022 BULLET.
+
+charset CS_DEC_GRAPHICS
+0000 0001 0002 0003 0004 0005 0006 0007 0008 0009 000a 000b 000c 000d 000e 000f
+0010 0011 0012 0013 0014 0015 0016 0017 0018 0019 001a 001b 001c 001d 001e 001f
+0020 0021 0022 0023 0024 0025 0026 0027 0028 0029 002a 002b 002c 002d 002e 002f
+0030 0031 0032 0033 0034 0035 0036 0037 0038 0039 003a 003b 003c 003d 003e 003f
+0040 0041 0042 0043 0044 0045 0046 0047 0048 0049 004a 004b 004c 004d 004e 004f
+0050 0051 0052 0053 0054 0055 0056 0057 0058 0059 005a 005b 005c 005d 005e 0020
+2666 2592 2409 240c 240d 240a 00b0 00b1 2424 240b 2518 2510 250c 2514 253c 23ba
+23bb 2500 23bc 23bd 251c 2524 2534 252c 2502 2264 2265 03c0 2260 00a3 00b7 007f
+XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX
+XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX
+XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX
+XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX
+XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX
+XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX
+XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX
+XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX
+
   To generate an SBCS table from a unicode.org mapping table:
 
   gensbcs() {