feat(印章渲染): 强化印章渲染

This commit is contained in:
2026-06-25 22:54:34 +08:00
parent 0b20a3d054
commit a9653bdec0
3 changed files with 154 additions and 48 deletions
+40 -27
View File
@@ -859,37 +859,11 @@ func (r *Renderer) loadFont(fontID string) *canvas.FontFamily {
}
}
names := []string{of.FamilyName, of.FontName}
aliases := map[string]string{
"simhei": "SimHei",
"黑体": "SimHei",
"microsoft yahei": "Microsoft YaHei",
"微软雅黑": "Microsoft YaHei",
"simsun": "SimSun",
"宋体": "SimSun",
"kaiti": "KaiTi",
"楷体": "KaiTi",
"fangsong": "FangSong",
"仿宋": "FangSong",
"arial": "Arial",
"segoe ui": "Segoe UI",
"times new roman": "Times New Roman",
}
for _, name := range names {
if name == "" {
continue
}
targetName := name
lower := strings.ToLower(name)
if mapped, ok := aliases[lower]; ok {
targetName = mapped
} else {
for k, v := range aliases {
if strings.Contains(lower, k) {
targetName = v
break
}
}
}
targetName := fontAliasName(name)
if err := ff.LoadSystemFont(targetName, fontStyle); err == nil {
r.FontMap[fontID] = ff
return ff
@@ -933,6 +907,45 @@ func (r *Renderer) loadFont(fontID string) *canvas.FontFamily {
return defaultFont
}
// fontAliasName 获取系统字体替代名称
// 入参: name OFD字体名称
// 返回: string 系统字体名称
func fontAliasName(name string) string {
lower := strings.ToLower(strings.TrimSpace(name))
aliases := map[string]string{
"simhei": "SimHei",
"microsoft yahei": "Microsoft YaHei",
"simsun": "SimSun",
"kaiti": "KaiTi",
"fangsong": "FangSong",
"arial": "Arial",
"segoe ui": "Segoe UI",
"times new roman": "Times New Roman",
}
if mapped, ok := aliases[lower]; ok {
return mapped
}
contains := []struct {
Key string
Value string
}{
{"黑体", "SimHei"},
{"微软雅黑", "Microsoft YaHei"},
{"仿宋", "FangSong"},
{"楷体", "KaiTi"},
{"方正书宋", "SimSun"},
{"书宋", "SimSun"},
{"宋体", "SimSun"},
{"宋", "SimSun"},
}
for _, item := range contains {
if strings.Contains(lower, item.Key) {
return item.Value
}
}
return name
}
// globFontFiles 查找字体文件
// 入参: dir 目录, pattern 模式
// 返回: []string 文件列表