aboutsummaryrefslogtreecommitdiff
path: root/vendor/golang.org/x/image/font/gofont/gen.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/golang.org/x/image/font/gofont/gen.go')
-rw-r--r--vendor/golang.org/x/image/font/gofont/gen.go107
1 files changed, 107 insertions, 0 deletions
diff --git a/vendor/golang.org/x/image/font/gofont/gen.go b/vendor/golang.org/x/image/font/gofont/gen.go
new file mode 100644
index 0000000..c7cf2d8
--- /dev/null
+++ b/vendor/golang.org/x/image/font/gofont/gen.go
@@ -0,0 +1,107 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build ignore
+
+package main
+
+// This program generates the subdirectories of Go packages that contain []byte
+// versions of the TrueType font files under ./ttfs.
+//
+// Currently, "go run gen.go" needs to be run manually. This isn't done by the
+// usual "go generate" mechanism as there isn't any other Go code in this
+// directory (excluding sub-directories) to attach a "go:generate" line to.
+//
+// In any case, code generation should only need to happen when the underlying
+// TTF files change, which isn't expected to happen frequently.
+
+import (
+ "bytes"
+ "fmt"
+ "go/format"
+ "io/ioutil"
+ "log"
+ "os"
+ "path/filepath"
+ "strings"
+)
+
+const suffix = ".ttf"
+
+func main() {
+ ttfs, err := os.Open("ttfs")
+ if err != nil {
+ log.Fatal(err)
+ }
+ defer ttfs.Close()
+
+ infos, err := ttfs.Readdir(-1)
+ if err != nil {
+ log.Fatal(err)
+ }
+ for _, info := range infos {
+ ttfName := info.Name()
+ if !strings.HasSuffix(ttfName, suffix) {
+ continue
+ }
+ do(ttfName)
+ }
+}
+
+func do(ttfName string) {
+ fontName := fontName(ttfName)
+ pkgName := pkgName(ttfName)
+ if err := os.Mkdir(pkgName, 0777); err != nil && !os.IsExist(err) {
+ log.Fatal(err)
+ }
+ src, err := ioutil.ReadFile(filepath.Join("ttfs", ttfName))
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ desc := "a proportional-width, sans-serif"
+ if strings.Contains(ttfName, "Mono") {
+ desc = "a fixed-width, slab-serif"
+ }
+
+ b := new(bytes.Buffer)
+ fmt.Fprintf(b, "// generated by go run gen.go; DO NOT EDIT\n\n")
+ fmt.Fprintf(b, "// Package %s provides the %q TrueType font\n", pkgName, fontName)
+ fmt.Fprintf(b, "// from the Go font family. It is %s font.\n", desc)
+ fmt.Fprintf(b, "//\n")
+ fmt.Fprintf(b, "// See https://blog.golang.org/go-fonts for details.\n")
+ fmt.Fprintf(b, "package %s\n\n", pkgName)
+ fmt.Fprintf(b, "// TTF is the data for the %q TrueType font.\n", fontName)
+ fmt.Fprintf(b, "var TTF = []byte{")
+ for i, x := range src {
+ if i&15 == 0 {
+ b.WriteByte('\n')
+ }
+ fmt.Fprintf(b, "%#02x,", x)
+ }
+ fmt.Fprintf(b, "\n}\n")
+
+ dst, err := format.Source(b.Bytes())
+ if err != nil {
+ log.Fatal(err)
+ }
+ if err := ioutil.WriteFile(filepath.Join(pkgName, "data.go"), dst, 0666); err != nil {
+ log.Fatal(err)
+ }
+}
+
+// fontName maps "Go-Regular.ttf" to "Go Regular".
+func fontName(ttfName string) string {
+ s := ttfName[:len(ttfName)-len(suffix)]
+ s = strings.Replace(s, "-", " ", -1)
+ return s
+}
+
+// pkgName maps "Go-Regular.ttf" to "goregular".
+func pkgName(ttfName string) string {
+ s := ttfName[:len(ttfName)-len(suffix)]
+ s = strings.Replace(s, "-", "", -1)
+ s = strings.ToLower(s)
+ return s
+}