X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/putty/blobdiff_plain/c6958dfe2ab270f7d02d02b21d4a4008478a5ea9..6ac7f054182a91601c70c93b663c10149a766fb7:/unix/pterm.c diff --git a/unix/pterm.c b/unix/pterm.c index 7efce806..13cd994f 100644 --- a/unix/pterm.c +++ b/unix/pterm.c @@ -1973,7 +1973,7 @@ void do_text_internal(Context ctx, int x, int y, wchar_t *text, int len, y*inst->font_height+inst->cfg.window_border, x*inst->font_width+inst->cfg.window_border + 2*i+1, y*inst->font_height+inst->cfg.window_border, - len * inst->font_width - i, inst->font_height); + len * widefactor * inst->font_width - i, inst->font_height); } len *= 2; if ((lattr & LATTR_MODE) != LATTR_WIDE) { @@ -1987,9 +1987,9 @@ void do_text_internal(Context ctx, int x, int y, wchar_t *text, int len, gdk_draw_pixmap(inst->pixmap, gc, inst->pixmap, x*inst->font_width+inst->cfg.window_border, y*inst->font_height+inst->cfg.window_border+dt*i+db, - x*widefactor*inst->font_width+inst->cfg.window_border, + x*inst->font_width+inst->cfg.window_border, y*inst->font_height+inst->cfg.window_border+dt*(i+1), - len * inst->font_width, inst->font_height-i-1); + len * widefactor * inst->font_width, inst->font_height-i-1); } } } @@ -2049,6 +2049,9 @@ void do_cursor(Context ctx, int x, int y, wchar_t *text, int len, active = 0; do_text_internal(ctx, x, y, text, len, attr, lattr); + if (attr & TATTR_COMBINING) + len = 1; + if (attr & ATTR_WIDE) { widefactor = 2; } else { @@ -2075,7 +2078,7 @@ void do_cursor(Context ctx, int x, int y, wchar_t *text, int len, gdk_draw_rectangle(inst->pixmap, gc, 0, x*inst->font_width+inst->cfg.window_border, y*inst->font_height+inst->cfg.window_border, - len*inst->font_width-1, inst->font_height-1); + len*widefactor*inst->font_width-1, inst->font_height-1); } } else { int uheight; @@ -2097,7 +2100,7 @@ void do_cursor(Context ctx, int x, int y, wchar_t *text, int len, starty = y * inst->font_height + inst->cfg.window_border + uheight; dx = 1; dy = 0; - length = len * char_width; + length = len * widefactor * char_width; } else { int xadjust = 0; if (attr & TATTR_RIGHTCURS) @@ -2734,8 +2737,8 @@ void setup_fonts_ucs(struct gui_data *inst) inst->font_width = gdk_char_width(inst->fonts[0], ' '); inst->font_height = inst->fonts[0]->ascent + inst->fonts[0]->descent; - inst->direct_to_font = init_ucs(&inst->ucsdata, - inst->cfg.line_codepage, font_charset, + inst->direct_to_font = init_ucs(&inst->ucsdata, inst->cfg.line_codepage, + inst->cfg.utf8_override, font_charset, inst->cfg.vtmode); }