From 137e5d4b36a6e48f0bbf035c8b2a4abb0e11f70f Mon Sep 17 00:00:00 2001 From: xiaoqidun Date: Fri, 2 Jan 2026 12:54:17 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E5=AD=97=E4=BD=93=E6=B8=B2=E6=9F=93):=20?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=AD=97=E4=BD=93=E6=B8=B2=E6=9F=93=E5=88=A4?= =?UTF-8?q?=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ofdgo_renderer.go | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/ofdgo_renderer.go b/ofdgo_renderer.go index 38e91a6..c4286cf 100644 --- a/ofdgo_renderer.go +++ b/ofdgo_renderer.go @@ -474,7 +474,7 @@ func (r *Renderer) renderText(ctx *canvas.Context, obj TextObject, pageH float64 textColor = parseColor(obj.FillColor.Value) } fontStyle := canvas.FontRegular - if obj.Weight >= 700 || (obj.Weight == 0 && (strings.Contains(strings.ToLower(obj.Font), "bold"))) { + if obj.Weight >= 700 { fontStyle |= canvas.FontBold } if obj.Italic { @@ -555,12 +555,19 @@ func (r *Renderer) loadFont(fontID string) *canvas.FontFamily { } } } + var fontStyle canvas.FontStyle + if of.Bold { + fontStyle |= canvas.FontBold + } + if of.Italic { + fontStyle |= canvas.FontItalic + } for _, dir := range r.fontDirs { matches, _ := filepath.Glob(filepath.Join(dir, of.FontName+"*")) for _, m := range matches { ext := strings.ToLower(filepath.Ext(m)) if ext == ".ttf" || ext == ".otf" || ext == ".ttc" { - if err := ff.LoadFontFile(m, canvas.FontRegular); err == nil { + if err := ff.LoadFontFile(m, fontStyle); err == nil { r.FontMap[fontID] = ff return ff } @@ -572,7 +579,7 @@ func (r *Renderer) loadFont(fontID string) *canvas.FontFamily { for _, m := range matches { resData, err := fs.ReadFile(fsys, m) if err == nil { - if err := ff.LoadFont(resData, 0, canvas.FontRegular); err == nil { + if err := ff.LoadFont(resData, 0, fontStyle); err == nil { r.FontMap[fontID] = ff return ff } @@ -612,12 +619,12 @@ func (r *Renderer) loadFont(fontID string) *canvas.FontFamily { } } } - if err := ff.LoadSystemFont(targetName, canvas.FontRegular); err == nil { + if err := ff.LoadSystemFont(targetName, fontStyle); err == nil { r.FontMap[fontID] = ff return ff } if targetName != name { - if err := ff.LoadSystemFont(name, canvas.FontRegular); err == nil { + if err := ff.LoadSystemFont(name, fontStyle); err == nil { r.FontMap[fontID] = ff return ff } @@ -636,7 +643,7 @@ func (r *Renderer) loadFont(fontID string) *canvas.FontFamily { } } for _, m := range matches { - if err := ff.LoadFontFile(m, canvas.FontRegular); err == nil { + if err := ff.LoadFontFile(m, fontStyle); err == nil { r.FontMap[fontID] = ff return ff }