- 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);
+ 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);