53 lines
1.2 KiB
Go
53 lines
1.2 KiB
Go
package cjkfont
|
|
|
|
import (
|
|
"image/color"
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
)
|
|
|
|
// msyhCandidates 微软雅黑常见路径。
|
|
var msyhCandidates = []string{
|
|
filepath.Join(os.Getenv("WINDIR"), "Fonts", "msyh.ttc"),
|
|
filepath.Join(os.Getenv("WINDIR"), "Fonts", "msyh.ttf"),
|
|
"/usr/share/fonts/truetype/wqy/wqy-microhei.ttc",
|
|
}
|
|
|
|
// TestLoadDraw 加载系统 CJK 字体并渲染中文(无字体时跳过)。
|
|
func TestLoadDraw(t *testing.T) {
|
|
path := ""
|
|
for _, p := range msyhCandidates {
|
|
if _, err := os.Stat(p); err == nil {
|
|
path = p
|
|
break
|
|
}
|
|
}
|
|
if path == "" {
|
|
t.Skip("本机无 CJK 字体,跳过")
|
|
}
|
|
r, err := Load(path, 16)
|
|
if err != nil {
|
|
t.Fatalf("加载字体失败: %v", err)
|
|
}
|
|
img := r.Draw("年糕历险记", color.RGBA{255, 255, 255, 255})
|
|
b := img.Bounds()
|
|
if b.Dx() < 16 || b.Dy() < 8 {
|
|
t.Fatalf("渲染尺寸异常: %dx%d", b.Dx(), b.Dy())
|
|
}
|
|
opaque := 0
|
|
for y := b.Min.Y; y < b.Max.Y; y++ {
|
|
for x := b.Min.X; x < b.Max.X; x++ {
|
|
if _, _, _, a := img.At(x, y).RGBA(); a > 0 {
|
|
opaque++
|
|
}
|
|
}
|
|
}
|
|
if opaque == 0 {
|
|
t.Fatal("渲染结果全透明")
|
|
}
|
|
if w := r.Width("年糕历险记"); w < 16 {
|
|
t.Fatalf("宽度异常: %d", w)
|
|
}
|
|
}
|