func main() { flag.Parse() fmt.Printf("Loading fontfile %q\n", *fontfile) b, err := ioutil.ReadFile(*fontfile) if err != nil { log.Println(err) return } font, err := truetype.Parse(b) if err != nil { log.Println(err) return } printBounds(font.Bounds()) fmt.Printf("UnitsPerEm:%d\n\n", font.UnitsPerEm()) c0, c1 := 'A', 'V' i0 := font.Index(c0) hm := font.HMetric(i0) g := truetype.NewGlyphBuf() err = g.Load(font, i0) if err != nil { log.Println(err) return } fmt.Printf("'%c' glyph\n", c0) fmt.Printf("AdvanceWidth:%d LeftSideBearing:%d\n", hm.AdvanceWidth, hm.LeftSideBearing) printGlyph(g) i1 := font.Index(c1) fmt.Printf("\n'%c', '%c' Kerning:%d\n", c0, c1, font.Kerning(i0, i1)) }
// ParseFont just calls the Parse function from the freetype/truetype package. // It is provided here so that code that imports this package doesn't need // to also include the freetype/truetype package. func ParseFont(b []byte) (*truetype.Font, error) { return truetype.Parse(b) }