mirror of
https://github.com/xiaoqidun/ofdgo.git
synced 2026-08-30 12:12:40 +08:00
+18
-10
@@ -72,18 +72,20 @@ func (fsys *FontFS) Len() int {
|
|||||||
// 入参: name 字体文件名
|
// 入参: name 字体文件名
|
||||||
// 返回: fs.File 字体文件, error 错误信息
|
// 返回: fs.File 字体文件, error 错误信息
|
||||||
func (fsys *FontFS) Open(name string) (fs.File, error) {
|
func (fsys *FontFS) Open(name string) (fs.File, error) {
|
||||||
name = cleanFontName(name)
|
if !fs.ValidPath(name) {
|
||||||
|
return nil, &fs.PathError{Op: "open", Path: name, Err: fs.ErrInvalid}
|
||||||
|
}
|
||||||
if name == "." {
|
if name == "." {
|
||||||
return &fontDir{entries: fsys.entries()}, nil
|
return &fontDir{entries: fsys.entries()}, nil
|
||||||
}
|
}
|
||||||
data, ok := fsys.files[name]
|
data, ok := fsys.files[strings.ToLower(name)]
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, fs.ErrNotExist
|
return nil, &fs.PathError{Op: "open", Path: name, Err: fs.ErrNotExist}
|
||||||
}
|
}
|
||||||
return &fontMemFile{
|
return &fontMemFile{
|
||||||
Reader: bytes.NewReader(data),
|
Reader: bytes.NewReader(data),
|
||||||
info: fontFileInfo{
|
info: fontFileInfo{
|
||||||
name: name,
|
name: strings.ToLower(name),
|
||||||
size: int64(len(data)),
|
size: int64(len(data)),
|
||||||
},
|
},
|
||||||
}, nil
|
}, nil
|
||||||
@@ -93,9 +95,15 @@ func (fsys *FontFS) Open(name string) (fs.File, error) {
|
|||||||
// 入参: name 目录名
|
// 入参: name 目录名
|
||||||
// 返回: []fs.DirEntry 目录条目, error 错误信息
|
// 返回: []fs.DirEntry 目录条目, error 错误信息
|
||||||
func (fsys *FontFS) ReadDir(name string) ([]fs.DirEntry, error) {
|
func (fsys *FontFS) ReadDir(name string) ([]fs.DirEntry, error) {
|
||||||
name = cleanFontName(name)
|
if !fs.ValidPath(name) {
|
||||||
|
return nil, &fs.PathError{Op: "readdir", Path: name, Err: fs.ErrInvalid}
|
||||||
|
}
|
||||||
if name != "." {
|
if name != "." {
|
||||||
return nil, fs.ErrNotExist
|
err := fs.ErrNotExist
|
||||||
|
if _, ok := fsys.files[strings.ToLower(name)]; ok {
|
||||||
|
err = fs.ErrInvalid
|
||||||
|
}
|
||||||
|
return nil, &fs.PathError{Op: "readdir", Path: name, Err: err}
|
||||||
}
|
}
|
||||||
return fsys.entries(), nil
|
return fsys.entries(), nil
|
||||||
}
|
}
|
||||||
@@ -104,10 +112,7 @@ func (fsys *FontFS) ReadDir(name string) ([]fs.DirEntry, error) {
|
|||||||
// 入参: pattern 匹配模式
|
// 入参: pattern 匹配模式
|
||||||
// 返回: []string 字体文件列表, error 错误信息
|
// 返回: []string 字体文件列表, error 错误信息
|
||||||
func (fsys *FontFS) Glob(pattern string) ([]string, error) {
|
func (fsys *FontFS) Glob(pattern string) ([]string, error) {
|
||||||
if _, err := path.Match(pattern, ""); err != nil {
|
return fs.Glob(struct{ fs.FS }{fsys}, pattern)
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return fsys.match(pattern), nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Match 匹配指定字体名称
|
// Match 匹配指定字体名称
|
||||||
@@ -522,6 +527,9 @@ func (d *fontDir) Close() error {
|
|||||||
// 返回: []fs.DirEntry 目录条目, error 错误信息
|
// 返回: []fs.DirEntry 目录条目, error 错误信息
|
||||||
func (d *fontDir) ReadDir(count int) ([]fs.DirEntry, error) {
|
func (d *fontDir) ReadDir(count int) ([]fs.DirEntry, error) {
|
||||||
if d.offset >= len(d.entries) {
|
if d.offset >= len(d.entries) {
|
||||||
|
if count <= 0 {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
return nil, io.EOF
|
return nil, io.EOF
|
||||||
}
|
}
|
||||||
if count <= 0 || d.offset+count > len(d.entries) {
|
if count <= 0 || d.offset+count > len(d.entries) {
|
||||||
|
|||||||
Reference in New Issue
Block a user