1
0
Fork 0
anymenu/fonts/fonts.go

50 lines
826 B
Go

package fonts
import (
"os"
"os/user"
"path/filepath"
"strings"
)
// Find looks up font file location by the name.
func Find(name string) (string, error) {
// Normalize font file name
fileName := strings.Replace(name, " ", "-", -1) + ".ttf"
for _, dir := range fontDirs() {
dir, err := expandHome(dir)
if err != nil {
return "", err
}
path := filepath.Join(dir, fileName)
if fileExist(path) {
return path, nil
}
}
return "", nil
}
func expandHome(path string) (string, error) {
if !strings.HasPrefix(path, "~/") {
return path, nil
}
u, err := user.Current()
if err != nil {
return "", err
}
return filepath.Join(u.HomeDir, path[2:]), nil
}
func fileExist(path string) bool {
if _, err := os.Stat(path); err != nil {
if os.IsNotExist(err) {
return false
}
}
return true
}