diff --git a/ofdgo_compression_fonts.go b/ofdgo_compression_fonts.go index e781b43..ce2de31 100644 --- a/ofdgo_compression_fonts.go +++ b/ofdgo_compression_fonts.go @@ -29,10 +29,18 @@ type compressionFontBinding struct { unsafe bool } -// compressionFontUsage 按文档解析字体引用,按文件路径合并共享字体的全部用字 +// compressionFontUsage 按文档合并共享字体用字,版本编辑仅统计选中入口 // 入参: ctx 取消上下文, parts 输出改动, generated 自产页面引用, documents 文档入口, resources 资源索引, references 各文件引用, read 输出文件读取方法 // 返回: map[string]*editorFontUsage 各字体文件的用字,无法确定作用域时为空, error 读取或取消错误 func (r *Reader) compressionFontUsage(ctx context.Context, parts map[string][]byte, generated map[string]editorGeneratedReferences, documents map[string]bool, resources []string, references map[string]*editorResourceRefs, read func(string) ([]byte, error)) (map[string]*editorFontUsage, error) { + selected := "" + if r.OFD.DocBody[r.documentIndex].versioned { + var err error + selected, err = r.DocumentRoot() + if err != nil { + return nil, err + } + } bindings := make(map[string][]compressionFontBinding) for _, name := range resources { if err := ctx.Err(); err != nil { @@ -75,12 +83,17 @@ func (r *Reader) compressionFontUsage(ctx context.Context, parts map[string][]by refs := editorResourceRefs{fonts: make(map[string]*editorFontUsage)} for name := range scope { if source := references[name]; source != nil { - for id, usage := range source.fonts { - refs.fontUsage(id).merge(usage, false) + if selected == "" || selected == entry { + for id, usage := range source.fonts { + refs.fontUsage(id).merge(usage, false) + } } used[name] = true } } + if selected != "" && selected != entry { + continue + } for name := range scope { for _, binding := range bindings[name] { usage := refs.fonts[binding.id]