opentype

package
v0.0.0-...-8f51401 Latest Latest
Warning

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

Go to latest
Published: Mar 4, 2025 License: BSD-3-Clause, Unlicense Imports: 7 Imported by: 0

Documentation

Overview

Package opentype provides the low level routines required to read and write Opentype font files, including collections.

This package is designed to provide an efficient, lazy, reading API.

For the parsing of the various tables, see package [tables].

Index

Constants

This section is empty.

Variables

View Source
var (
	// TrueType is the first four bytes of an OpenType file containing a TrueType font
	TrueType = Tag(0x00010000)
	// AppleTrueType is the first four bytes of an OpenType file containing a TrueType font
	// (specifically one designed for Apple products, it's recommended to use TrueType instead)
	AppleTrueType = MustNewTag("true")
	// PostScript1 is the first four bytes of an OpenType file containing a PostScript 1 font
	PostScript1 = MustNewTag("typ1")
	// OpenType is the first four bytes of an OpenType file containing a PostScript Type 2 font
	// as specified by OpenType
	OpenType = MustNewTag("OTTO")
)

Functions

func WriteTTF

func WriteTTF(tables []Table) []byte

WriteTTF creates a single Truetype font file (.ttf) from the given [tables] slice, which must be sorted by Tag

Types

type GID

type GID uint32

type GlyphExtents

type GlyphExtents struct {
	XBearing float32 // Left side of glyph from origin
	YBearing float32 // Top side of glyph from origin
	Width    float32 // Distance from left to right side
	Height   float32 // Distance from top to bottom side
}

type Loader

type Loader struct {

	// Type represents the kind of this font being loaded.
	// It is one of TrueType, TrueTypeApple, PostScript1, OpenType
	Type Tag
	// contains filtered or unexported fields
}

Loader is the low level font reader, providing full control over table loading.

func NewLoader

func NewLoader(file Resource) (*Loader, error)

NewLoader reads the `file` header and returns a new lazy ot. `file` will be used to parse tables, and should not be close.

func NewLoaders

func NewLoaders(file Resource) ([]*Loader, error)

NewLoaders is the same as `NewLoader`, but supports collections.

func (*Loader) HasTable

func (pr *Loader) HasTable(table Tag) bool

HasTable returns true if [table] is present.

func (*Loader) RawTable

func (pr *Loader) RawTable(tag Tag) ([]byte, error)

RawTable returns the binary content of the given table, or an error if not found.

func (*Loader) RawTableTo

func (pr *Loader) RawTableTo(tag Tag, dst []byte) ([]byte, error)

RawTable writes the binary content of the given table to [dst], returning it, or an error if not found.

func (*Loader) Tables

func (ld *Loader) Tables() []Tag

Tables returns all the tables found in the file, as a sorted slice.

type Resource

type Resource interface {
	Read([]byte) (int, error)
	ReadAt([]byte, int64) (int, error)
	Seek(int64, int) (int64, error)
}

type Segment

type Segment struct {
	Op SegmentOp
	// Args is up to three (x, y) coordinates, depending on the
	// operation.
	// The Y axis increases up.
	Args [3]SegmentPoint
}

func (*Segment) ArgsSlice

func (s *Segment) ArgsSlice() []SegmentPoint

ArgsSlice returns the effective slice of points used (whose length is between 1 and 3).

type SegmentOp

type SegmentOp uint8
const (
	SegmentOpMoveTo SegmentOp = iota
	SegmentOpLineTo
	SegmentOpQuadTo
	SegmentOpCubeTo
)

type SegmentPoint

type SegmentPoint struct {
	X, Y float32 // expressed in fonts units
}

func (*SegmentPoint) Move

func (pt *SegmentPoint) Move(dx, dy float32)

Move translates the point.

type Table

type Table struct {
	Content []byte
	Tag     Tag
}

Table is one opentype binary table and its tag.

type Tag

type Tag uint32

func MustNewTag

func MustNewTag(str string) Tag

MustNewTag gives you the Tag corresponding to the acronym. This function will panic if the string passed in is not 4 bytes long.

func NewTag

func NewTag(a, b, c, d byte) Tag

NewTag returns the tag for <abcd>.

func (Tag) String

func (t Tag) String() string

String return the ASCII form of the tag.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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