diff options
author | Kenichi Handa <handa@m17n.org> | 2000-05-25 01:30:37 +0000 |
---|---|---|
committer | Kenichi Handa <handa@m17n.org> | 2000-05-25 01:30:37 +0000 |
commit | 5c464c4d2ced85f946a85e17d02d09c28091fe76 (patch) | |
tree | 3c85a68d743fd52cbd1eeff50c52340c60316e42 | |
parent | eacfd7fe019ac55b576aad3ec7b2273aa3405273 (diff) | |
download | emacs-5c464c4d2ced85f946a85e17d02d09c28091fe76.tar.gz emacs-5c464c4d2ced85f946a85e17d02d09c28091fe76.tar.bz2 emacs-5c464c4d2ced85f946a85e17d02d09c28091fe76.zip |
(ccl_driver) <CCL_ReadMultibyteChar2>
<CCL_WriteMultibyteChar2>: Handle charsets eight-bit-control and
eight-bit-graphic correctly.
-rw-r--r-- | src/ccl.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/ccl.c b/src/ccl.c index d8941fc9db6..b9840c90ac0 100644 --- a/src/ccl.c +++ b/src/ccl.c @@ -1191,6 +1191,18 @@ ccl_driver (ccl, source, destination, src_bytes, dst_bytes, consumed) reg[rrr] = ((i << 7) | (*src & 0x7F)); src++; } + else if (i == LEADING_CODE_8_BIT_CONTROL) + { + if ((src + 1) >= src_end) + goto ccl_read_multibyte_character_suspend; + reg[RRR] = CHARSET_8_BIT_CONTROL; + reg[rrr] = (*src++ - 0x20); + } + else if (i >= 0xA0) + { + reg[RRR] = CHARSET_8_BIT_GRAPHIC; + reg[rrr] = i; + } else { /* INVALID CODE. Return a single byte character. */ @@ -1215,7 +1227,9 @@ ccl_driver (ccl, source, destination, src_bytes, dst_bytes, consumed) case CCL_WriteMultibyteChar2: i = reg[RRR]; /* charset */ - if (i == CHARSET_ASCII) + if (i == CHARSET_ASCII + || i == CHARSET_8_BIT_CONTROL + || i == CHARSET_8_BIT_GRAPHIC) i = reg[rrr] & 0xFF; else if (CHARSET_DIMENSION (i) == 1) i = ((i - 0x70) << 7) | (reg[rrr] & 0x7F); |