@@ -508,16 +508,20 @@ var Text = new Class({
508508 {
509509 var result = '' ;
510510 var lines = text . split ( this . splitRegExp ) ;
511+ var lastLineIndex = lines . length - 1 ;
512+ var whiteSpaceWidth = context . measureText ( ' ' ) . width ;
511513
512- for ( var i = 0 ; i < lines . length ; i ++ )
514+ for ( var i = 0 ; i <= lastLineIndex ; i ++ )
513515 {
514516 var spaceLeft = wordWrapWidth ;
515517 var words = lines [ i ] . split ( ' ' ) ;
518+ var lastWordIndex = words . length - 1 ;
516519
517- for ( var j = 0 ; j < words . length ; j ++ )
520+ for ( var j = 0 ; j <= lastWordIndex ; j ++ )
518521 {
519- var wordWidth = context . measureText ( words [ j ] ) . width ;
520- var wordWidthWithSpace = wordWidth + context . measureText ( ' ' ) . width ;
522+ var word = words [ j ] ;
523+ var wordWidth = context . measureText ( word ) . width ;
524+ var wordWidthWithSpace = wordWidth + whiteSpaceWidth ;
521525
522526 if ( wordWidthWithSpace > spaceLeft )
523527 {
@@ -526,24 +530,24 @@ var Text = new Class({
526530 if ( j > 0 )
527531 {
528532 result += '\n' ;
533+ spaceLeft = wordWrapWidth ;
529534 }
535+ }
530536
531- result += words [ j ] + ' ' ;
532- spaceLeft = wordWrapWidth - wordWidthWithSpace ;
537+ result += word ;
538+
539+ if ( j < lastWordIndex )
540+ {
541+ result += ' ' ;
542+ spaceLeft -= wordWidthWithSpace ;
533543 }
534544 else
535545 {
536- spaceLeft -= wordWidthWithSpace ;
537- result += words [ j ] ;
538-
539- if ( j < ( words . length - 1 ) )
540- {
541- result += ' ' ;
542- }
546+ spaceLeft -= wordWidth ;
543547 }
544548 }
545549
546- if ( i < lines . length - 1 )
550+ if ( i < lastLineIndex )
547551 {
548552 result += '\n' ;
549553 }
0 commit comments