make an appropriate one byte string.
(char_bytes): Handle the case that C is a single byte char or has
modifier bits.
{
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);
{
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);