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) } }