@@ -2429,9 +2429,14 @@ gui_outstr_nowrap(
24292429 int cl ; /* byte length of current char */
24302430 int comping ; /* current char is composing */
24312431 int scol = col ; /* screen column */
2432- int curr_wide ; /* use 'guifontwide' */
2432+ int curr_wide = FALSE; /* use 'guifontwide' */
24332433 int prev_wide = FALSE;
24342434 int wide_changed ;
2435+ # ifdef WIN3264
2436+ int sep_comp = FALSE; /* Don't separate composing chars. */
2437+ # else
2438+ int sep_comp = TRUE; /* Separate composing chars. */
2439+ # endif
24352440
24362441 /* Break the string at a composing character, it has to be drawn on
24372442 * top of the previous character. */
@@ -2441,17 +2446,20 @@ gui_outstr_nowrap(
24412446 {
24422447 c = utf_ptr2char (s + i );
24432448 cn = utf_char2cells (c );
2444- if (cn > 1
2445- # ifdef FEAT_XFONTSET
2446- && fontset == NOFONTSET
2447- # endif
2448- && wide_font != NOFONT )
2449- curr_wide = TRUE;
2450- else
2451- curr_wide = FALSE;
24522449 comping = utf_iscomposing (c );
24532450 if (!comping ) /* count cells from non-composing chars */
24542451 cells += cn ;
2452+ if (!comping || sep_comp )
2453+ {
2454+ if (cn > 1
2455+ # ifdef FEAT_XFONTSET
2456+ && fontset == NOFONTSET
2457+ # endif
2458+ && wide_font != NOFONT )
2459+ curr_wide = TRUE;
2460+ else
2461+ curr_wide = FALSE;
2462+ }
24552463 cl = utf_ptr2len (s + i );
24562464 if (cl == 0 ) /* hit end of string */
24572465 len = i + cl ; /* len must be wrong "cannot happen" */
@@ -2460,7 +2468,8 @@ gui_outstr_nowrap(
24602468
24612469 /* Print the string so far if it's the last character or there is
24622470 * a composing character. */
2463- if (i + cl >= len || (comping && i > start ) || wide_changed
2471+ if (i + cl >= len || (comping && sep_comp && i > start )
2472+ || wide_changed
24642473# if defined(FEAT_GUI_X11 )
24652474 || (cn > 1
24662475# ifdef FEAT_XFONTSET
@@ -2472,7 +2481,7 @@ gui_outstr_nowrap(
24722481# endif
24732482 )
24742483 {
2475- if (comping || wide_changed )
2484+ if (( comping && sep_comp ) || wide_changed )
24762485 thislen = i - start ;
24772486 else
24782487 thislen = i - start + cl ;
@@ -2490,7 +2499,7 @@ gui_outstr_nowrap(
24902499 cells = 0 ;
24912500 /* Adjust to not draw a character which width is changed
24922501 * against with last one. */
2493- if (wide_changed && !comping )
2502+ if (wide_changed && !( comping && sep_comp ) )
24942503 {
24952504 scol -= cn ;
24962505 cl = 0 ;
@@ -2509,7 +2518,7 @@ gui_outstr_nowrap(
25092518# endif
25102519 }
25112520 /* Draw a composing char on top of the previous char. */
2512- if (comping )
2521+ if (comping && sep_comp )
25132522 {
25142523# if (defined(__APPLE_CC__ ) || defined(__MRC__ )) && TARGET_API_MAC_CARBON
25152524 /* Carbon ATSUI autodraws composing char over previous char */
0 commit comments