Documentation ¶
Overview ¶
Package font defines an interface for font faces, for drawing text on an image.
Other packages provide font face implementations. For example, a truetype package would provide one based on .ttf font files.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Drawer ¶
type Drawer struct { // Dst is the destination image. Dst draw.Image // Src is the source image. Src image.Image // Face provides the glyph mask images. Face Face // Dot is the baseline location to draw the next glyph. The majority of the // affected pixels will be above and to the right of the dot, but some may // be below or to the left. For example, drawing a 'j' in an italic face // may affect pixels below and to the left of the dot. Dot fixed.Point26_6 }
Drawer draws text on a destination image.
A Drawer is not safe for concurrent use by multiple goroutines, since its Face is not.
func (*Drawer) DrawString ¶
DrawString draws s at the dot and advances the dot's location.
type Face ¶
type Face interface { io.Closer // Glyph returns the draw.DrawMask parameters (dr, mask, maskp) to draw r's // glyph at the sub-pixel destination location dot, and that glyph's // advance width. // // It returns !ok if the face does not contain a glyph for r. // // The contents of the mask image returned by one Glyph call may change // after the next Glyph call. Callers that want to cache the mask must make // a copy. Glyph(dot fixed.Point26_6, r rune) ( dr image.Rectangle, mask image.Image, maskp image.Point, advance fixed.Int26_6, ok bool) // GlyphBounds returns the bounding box of r's glyph, drawn at a dot equal // to the origin, and that glyph's advance width. // // It returns !ok if the face does not contain a glyph for r. // // The glyph's ascent and descent equal -bounds.Min.Y and +bounds.Max.Y. A // visual depiction of what these metrics are is at // https://developer.apple.com/library/mac/documentation/TextFonts/Conceptual/CocoaTextArchitecture/Art/glyph_metrics_2x.png GlyphBounds(r rune) (bounds fixed.Rectangle26_6, advance fixed.Int26_6, ok bool) // GlyphAdvance returns the advance width of r's glyph. // // It returns !ok if the face does not contain a glyph for r. GlyphAdvance(r rune) (advance fixed.Int26_6, ok bool) // Kern returns the horizontal adjustment for the kerning pair (r0, r1). A // positive kern means to move the glyphs further apart. Kern(r0, r1 rune) fixed.Int26_6 }
Face is a font face. Its glyphs are often derived from a font file, such as "Comic_Sans_MS.ttf", but a face has a specific size, style, weight and hinting. For example, the 12pt and 18pt versions of Comic Sans are two different faces, even if derived from the same font file.
A Face is not safe for concurrent use by multiple goroutines, as its methods may re-use implementation-specific caches and mask image buffers.
To create a Face, look to other packages that implement specific font file formats.
type Hinting ¶
type Hinting int
Hinting selects how to quantize a vector font's glyph nodes.
Not all fonts support hinting.
type Stretch ¶
type Stretch int
Stretch selects a normal, condensed, or expanded face.
Not all fonts support stretches.
const ( StretchUltraCondensed Stretch = -4 StretchExtraCondensed Stretch = -3 StretchCondensed Stretch = -2 StretchSemiCondensed Stretch = -1 StretchNormal Stretch = +0 StretchSemiExpanded Stretch = +1 StretchExpanded Stretch = +2 StretchExtraExpanded Stretch = +3 StretchUltraExpanded Stretch = +4 )
type Style ¶
type Style int
Style selects a normal, italic, or oblique face.
Not all fonts support styles.