## 52fix_screen_utf8_nfd.dpatch by Nobuhiro Iwamatsu ## ## DP: screen outputs screen "ÿ" after a connected character. ## DP: This is a character without the need. ## DP: This happens in UTF-8 environment. ## DP: Before : screen$ ruby1.9.1 -e 'puts "\u304b\u3099.."' ## DP: がÿ... ## DP: patch applied : screen $ ruby1.9.1 -e 'puts "\u304b\u3099.."' ## DP: が.. ## DP: Report from http://d.hatena.ne.jp/mrkn/20101014/fix_screen_utf8_nfd_bug ## DP: Copyright Kenta Murata (mrkn) ## DP: Modified by Nobuhiro Iwamatsu Index: screen/ansi.c =================================================================== --- screen.orig/ansi.c 2012-03-20 22:15:02.000000000 +0100 +++ screen/ansi.c 2012-03-20 22:41:45.000000000 +0100 @@ -725,6 +725,10 @@ LPutChar(&curr->w_layer, &omc, ox, oy); LGotoPos(&curr->w_layer, curr->w_x, curr->w_y); } + if (curr->w_mbcs) + { + curr->w_rend.mbcs = curr->w_mbcs = 0; + } break; } font = curr->w_rend.font; Index: screen/display.c =================================================================== --- screen.orig/display.c 2012-03-20 22:41:28.000000000 +0100 +++ screen/display.c 2012-03-20 22:41:45.000000000 +0100 @@ -603,7 +603,7 @@ D_x += D_AM ? 1 : -1; D_mbcs = 0; } - else if (utf8_isdouble(c)) + else if (utf8_isdouble(c) || (c >= 0xd800 && c < 0xe000)) { D_mbcs = c; D_x++;