// Copyright 2022 The Ebitengine Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. //go:build ignore package main import ( "fmt" "image" "image/color" "image/png" "os" "github.com/hajimehoshi/bitmapfont/v2" "golang.org/x/image/font" "golang.org/x/image/math/fixed" ) func main() { if err := run(); err != nil { fmt.Fprintf(os.Stderr, "%v\n", err) } } func run() error { // These values are copied from an example in github.com/hajimehoshi/bitmapfont. const ( charWidth = 6 lineHeight = 16 dotX = 4 dotY = 12 ) var lines []string for j := 0; j < 8; j++ { var line string for i := 0; i < 32; i++ { line += string(rune(i + j*32)) } lines = append(lines, line) } dst := image.NewRGBA(image.Rect(0, 0, charWidth*32, lineHeight*8)) for i, clr := range []color.Color{color.RGBA{0, 0, 0, 0x80}, color.White} { var offsetX int var offsetY int if i == 0 { offsetX = 1 offsetY = 1 } d := font.Drawer{ Dst: dst, Src: image.NewUniform(clr), Face: bitmapfont.Face, Dot: fixed.P(dotX+offsetX, dotY+offsetY), } for _, line := range lines { d.Dot.X = fixed.I(dotX + offsetX) d.DrawString(line) d.Dot.Y += fixed.I(lineHeight) } } f, err := os.Create("text.png") if err != nil { return err } defer f.Close() if err := png.Encode(f, dst); err != nil { return err } return nil }