Skip to content

Commit b2c3160

Browse files
authored
Merge pull request rpgtkoolmv#172 from rutan/fix/draw_small_text
fix corrupted part of descender and outline when using Bitmap#drawSmallText
2 parents e64d6f4 + fd90ddd commit b2c3160

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

js/rpg_core/Bitmap.js

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)