@@ -678,12 +678,21 @@ Bitmap.prototype.drawSmallText = function(text, x, y, maxWidth, lineHeight, alig
678678 bitmap . outlineColor = this . outlineColor ;
679679 bitmap . outlineWidth = this . outlineWidth * minFontSize / this . fontSize ;
680680 maxWidth = maxWidth || 816 ;
681+ var height = this . fontSize * 1.5 ;
681682 var scaledMaxWidth = maxWidth * minFontSize / this . fontSize ;
682- if ( scaledMaxWidth > bitmap . width ) {
683- bitmap . width *= 2 ;
684- }
685- bitmap . drawText ( text , 0 , 0 , scaledMaxWidth , minFontSize , align ) ;
686- this . blt ( bitmap , 0 , 0 , scaledMaxWidth , minFontSize , x , y + ( lineHeight - this . fontSize ) / 2 , maxWidth , this . fontSize ) ;
683+ var scaledMaxWidthWithOutline = scaledMaxWidth + bitmap . outlineWidth * 2 ;
684+ var scaledHeight = height * minFontSize / this . fontSize ;
685+ var scaledHeightWithOutline = scaledHeight + bitmap . outlineWidth * 2 ;
686+
687+ var bitmapWidth = bitmap . width ;
688+ var bitmapHeight = bitmap . height ;
689+ while ( scaledMaxWidthWithOutline > bitmapWidth ) bitmapWidth *= 2 ;
690+ while ( scaledHeightWithOutline > bitmapHeight ) bitmapHeight *= 2 ;
691+ if ( bitmap . width !== bitmapWidth || bitmap . height !== bitmapHeight ) bitmap . resize ( bitmapWidth , bitmapHeight ) ;
692+
693+ bitmap . drawText ( text , bitmap . outlineWidth , bitmap . outlineWidth , scaledMaxWidth , minFontSize , align ) ;
694+ this . blt ( bitmap , 0 , 0 , scaledMaxWidthWithOutline , scaledHeightWithOutline ,
695+ x - this . outlineWidth , y - this . outlineWidth + ( lineHeight - this . fontSize ) / 2 , maxWidth + this . outlineWidth * 2 , height + this . outlineWidth * 2 ) ;
687696 bitmap . clear ( ) ;
688697} ;
689698
0 commit comments