|
5 | 5 | "math/rand"
|
6 | 6 | "sort"
|
7 | 7 | "strconv"
|
8 |
| - "strings" |
9 | 8 | "sync"
|
10 | 9 | "time"
|
11 | 10 |
|
@@ -181,30 +180,23 @@ func (sql *婚姻登记) 花名册(gid int64) (list [][4]string, number int, err
|
181 | 180 | return
|
182 | 181 | }
|
183 | 182 |
|
184 |
| -func slicename(name string) (resultname string) { |
185 |
| - if len(name) <= 21 { // 如果长度在宽度之内直接输出 |
186 |
| - resultname = name |
187 |
| - return |
188 |
| - } |
189 |
| - usermane := []rune(name) // 转utf8形式 |
190 |
| - usermanelen := 0 // 总长度 |
191 |
| - numberlen := 0 // 字个数 |
192 |
| - var singlestr = " ,.;:'|!()[]" // 单宽度长度的字符集 |
| 183 | +func slicename(name string, canvas *gg.Context) (resultname string) { |
| 184 | + usermane := []rune(name) //将每个字符单独放置 |
| 185 | + widthlen := 0 |
| 186 | + numberlen := 0 |
193 | 187 | for i, v := range usermane {
|
194 |
| - if usermanelen > 18 { // 6个汉字或者9个字符 |
195 |
| - numberlen = i |
196 |
| - break |
197 |
| - } |
198 |
| - switch { |
199 |
| - case v/10000 >= 1: |
200 |
| - usermanelen += 3 |
201 |
| - case strings.Contains(singlestr, string(v)): |
202 |
| - usermanelen++ |
203 |
| - default: |
204 |
| - usermanelen += 2 |
| 188 | + width, _ := canvas.MeasureString(string(v)) //获取单个字符的宽度 |
| 189 | + widthlen += int(width) |
| 190 | + if widthlen > 350 { |
| 191 | + break //总宽度不能超过350 |
205 | 192 | }
|
| 193 | + numberlen = i |
| 194 | + } |
| 195 | + if widthlen > 350 { |
| 196 | + resultname = string(usermane[:numberlen-1]) + "......" // 名字切片 |
| 197 | + } else { |
| 198 | + resultname = name |
206 | 199 | }
|
207 |
| - resultname = string(usermane[:numberlen-2]) + "......" // 名字切片 |
208 | 200 | return
|
209 | 201 | }
|
210 | 202 |
|
@@ -567,10 +559,10 @@ func init() {
|
567 | 559 | }
|
568 | 560 | _, h = canvas.MeasureString("焯")
|
569 | 561 | for i, info := range list {
|
570 |
| - canvas.DrawString(slicename(info[0]), 0, float64(260+50*i)-h) |
| 562 | + canvas.DrawString(slicename(info[0], canvas), 0, float64(260+50*i)-h) |
571 | 563 | canvas.DrawString("("+info[1]+")", 350, float64(260+50*i)-h)
|
572 | 564 | canvas.DrawString("←→", 700, float64(260+50*i)-h)
|
573 |
| - canvas.DrawString(slicename(info[2]), 800, float64(260+50*i)-h) |
| 565 | + canvas.DrawString(slicename(info[2], canvas), 800, float64(260+50*i)-h) |
574 | 566 | canvas.DrawString("("+info[3]+")", 1150, float64(260+50*i)-h)
|
575 | 567 | }
|
576 | 568 | data, cl := writer.ToBytes(canvas.Image())
|
@@ -667,13 +659,13 @@ func iscding(ctx *zero.Ctx) {
|
667 | 659 |
|
668 | 660 | // 注入判断 是否为单身
|
669 | 661 | func checkdog(ctx *zero.Ctx) bool {
|
670 |
| - // 得先判断用户是否存在才行在,再重置 |
| 662 | + //得先判断用户是否存在才行在,再重置 |
671 | 663 | fiancee, err := strconv.ParseInt(ctx.State["regex_matched"].([]string)[2], 10, 64)
|
672 | 664 | if err != nil {
|
673 | 665 | ctx.SendChain(message.Text("额,你的target好像不存在?"))
|
674 | 666 | return false
|
675 | 667 | }
|
676 |
| - // 判断是否需要重置 |
| 668 | + //判断是否需要重置 |
677 | 669 | gid := ctx.Event.GroupID
|
678 | 670 | updatetime, err := 民政局.checkupdate(gid)
|
679 | 671 | switch {
|
|
0 commit comments