package gg import ( //"strings" "golang.org/x/image/font" "golang.org/x/image/font/opentype" "github.com/hajimehoshi/ebiten/v2/text" "github.com/hajimehoshi/ebiten/v2" "io" //"fmt" ) //type FontOptions = font.Options var ( FontHintingNone = font.HintingNone ) type Face = font.Face type TtfFont = opentype.Font type TtfFaceOptions = opentype.FaceOptions type TtfFace = opentype.Face func MakeFaceFromTtf(src io.ReaderAt, opts *TtfFaceOptions) (Face, error) { fnt, err := ParseTtfFont(src) if err != nil { return nil, err } face, err := NewTtfFace(fnt, opts) if err != nil { return nil, err } return face, nil } func ParseTtfFont(src io.ReaderAt) (*TtfFont, error) { return opentype.ParseReaderAt(src) } func NewTtfFace(fnt *TtfFont, opts *TtfFaceOptions) (Face, error) { return opentype.NewFace(fnt, opts) } // The type implements basic drawable text. // (Now needs to implement rotation, scaling etc, cause now only position) type Text struct { Object Transform Data string Face Face Colority Visibility } func (txt *Text) Draw(c *Context) []EVertex { m := txt.Matrix() m.Concat(c.Camera.RealMatrix()) //x, y := txt.Position.XY() //text.Draw(c.Image) text.DrawWithOptions(c.Image, txt.Data, txt.Face, &ebiten.DrawImageOptions{ GeoM: m, }, ) return nil }