# HG changeset patch # User Frank Benoit # Date 1211209719 -7200 # Node ID f08216d53777327fbad2e3d3bb39f85e3bc45e6a # Parent 239b9a56bd5f45ba9462089ec758daabc41d6a8c Fix merge bug in TextLayout diff -r 239b9a56bd5f -r f08216d53777 dwt/dwthelper/utils.d --- a/dwt/dwthelper/utils.d Mon May 19 14:34:47 2008 +0200 +++ b/dwt/dwthelper/utils.d Mon May 19 17:08:39 2008 +0200 @@ -443,7 +443,8 @@ i+=4; } else{ - tango.text.convert.Utf.onUnicodeError( "invalid utf8 input "~str, i ); + Trace.formatln( "invalid utf8 characters: {:X2}", cast(ubyte[]) str ); + tango.text.convert.Utf.onUnicodeError( "invalid utf8 input", i ); } searchRelCp--; } diff -r 239b9a56bd5f -r f08216d53777 dwt/graphics/TextLayout.d --- a/dwt/graphics/TextLayout.d Mon May 19 14:34:47 2008 +0200 +++ b/dwt/graphics/TextLayout.d Mon May 19 17:08:39 2008 +0200 @@ -77,8 +77,14 @@ // RTL_MARK RIGHT-TO-LEFT MARK // ZWS ZERO WIDTH SPACE // ZWNBS ZERO WIDTH NO-BREAK SPACE - static const dchar LTR_MARK = '\u200E', RTL_MARK = '\u200F', ZWS = '\u200B', ZWNBS = '\uFEFF'; - static const String STR_LTR_MARK = "\u200E", STR_RTL_MARK = "\u200F", STR_ZWS = "\u200B", STR_ZWNBS = "\uFEFF"; + static const dchar LTR_MARK = '\u200E'; // x"E2 80 8E" LEFT-TO-RIGHT MARK + static const dchar RTL_MARK = '\u200F'; // x"E2 80 8F" RIGHT-TO-LEFT MARK + static const dchar ZWS = '\u200B'; // x"E2 80 8B" ZERO WIDTH SPACE + static const dchar ZWNBS = '\uFEFF'; // x"EF BB BF" ZERO WIDTH NO-BREAK SPACE + static const String STR_LTR_MARK = "\u200E"; + static const String STR_RTL_MARK = "\u200F"; + static const String STR_ZWS = "\u200B"; + static const String STR_ZWNBS = "\uFEFF"; /** * Constructs a new instance of this class on the given device. @@ -159,9 +165,7 @@ oldPos = pos; lineIndex++; } - segmentsText.getChars(oldPos, segementsLength, chars, oldPos + lineIndex * 2); - chars[ oldPos + lineIndex*6 .. oldPos + lineIndex*6 + segementsLength - oldPos ] = - segmentsText[ oldPos .. segementsLength ]; + segmentsText.getChars(oldPos, segementsLength, chars, oldPos + lineIndex * 6); String buffer = chars;// Converter.wcsToMbcs(null, chars, false); OS.pango_layout_set_text (layout, buffer.ptr, buffer.length);