changeset 23767:1dfb6d38354f

(non_ascii_char_to_string): If C has modifier bits, make an appropriate one byte string. (char_bytes): Handle the case that C is a single byte char or has modifier bits.
author Kenichi Handa <handa@m17n.org>
date Thu, 26 Nov 1998 08:12:12 +0000
parents 5ee484eaf2bb
children 3d079e8b2edb
files src/charset.c
diffstat 1 files changed, 17 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/charset.c	Thu Nov 26 08:12:12 1998 +0000
+++ b/src/charset.c	Thu Nov 26 08:12:12 1998 +0000
@@ -141,6 +141,20 @@
 {
   int charset, c1, c2;
 
+  if (c & ~GLYPH_MASK_CHAR)
+    {
+      if (c & CHAR_META)
+	/* Move the meta bit to the right place for a string.  */
+	c |= 0x80;
+      if (c & CHAR_CTL)
+	c &= 0x9F;
+      else if (c & CHAR_SHIFT && (c & 0x7F) >= 'a' && (c & 0x7F) <= 'z')
+	c -= 'a' - 'A';
+      *str = workbuf;
+      *workbuf = c;
+      return 1;
+    }
+
   if (c < 0)
     invalid_character (c);
 
@@ -1078,6 +1092,9 @@
 {
   int bytes;
 
+  if (SINGLE_BYTE_CHAR_P (c) || (c & ~GLYPH_MASK_CHAR))
+    return 1;
+
   if (COMPOSITE_CHAR_P (c))
     {
       unsigned int id = COMPOSITE_CHAR_ID (c);