...

Package truetype

import "github.com/golang/freetype/truetype"
Overview
Index

Overview ▾

Package truetype provides a parser for the TTF and TTC file formats. Those formats are documented at http://developer.apple.com/fonts/TTRefMan/ and http://www.microsoft.com/typography/otspec/

Some of a font's methods provide lengths or co-ordinates, e.g. bounds, font metrics and control points. All these methods take a scale parameter, which is the number of pixels in 1 em, expressed as a 26.6 fixed point value. For example, if 1 em is 10 pixels then scale is fixed.I(10), which is equal to fixed.Int26_6(10 << 6).

To measure a TrueType font in ideal FUnit space, use scale equal to font.FUnitsPerEm().

Constants

const (
    NameIDCopyright          NameID = 0
    NameIDFontFamily                = 1
    NameIDFontSubfamily             = 2
    NameIDUniqueSubfamilyID         = 3
    NameIDFontFullName              = 4
    NameIDNameTableVersion          = 5
    NameIDPostscriptName            = 6
    NameIDTrademarkNotice           = 7
    NameIDManufacturerName          = 8
    NameIDDesignerName              = 9
    NameIDFontDescription           = 10
    NameIDFontVendorURL             = 11
    NameIDFontDesignerURL           = 12
    NameIDFontLicense               = 13
    NameIDFontLicenseURL            = 14
    NameIDPreferredFamily           = 16
    NameIDPreferredSubfamily        = 17
    NameIDCompatibleName            = 18
    NameIDSampleText                = 19
)

func NewFace

func NewFace(f *Font, opts *Options) font.Face

NewFace returns a new font.Face for the given Font.

type Font

A Font represents a Truetype font.

type Font struct {
    // contains filtered or unexported fields
}

func Parse

func Parse(ttf []byte) (font *Font, err error)

Parse returns a new Font for the given TTF or TTC data.

For TrueType Collections, the first font in the collection is parsed.

func (*Font) Bounds

func (f *Font) Bounds(scale fixed.Int26_6) fixed.Rectangle26_6

Bounds returns the union of a Font's glyphs' bounds.

func (*Font) FUnitsPerEm

func (f *Font) FUnitsPerEm() int32

FUnitsPerEm returns the number of FUnits in a Font's em-square's side.

func (*Font) HMetric

func (f *Font) HMetric(scale fixed.Int26_6, i Index) HMetric

HMetric returns the horizontal metrics for the glyph with the given index.

func (*Font) Index

func (f *Font) Index(x rune) Index

Index returns a Font's index for the given rune.

func (*Font) Kern

func (f *Font) Kern(scale fixed.Int26_6, i0, i1 Index) fixed.Int26_6

Kern returns the horizontal adjustment for the given glyph pair. A positive kern means to move the glyphs further apart.

func (*Font) Name

func (f *Font) Name(id NameID) string

Name returns the Font's name value for the given NameID. It returns "" if there was an error, or if that name was not found.

func (*Font) VMetric

func (f *Font) VMetric(scale fixed.Int26_6, i Index) VMetric

VMetric returns the vertical metrics for the glyph with the given index.

type FormatError

A FormatError reports that the input is not a valid TrueType font.

type FormatError string

func (FormatError) Error

func (e FormatError) Error() string

type GlyphBuf

A GlyphBuf holds a glyph's contours. A GlyphBuf can be re-used to load a series of glyphs from a Font.

type GlyphBuf struct {
    // AdvanceWidth is the glyph's advance width.
    AdvanceWidth fixed.Int26_6
    // Bounds is the glyph's bounding box.
    Bounds fixed.Rectangle26_6
    // Points contains all Points from all contours of the glyph. If hinting
    // was used to load a glyph then Unhinted contains those Points before they
    // were hinted, and InFontUnits contains those Points before they were
    // hinted and scaled.
    Points, Unhinted, InFontUnits []Point
    // Ends is the point indexes of the end point of each contour. The length
    // of Ends is the number of contours in the glyph. The i'th contour
    // consists of points Points[Ends[i-1]:Ends[i]], where Ends[-1] is
    // interpreted to mean zero.
    Ends []int
    // contains filtered or unexported fields
}

func (*GlyphBuf) Load

func (g *GlyphBuf) Load(f *Font, scale fixed.Int26_6, i Index, h font.Hinting) error

Load loads a glyph's contours from a Font, overwriting any previously loaded contours for this GlyphBuf. scale is the number of 26.6 fixed point units in 1 em, i is the glyph index, and h is the hinting policy.

type HMetric

An HMetric holds the horizontal metrics of a single glyph.

type HMetric struct {
    AdvanceWidth, LeftSideBearing fixed.Int26_6
}

type Index

An Index is a Font's index of a rune.

type Index uint16

type NameID

A NameID identifies a name table entry.

See https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6name.html

type NameID uint16

type Options

Options are optional arguments to NewFace.

type Options struct {
    // Size is the font size in points, as in "a 10 point font size".
    //
    // A zero value means to use a 12 point font size.
    Size float64

    // DPI is the dots-per-inch resolution.
    //
    // A zero value means to use 72 DPI.
    DPI float64

    // Hinting is how to quantize the glyph nodes.
    //
    // A zero value means to use no hinting.
    Hinting font.Hinting

    // GlyphCacheEntries is the number of entries in the glyph mask image
    // cache.
    //
    // If non-zero, it must be a power of 2.
    //
    // A zero value means to use 512 entries.
    GlyphCacheEntries int

    // SubPixelsX is the number of sub-pixel locations a glyph's dot is
    // quantized to, in the horizontal direction. For example, a value of 8
    // means that the dot is quantized to 1/8th of a pixel. This quantization
    // only affects the glyph mask image, not its bounding box or advance
    // width. A higher value gives a more faithful glyph image, but reduces the
    // effectiveness of the glyph cache.
    //
    // If non-zero, it must be a power of 2, and be between 1 and 64 inclusive.
    //
    // A zero value means to use 4 sub-pixel locations.
    SubPixelsX int

    // SubPixelsY is the number of sub-pixel locations a glyph's dot is
    // quantized to, in the vertical direction. For example, a value of 8
    // means that the dot is quantized to 1/8th of a pixel. This quantization
    // only affects the glyph mask image, not its bounding box or advance
    // width. A higher value gives a more faithful glyph image, but reduces the
    // effectiveness of the glyph cache.
    //
    // If non-zero, it must be a power of 2, and be between 1 and 64 inclusive.
    //
    // A zero value means to use 1 sub-pixel location.
    SubPixelsY int
}

type Point

A Point is a co-ordinate pair plus whether it is 'on' a contour or an 'off' control point.

type Point struct {
    X, Y fixed.Int26_6
    // The Flags' LSB means whether or not this Point is 'on' the contour.
    // Other bits are reserved for internal use.
    Flags uint32
}

type UnsupportedError

An UnsupportedError reports that the input uses a valid but unimplemented TrueType feature.

type UnsupportedError string

func (UnsupportedError) Error

func (e UnsupportedError) Error() string

type VMetric

A VMetric holds the vertical metrics of a single glyph.

type VMetric struct {
    AdvanceHeight, TopSideBearing fixed.Int26_6
}