+ MSymbol category;
+
+ if (pos == stop)
+ {
+ if (pos == to)
+ break;
+ if (pos < mtext_nchars (mt))
+ {
+ MFont *font = rface->font;
+ MFace *faces[64];
+ int num;
+
+ if (pos == font_change)
+ {
+ font = mtext_get_prop (mt, pos, Mfont);
+ mtext_prop_range (mt, Mfont, pos, NULL, &font_change, 0);
+ if (font_change == mtext_nchars (mt))
+ font_change++;
+ }
+ if (pos == face_change)
+ {
+ num = mtext_get_prop_values (mt, pos, Mface,
+ (void **) faces, 64);
+ mtext_prop_range (mt, Mface, pos, NULL, &face_change, 1);
+ if (face_change == mtext_nchars (mt))
+ face_change++;
+ }
+ else
+ {
+ faces[0] = &rface->face;
+ num = 1;
+ }
+ rface = mface__realize (frame, faces, num, size, font);
+ }
+ else
+ rface = default_rface;
+ stop = to;
+ if (stop > font_change)
+ stop = font_change;
+ if (stop > face_change)
+ stop = face_change;
+ }