From c51ae86876c0656bcf16ed3297fcbd98d318ea00 Mon Sep 17 00:00:00 2001 From: xiaoqidun Date: Mon, 12 Oct 2026 16:28:01 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E5=AD=97=E4=BD=93=E5=A4=84=E7=90=86):=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=A4=9A=E6=96=87=E6=A1=A3=E5=AD=97=E4=BD=93?= =?UTF-8?q?=E8=A3=81=E5=89=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ofdgo_editor_font_cleanup.go | 14 ++++++++------ ofdgo_editor_package.go | 2 +- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/ofdgo_editor_font_cleanup.go b/ofdgo_editor_font_cleanup.go index c4ee9e2..d5abb3f 100644 --- a/ofdgo_editor_font_cleanup.go +++ b/ofdgo_editor_font_cleanup.go @@ -23,17 +23,19 @@ import ( "slices" ) -// compactVersionFonts 清理无引用字体并按全部版本的用字裁剪,不修改编辑器快照 +// compactPackageFonts 清理无引用字体,补齐多文档及历史版本的字体裁剪,不修改编辑器快照 // 入参: ctx 取消上下文, parts 输出修改, removed 待删除条目, generated 本次编码的页面引用 // 返回: error 读取、结构或取消错误 -func (e *Editor) compactVersionFonts(ctx context.Context, parts map[string][]byte, removed map[string]bool, generated map[string]editorGeneratedReferences) error { +func (e *Editor) compactPackageFonts(ctx context.Context, parts map[string][]byte, removed map[string]bool, generated map[string]editorGeneratedReferences) error { reader := e.source.reader versioned := false for _, body := range reader.OFD.DocBody { versioned = versioned || body.versioned } if !versioned { - return nil + if reader.DocumentCount() <= 1 || e.backends.FontResources == nil || e.output != nil && e.output.options.Mode != CompressionUnchanged { + return nil + } } protected, err := reader.hasOutputSignatures(ctx) if err != nil || protected { @@ -103,7 +105,7 @@ func (e *Editor) compactVersionFonts(ctx context.Context, parts map[string][]byt if err := pruneExternalFontFiles(ctx, view, slices.Collect(maps.Keys(candidates))...); err != nil { return err } - if err := e.subsetVersionFonts(ctx, view, removed, generated); err != nil { + if err := e.subsetPackageFonts(ctx, view, removed, generated); err != nil { return err } for name, data := range view.files { @@ -120,10 +122,10 @@ func (e *Editor) compactVersionFonts(ctx context.Context, parts map[string][]byt return nil } -// subsetVersionFonts 合并主入口、历史版本和其他文档的用字,保留共享字体的字形编号 +// subsetPackageFonts 按文档作用域收集用字,合并共享字体需求并保留字形编号 // 入参: ctx 取消上下文, view 独立输出快照, removed 待删除条目, generated 本次编码的页面引用 // 返回: error 读取、裁剪或取消错误 -func (e *Editor) subsetVersionFonts(ctx context.Context, view *Reader, removed map[string]bool, generated map[string]editorGeneratedReferences) error { +func (e *Editor) subsetPackageFonts(ctx context.Context, view *Reader, removed map[string]bool, generated map[string]editorGeneratedReferences) error { if e.backends.FontResources == nil { return nil } diff --git a/ofdgo_editor_package.go b/ofdgo_editor_package.go index 0bd3c92..dc2d52d 100644 --- a/ofdgo_editor_package.go +++ b/ofdgo_editor_package.go @@ -635,7 +635,7 @@ func (e *Editor) writeSource(writer io.Writer, fonts map[string][]byte, progress return 0, err } } - if err := e.compactVersionFonts(ctx, parts, removed, generated); err != nil { + if err := e.compactPackageFonts(ctx, parts, removed, generated); err != nil { return 0, err } if len(parts) != 0 || len(removed) != 0 || e.output != nil && e.output.options.Mode != CompressionUnchanged && !e.output.protected {