feat(压缩能力): 优化多档压缩与资源复用
build.yaml / build (push) Successful in 43s

This commit is contained in:
xiaoqidun committed 2026-09-29 23:02:07 +08:00
1 parent 54db6afc31
commit accd0a2973
11 files changed
+358 -51

No files matched your search

+27
View File
@@ -169,6 +169,33 @@ func (e *Editor) writePlaintext(writer io.Writer) (int64, error) {
}
output := &ofdCountingWriter{writer: writer}
archive := zip.NewWriter(output)
if e.output != nil && e.output.options.Mode != CompressionUnchanged {
parts := make(map[string][]byte)
err := e.writeParts(func(name string, data []byte, _ bool) error {
if subset, ok := fonts[name]; ok {
data = subset
}
parts[name] = data
return nil
}, progress)
if err != nil {
return 0, err
}
removed := make(map[string]bool)
if err := e.compressResourceParts(parts, nil, removed); err != nil {
return 0, err
}
for _, name := range slices.Sorted(maps.Keys(parts)) {
if removed[strings.ToLower(cleanPackagePath(name))] {
continue
}
if err := e.writeOutputEntry(archive, zip.FileHeader{Name: name, Method: zip.Deflate}, parts[name]); err != nil {
return output.count, err
}
}
err = archive.Close()
return output.count, err
}
err = e.writeParts(func(name string, data []byte, compressed bool) error {
if subset, ok := fonts[name]; ok {
data = subset