Skip to content

Commit 1461f38

Browse files
committed
优化
1 parent 7f38e55 commit 1461f38

File tree

2 files changed

+48
-3
lines changed

2 files changed

+48
-3
lines changed

title.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ func (t *Title) DrawTitleWithText(info []string) (imgs image.Image, err error) {
9292

9393
// 加载size为108的字体
9494
fontsize1, fontsize2 := 108.0, 54.0
95-
err = canvas.LoadFontFace(t.TextFont, fontsize1)
95+
err = canvas.LoadFontFace(t.TitleFont, fontsize1)
9696
if err != nil {
9797
return
9898
}
@@ -104,7 +104,7 @@ func (t *Title) DrawTitleWithText(info []string) (imgs image.Image, err error) {
104104
canvas.DrawStringAnchored(t.LeftTitle, 25+stringwight/2+t.OffsetX, 25+fontsize1*72/96*0.5+t.OffsetY, 0.5, 0.5)
105105

106106
// 加载size为54的字体
107-
err = canvas.LoadFontFace(t.TitleFont, fontsize2)
107+
err = canvas.LoadFontFace(t.TextFont, fontsize2)
108108
if err != nil {
109109
return
110110
}
@@ -123,13 +123,19 @@ func (t *Title) DrawTitleWithText(info []string) (imgs image.Image, err error) {
123123
canvas.Fill()
124124
canvas.SetRGBA255(15, 15, 15, 255)
125125

126+
// 加载size为54的字体
127+
err = canvas.LoadFontFace(t.TitleFont, fontsize2)
128+
if err != nil {
129+
return
130+
}
131+
126132
stringwight, _ = canvas.MeasureString(t.RightTitle)
127133
canvas.DrawStringAnchored(t.RightTitle, DefaultWidth-40-stringwight/2+t.OffsetX, 40+fontsize2*72/96*0.5+t.OffsetY, 0.5, 0.5)
128134
stringwight, _ = canvas.MeasureString(t.RightSubtitle)
129135
canvas.DrawStringAnchored(t.RightSubtitle, DefaultWidth-40-stringwight/2+t.OffsetX, 40+25+fontsize2*72/96*1.5+t.OffsetY, 0.5, 0.5)
130136

131137
// 加载size为38的字体
132-
err = canvas.LoadFontFace(t.TitleFont, 38)
138+
err = canvas.LoadFontFace(t.TextFont, 38)
133139
if err != nil {
134140
return
135141
}

utils.go

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package rendercard
33
import (
44
"image"
55
"image/color"
6+
"strings"
67

78
"github.com/Coloured-glaze/gg"
89
)
@@ -40,3 +41,41 @@ func Transparency(dst image.Image, magnification float64) image.Image {
4041
}
4142
return dstr
4243
}
44+
45+
// Truncate 截断文字
46+
func Truncate(fontfile string, texts []string, maxW, fontsize float64) ([]string, error) {
47+
one := gg.NewContext(1, 1)
48+
err := one.LoadFontFace(fontfile, fontsize)
49+
if err != nil {
50+
return nil, err
51+
}
52+
newtexts := make([]string, 0, len(texts)*2)
53+
for i := 0; i < len(texts); i++ {
54+
newlinetext, textw, tmpw := "", 0.0, 0.0
55+
text := texts[i]
56+
for len(texts[i]) > 0 {
57+
var tmp strings.Builder
58+
tmp.Grow(len(text))
59+
res := make([]rune, 0, len(text))
60+
for _, r := range text {
61+
tmp.WriteRune(r)
62+
width, _ := one.MeasureString(tmp.String()) // 获取文字宽度
63+
if width > maxW { // 如果宽度大于文字边距
64+
break // 跳出
65+
} else {
66+
res = append(res, r) // 写入
67+
}
68+
newlinetext = string(res)
69+
}
70+
newtexts = append(newtexts, newlinetext)
71+
if tmpw > textw {
72+
textw = tmpw
73+
}
74+
if len(newlinetext) >= len(texts[i]) {
75+
break
76+
}
77+
texts[i] = texts[i][len(newlinetext):]
78+
}
79+
}
80+
return newtexts, nil
81+
}

0 commit comments

Comments
 (0)