322 lines
4.2 KiB
Go
322 lines
4.2 KiB
Go
// 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",
|
|
}
|