summaryrefslogtreecommitdiffstats
path: root/resources/images/text.go
diff options
context:
space:
mode:
Diffstat (limited to 'resources/images/text.go')
-rw-r--r--resources/images/text.go20
1 files changed, 12 insertions, 8 deletions
diff --git a/resources/images/text.go b/resources/images/text.go
index cc67a5d1d..2d3370c61 100644
--- a/resources/images/text.go
+++ b/resources/images/text.go
@@ -91,15 +91,19 @@ func (f textFilter) Draw(dst draw.Image, src image.Image, options *gift.Options)
y := f.y
d.Dot = fixed.P(f.x, f.y)
- // Draw text and break line at max width
- parts := strings.Fields(f.text)
- for _, str := range parts {
- strWith := font.MeasureString(face, str)
- if (d.Dot.X.Ceil() + strWith.Ceil()) >= maxWidth {
- y = y + fontHeight + f.linespacing
- d.Dot = fixed.P(f.x, y)
+ // Draw text line by line, breaking each line at the maximum width.
+ f.text = strings.ReplaceAll(f.text, "\r", "")
+ for _, line := range strings.Split(f.text, "\n") {
+ for _, str := range strings.Fields(line) {
+ strWidth := font.MeasureString(face, str)
+ if (d.Dot.X.Ceil() + strWidth.Ceil()) >= maxWidth {
+ y = y + fontHeight + f.linespacing
+ d.Dot = fixed.P(f.x, y)
+ }
+ d.DrawString(str + " ")
}
- d.DrawString(str + " ")
+ y = y + fontHeight + f.linespacing
+ d.Dot = fixed.P(f.x, y)
}
}