File tree Expand file tree Collapse file tree 3 files changed +68
-18
lines changed Expand file tree Collapse file tree 3 files changed +68
-18
lines changed Original file line number Diff line number Diff line change 11package sysfont
22
33import (
4- "os"
54 "path/filepath"
65 "strings"
76
87 "github.com/adrg/strutil"
9- "github.com/adrg/xdg"
108)
119
1210// Finder is used to identify installed fonts. It can match fonts based on user
@@ -32,14 +30,7 @@ func NewFinder(opts *FinderOpts) *Finder {
3230 }
3331
3432 var fonts []* Font
35- walker := func (filename string , info os.FileInfo , err error ) error {
36- if err != nil {
37- return err
38- }
39- if info .IsDir () {
40- return nil
41- }
42-
33+ findFonts (opts , func (filename string ) error {
4334 // Check file extension.
4435 if extensions := opts .Extensions ; len (extensions ) > 0 {
4536 extension := filepath .Ext (strings .ToLower (filename ))
@@ -56,14 +47,7 @@ func NewFinder(opts *FinderOpts) *Finder {
5647
5748 fonts = append (fonts , matches ... )
5849 return nil
59- }
60-
61- // Traverse OS font directories.
62- for _ , dir := range xdg .FontDirs {
63- if err := filepath .Walk (dir , walker ); err != nil {
64- continue
65- }
66- }
50+ })
6751
6852 return & Finder {
6953 fonts : fonts ,
Original file line number Diff line number Diff line change 1+ //go:build go1.16
2+ // +build go1.16
3+
4+ package sysfont
5+
6+ import (
7+ "io/fs"
8+ "path/filepath"
9+
10+ "github.com/adrg/xdg"
11+ )
12+
13+ func findFonts (opts * FinderOpts , fn func (filename string ) error ) {
14+ walker := func (filename string , info fs.DirEntry , err error ) error {
15+ if err != nil {
16+ return err
17+ }
18+ if info .IsDir () {
19+ return nil
20+ }
21+
22+ return fn (filename )
23+ }
24+
25+ // Traverse OS font directories.
26+ for _ , dir := range xdg .FontDirs {
27+ if err := filepath .WalkDir (dir , walker ); err != nil {
28+ continue
29+ }
30+ }
31+
32+ return
33+ }
Original file line number Diff line number Diff line change 1+ //go:build !go1.16
2+ // +build !go1.16
3+
4+ package sysfont
5+
6+ import (
7+ "os"
8+ "path/filepath"
9+
10+ "github.com/adrg/xdg"
11+ )
12+
13+ func findFonts (opts * FinderOpts , fn func (filename string ) error ) {
14+ walker := func (filename string , info os.FileInfo , err error ) error {
15+ if err != nil {
16+ return err
17+ }
18+ if info .IsDir () {
19+ return nil
20+ }
21+
22+ return fn (filename )
23+ }
24+
25+ // Traverse OS font directories.
26+ for _ , dir := range xdg .FontDirs {
27+ if err := filepath .Walk (dir , walker ); err != nil {
28+ continue
29+ }
30+ }
31+
32+ return
33+ }
You can’t perform that action at this time.
0 commit comments