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  }