truetype

package
v0.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 13, 2023 License: Freetype Imports: 10 Imported by: 0

Documentation

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().

Index

Constants

View Source
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
)

Variables

This section is empty.

Functions

func NewFace

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

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

Types

type Font

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

A Font represents a Truetype font.

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

type FormatError string

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

func (FormatError) Error

func (e FormatError) Error() string

type GlyphBuf

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
}

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

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

type HMetric struct {
	AdvanceWidth, LeftSideBearing fixed.Int26_6
}

An HMetric holds the horizontal metrics of a single glyph.

type Index

type Index uint16

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

type NameID

type NameID uint16

A NameID identifies a name table entry.

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

type Options

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
}

Options are optional arguments to NewFace.

type 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
}

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

type UnsupportedError

type UnsupportedError string

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

func (UnsupportedError) Error

func (e UnsupportedError) Error() string

type VMetric

type VMetric struct {
	AdvanceHeight, TopSideBearing fixed.Int26_6
}

A VMetric holds the vertical metrics of a single glyph.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL