*** empty log message ***
[m17n/m17n-lib.git] / src / draw.c
index aead2d6..1d5ced0 100644 (file)
@@ -270,6 +270,8 @@ compose_glyph_string (MFrame *frame, MText *mt, int from, int to,
                                               (void **) faces, 64);
 
              mtext_prop_range (mt, Mface, pos, NULL, &face_change, 1);
+             if (face_change == mtext_nchars (mt))
+               face_change++;
              rface = (num > 0 ? mface__realize (frame, faces, num, size)
                       : default_rface);
            }
@@ -291,7 +293,7 @@ compose_glyph_string (MFrame *frame, MText *mt, int from, int to,
       category = mchar_get_prop (c, Mcategory);
       if (category == McatCf)
        g_tmp.category = GLYPH_CATEGORY_FORMATTER;
-      else if (MSYMBOL_NAME (category)[0] == 'M')
+      else if (category != Mnil && MSYMBOL_NAME (category)[0] == 'M')
        g_tmp.category = GLYPH_CATEGORY_MODIFIER;
       else
        g_tmp.category = GLYPH_CATEGORY_NORMAL;
@@ -1456,9 +1458,9 @@ alloc_gstring (MFrame *frame, MText *mt, int pos, MDrawControl *control,
          APPEND_GLYPH (gstring, g_tmp);
          APPEND_GLYPH (gstring, g_tmp);
          APPEND_GLYPH (gstring, g_tmp);
-         gstring->glyphs[1].type = GLYPH_CHAR;
-         gstring->glyphs[1].c = ' ';
-         gstring->glyphs[1].code = ' ';
+         gstring->glyphs[1].type = GLYPH_SPACE;
+         gstring->glyphs[1].c = '\n';
+         gstring->glyphs[1].code = '\n';
        }
       gstring->from = pos;
       g = MGLYPH (0);
@@ -1467,7 +1469,6 @@ alloc_gstring (MFrame *frame, MText *mt, int pos, MDrawControl *control,
       g++;
       g->rface = frame->rface;
       g->pos = pos++, g->to = pos;
-      g->c = '\n', g->code = '\n';
       g++;
       g->rface = frame->rface;
       g->pos = g->to = pos;