截断文字
(one *gg.Context, text string, maxW float64)
| 413 | |
| 414 | // 截断文字 |
| 415 | func truncate(one *gg.Context, text string, maxW float64) (string, float64) { |
| 416 | var tmp strings.Builder |
| 417 | tmp.Grow(len(text)) |
| 418 | res, w := make([]rune, 0, len(text)), 0.0 |
| 419 | for _, r := range text { |
| 420 | tmp.WriteRune(r) |
| 421 | width, _ := one.MeasureString(tmp.String()) // 获取文字宽度 |
| 422 | if width > maxW { // 如果宽度大于文字边距 |
| 423 | break // 跳出 |
| 424 | } |
| 425 | w = width |
| 426 | res = append(res, r) // 写入 |
| 427 | } |
| 428 | return string(res), w |
| 429 | } |
| 430 | |
| 431 | // 编码看板娘图片和加载字体 |
| 432 | func (mp *mpic) loadpic() error { |