mirror of
https://github.com/xiaoqidun/ofdgo.git
synced 2026-10-29 17:27:08 +08:00
1 parent
2ae89e54b4
commit
786b1a41c2
14 files changed
+250
-97
No files matched your search
+15
-2
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user