feat(转换能力): 增强PDF字形与扫描件转换
build.yaml / build (push) Successful in 41s

This commit is contained in:
xiaoqidun committed 2026-09-25 00:31:52 +08:00
1 parent 2ae89e54b4
commit 786b1a41c2
14 files changed
+250 -97

No files matched your search

+15 -2
View File
@@ -781,13 +781,15 @@ func (e *Editor) editorFont(id string) (FontMetrics, error) {
return nil, &EditError{Code: EditFontUnavailable, Err: fmt.Errorf("fonts: %w", ErrBackendUnavailable)}
}
var data []byte
createdExternal := false
for _, resource := range e.resources {
if resource.font != nil && resource.font.ID == id {
data = resource.data
createdExternal = resource.font.FontFile == ""
break
}
}
if data == nil && e.source != nil {
if data == nil && e.source != nil && !createdExternal {
if e.fontRenderer == nil {
e.fontRenderer = e.newRenderer(e.source.reader)
}
@@ -797,6 +799,17 @@ func (e *Editor) editorFont(id string) (FontMetrics, error) {
}
data = resolved.Data
}
if data == nil && createdExternal {
reader, err := e.Reader()
if err != nil {
return nil, &EditError{Code: EditFontUnavailable, Err: err}
}
resolved, err := e.newRenderer(reader).ResolveFont(id, false)
if err != nil {
return nil, &EditError{Code: EditFontUnavailable, Err: err}
}
data = resolved.Data
}
if data == nil {
return nil, &EditError{Code: EditFontUnavailable, Err: fmt.Errorf("font %q not found", id)}
}
@@ -813,7 +826,7 @@ func (e *Editor) editorFont(id string) (FontMetrics, error) {
// 返回: []byte 独立字体数据, error 错误信息
func (e *Editor) FontData(id string) ([]byte, error) {
for _, resource := range e.resources {
if resource.font != nil && resource.font.ID == id {
if resource.font != nil && resource.font.ID == id && len(resource.data) != 0 {
return bytes.Clone(resource.data), nil
}
}