9fans.net/go@v0.0.5/draw/subfontname.go (about) 1 package draw 2 3 import ( 4 "fmt" 5 "os" 6 "strings" 7 ) 8 9 /* 10 * Default version: convert to file name 11 */ 12 13 func subfontname(cfname, fname string, maxdepth int) string { 14 scale, base := parsefontscale(fname) 15 16 t := cfname 17 if cfname == "*default*" { 18 return t 19 } 20 if !strings.HasPrefix(t, "/") { 21 dir := base 22 i := strings.LastIndex(dir, "/") 23 if i >= 0 { 24 dir = dir[:i] 25 } else { 26 dir = "." 27 } 28 t = dir + "/" + t 29 } 30 if maxdepth > 8 { 31 maxdepth = 8 32 } 33 for i := 3; i >= 0; i-- { 34 if 1<<uint(i) > maxdepth { 35 continue 36 } 37 // try i-bit grey 38 tmp2 := fmt.Sprintf("%s.%d", t, i) 39 if _, err := os.Stat(tmp2); err == nil { 40 if scale > 1 { 41 tmp2 = fmt.Sprintf("%d*%s", scale, tmp2) 42 } 43 return tmp2 44 } 45 } 46 47 // try default 48 if strings.HasPrefix(t, "/mnt/font/") { 49 if scale > 1 { 50 t = fmt.Sprintf("%d*%s", scale, t) 51 } 52 return t 53 } 54 if _, err := os.Stat(t); err == nil { 55 if scale > 1 { 56 t = fmt.Sprintf("%d*%s", scale, t) 57 } 58 return t 59 } 60 61 return "" 62 }