Bug

Note: This bug is fixed in the emacs-23 branch now, so emacs 23.4 (once released) should handle this correctly again. See also the emacs bug tracker.

screenshot showing broken glyphs
This is Proof General running with emacs head. Version 23.3 behaves the same, while 23.2 is fine.

Desired behaviour

The characters should not be truncated.
screenshot without broken glyphs
This is Proof General running on emacs head with the work-around below.

Analysis

The behaviour was introduced with this patch ("Fix handling of 8-bit characters in a display table.")
I do not really understand the code, but with the following change the correct behaviour is restored.

diff --git a/src/xdisp.c b/src/xdisp.c
index 3c9d385..20365ff 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -5926,8 +5926,7 @@ get_next_display_element (struct it *it)
                           : STRINGP (it->string) ? IT_STRING_CHARPOS (*it)
                           : IT_CHARPOS (*it));

-         it->face_id = FACE_FOR_CHAR (it->f, face, it->char_to_display, pos,
-                                      it->string);
+         it->face_id = FACE_FOR_CHAR (it->f, face, it->c, pos, it->string);
        }
     }
 #endif

This work-around is not correct though. See the emacs bug tracker for a correct fix.