| // Copyright 2017 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 |
| |
| import ( |
| "bytes" |
| "fmt" |
| "go/format" |
| "io/ioutil" |
| "log" |
| ) |
| |
| func main() { |
| data, offsets := []byte(nil), []int{0} |
| for _, name := range names { |
| data = append(data, name...) |
| offsets = append(offsets, len(data)) |
| } |
| |
| b := new(bytes.Buffer) |
| fmt.Fprintf(b, "// generated by go run gen.go; DO NOT EDIT\n\n") |
| fmt.Fprintf(b, "package sfnt\n\n") |
| |
| fmt.Fprintf(b, "const numBuiltInPostNames = %d\n\n", len(names)) |
| |
| fmt.Fprintf(b, "const builtInPostNamesData = \"\" +\n") |
| for s := data; ; { |
| if len(s) <= 64 { |
| fmt.Fprintf(b, "%q\n", s) |
| break |
| } |
| fmt.Fprintf(b, "%q +\n", s[:64]) |
| s = s[64:] |
| } |
| fmt.Fprintf(b, "\n") |
| |
| fmt.Fprintf(b, "var builtInPostNamesOffsets = [...]uint16{\n") |
| for i, o := range offsets { |
| fmt.Fprintf(b, "%#04x,", o) |
| if i%8 == 7 { |
| fmt.Fprintf(b, "\n") |
| } |
| } |
| fmt.Fprintf(b, "\n}\n") |
| |
| dstUnformatted := b.Bytes() |
| dst, err := format.Source(dstUnformatted) |
| if err != nil { |
| log.Fatalf("format.Source: %v\n\n----\n%s\n----", err, dstUnformatted) |
| } |
| if err := ioutil.WriteFile("data.go", dst, 0666); err != nil { |
| log.Fatalf("ioutil.WriteFile: %v", err) |
| } |
| } |
| |
| // names is the built-in post table names listed at |
| // https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6post.html |
| var names = [258]string{ |
| ".notdef", |
| ".null", |
| "nonmarkingreturn", |
| "space", |
| "exclam", |
| "quotedbl", |
| "numbersign", |
| "dollar", |
| "percent", |
| "ampersand", |
| "quotesingle", |
| "parenleft", |
| "parenright", |
| "asterisk", |
| "plus", |
| "comma", |
| "hyphen", |
| "period", |
| "slash", |
| "zero", |
| "one", |
| "two", |
| "three", |
| "four", |
| "five", |
| "six", |
| "seven", |
| "eight", |
| "nine", |
| "colon", |
| "semicolon", |
| "less", |
| "equal", |
| "greater", |
| "question", |
| "at", |
| "A", |
| "B", |
| "C", |
| "D", |
| "E", |
| "F", |
| "G", |
| "H", |
| "I", |
| "J", |
| "K", |
| "L", |
| "M", |
| "N", |
| "O", |
| "P", |
| "Q", |
| "R", |
| "S", |
| "T", |
| "U", |
| "V", |
| "W", |
| "X", |
| "Y", |
| "Z", |
| "bracketleft", |
| "backslash", |
| "bracketright", |
| "asciicircum", |
| "underscore", |
| "grave", |
| "a", |
| "b", |
| "c", |
| "d", |
| "e", |
| "f", |
| "g", |
| "h", |
| "i", |
| "j", |
| "k", |
| "l", |
| "m", |
| "n", |
| "o", |
| "p", |
| "q", |
| "r", |
| "s", |
| "t", |
| "u", |
| "v", |
| "w", |
| "x", |
| "y", |
| "z", |
| "braceleft", |
| "bar", |
| "braceright", |
| "asciitilde", |
| "Adieresis", |
| "Aring", |
| "Ccedilla", |
| "Eacute", |
| "Ntilde", |
| "Odieresis", |
| "Udieresis", |
| "aacute", |
| "agrave", |
| "acircumflex", |
| "adieresis", |
| "atilde", |
| "aring", |
| "ccedilla", |
| "eacute", |
| "egrave", |
| "ecircumflex", |
| "edieresis", |
| "iacute", |
| "igrave", |
| "icircumflex", |
| "idieresis", |
| "ntilde", |
| "oacute", |
| "ograve", |
| "ocircumflex", |
| "odieresis", |
| "otilde", |
| "uacute", |
| "ugrave", |
| "ucircumflex", |
| "udieresis", |
| "dagger", |
| "degree", |
| "cent", |
| "sterling", |
| "section", |
| "bullet", |
| "paragraph", |
| "germandbls", |
| "registered", |
| "copyright", |
| "trademark", |
| "acute", |
| "dieresis", |
| "notequal", |
| "AE", |
| "Oslash", |
| "infinity", |
| "plusminus", |
| "lessequal", |
| "greaterequal", |
| "yen", |
| "mu", |
| "partialdiff", |
| "summation", |
| "product", |
| "pi", |
| "integral", |
| "ordfeminine", |
| "ordmasculine", |
| "Omega", |
| "ae", |
| "oslash", |
| "questiondown", |
| "exclamdown", |
| "logicalnot", |
| "radical", |
| "florin", |
| "approxequal", |
| "Delta", |
| "guillemotleft", |
| "guillemotright", |
| "ellipsis", |
| "nonbreakingspace", |
| "Agrave", |
| "Atilde", |
| "Otilde", |
| "OE", |
| "oe", |
| "endash", |
| "emdash", |
| "quotedblleft", |
| "quotedblright", |
| "quoteleft", |
| "quoteright", |
| "divide", |
| "lozenge", |
| "ydieresis", |
| "Ydieresis", |
| "fraction", |
| "currency", |
| "guilsinglleft", |
| "guilsinglright", |
| "fi", |
| "fl", |
| "daggerdbl", |
| "periodcentered", |
| "quotesinglbase", |
| "quotedblbase", |
| "perthousand", |
| "Acircumflex", |
| "Ecircumflex", |
| "Aacute", |
| "Edieresis", |
| "Egrave", |
| "Iacute", |
| "Icircumflex", |
| "Idieresis", |
| "Igrave", |
| "Oacute", |
| "Ocircumflex", |
| "apple", |
| "Ograve", |
| "Uacute", |
| "Ucircumflex", |
| "Ugrave", |
| "dotlessi", |
| "circumflex", |
| "tilde", |
| "macron", |
| "breve", |
| "dotaccent", |
| "ring", |
| "cedilla", |
| "hungarumlaut", |
| "ogonek", |
| "caron", |
| "Lslash", |
| "lslash", |
| "Scaron", |
| "scaron", |
| "Zcaron", |
| "zcaron", |
| "brokenbar", |
| "Eth", |
| "eth", |
| "Yacute", |
| "yacute", |
| "Thorn", |
| "thorn", |
| "minus", |
| "multiply", |
| "onesuperior", |
| "twosuperior", |
| "threesuperior", |
| "onehalf", |
| "onequarter", |
| "threequarters", |
| "franc", |
| "Gbreve", |
| "gbreve", |
| "Idotaccent", |
| "Scedilla", |
| "scedilla", |
| "Cacute", |
| "cacute", |
| "Ccaron", |
| "ccaron", |
| "dcroat", |
| } |