feat(编辑渲染): 完善三维转换,优化编辑渲染压缩

This commit is contained in:
xiaoqidun committed 2026-10-07 10:26:20 +08:00
1 parent e8344e6387
commit 839f65e3d7
47 files changed
+4887 -112

No files matched your search

+22 -7
View File
@@ -202,12 +202,15 @@ func (e *Editor) subsetFonts(progress editorProgress) (map[string][]byte, error)
if object.Type == "CompositeObject" || object.Type == "CompositeGraphicUnit" {
composite = true
origin := e.objectOrigin(editorObjectID(object))
var data []byte
var err error
if origin == nil {
return nil, nil
}
data, err := editorXMLObject(origin.data, origin.node, origin.object, object)
if err == nil {
data, err = editorXMLStandalone(data, origin.node)
data, err = e.encodeXML(func(x *ofdXML) { x.object(object, true) })
} else {
data, err = editorXMLObject(origin.data, origin.node, origin.object, object)
if err == nil {
data, err = editorXMLStandalone(data, origin.node)
}
}
if err != nil {
return nil, err
@@ -252,18 +255,30 @@ func (e *Editor) subsetFonts(progress editorProgress) (map[string][]byte, error)
if err := progress.report("fonts", len(e.pages)+i, total); err != nil {
return nil, err
}
if _, safe := refs.scan(bytes.NewReader(resource.data), resource.name); !safe {
if resource.usage.matches(resource.name, resource.data) {
refs.merge(resource.usage.refs)
} else if _, safe := refs.scan(bytes.NewReader(resource.data), resource.name); !safe {
return nil, nil
}
}
for id, usage := range refs.fonts {
glyphs := used[id]
if usage.unsafe || len(usage.glyphs) != 0 {
if usage.unsafe {
delete(used, id)
} else if glyphs != nil {
for char := range usage.chars {
glyphs[e.fonts[id].GlyphIndex(char)] = true
}
if len(usage.glyphs) != 0 {
mapped[id] = true
for glyph := range usage.glyphs {
if glyph >= e.fonts[id].NumGlyphs() {
delete(used, id)
break
}
glyphs[glyph] = true
}
}
}
}
}