https://github.com/fzipp/bmfont
Load and render bitmap fonts in the format of AngelCode's bitmap font generator.
https://github.com/fzipp/bmfont
angelcode-bitmap-fonts bitmap-font bmfont go golang
Last synced: about 1 year ago
JSON representation
Load and render bitmap fonts in the format of AngelCode's bitmap font generator.
- Host: GitHub
- URL: https://github.com/fzipp/bmfont
- Owner: fzipp
- License: bsd-3-clause
- Created: 2020-03-01T06:41:46.000Z (over 6 years ago)
- Default Branch: main
- Last Pushed: 2024-05-01T05:59:16.000Z (about 2 years ago)
- Last Synced: 2025-03-27T13:40:48.102Z (over 1 year ago)
- Topics: angelcode-bitmap-fonts, bitmap-font, bmfont, go, golang
- Language: Go
- Homepage:
- Size: 19.5 KB
- Stars: 6
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# bmfont
A Go package to load and render bitmap fonts
created with [AngelCode's bitmap font generator](https://www.angelcode.com/products/bmfont/)
or other tools that generate output in the same format.
This package uses the [text format](ttp://www.angelcode.com/products/bmfont/doc/file_format.html)
for font descriptor files (.fnt), not the binary format.
## Documentation
Package documentation is available [on pkg.go.dev](https://pkg.go.dev/github.com/fzipp/bmfont?tab=doc).
## Example usage
Load a bitmap font and draw text to an image:
```go
package main
import (
"log"
"github.com/fzipp/bmfont"
)
func main() {
font, err := bmfont.Load("ExampleFont.fnt")
if err != nil {
log.Fatal(err)
}
img := image.NewRGBA(image.Rect(0, 0, 600, 300))
font.DrawText(img, image.Pt(10, 20), `hello, world
This is an example.
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ`)
// ...
}
```
Measure the text before drawing in order to determine the size of the image:
```go
package main
import (
"log"
"github.com/fzipp/bmfont"
)
func main() {
font, err := bmfont.Load("ExampleFont.fnt")
if err != nil {
log.Fatal(err)
}
text := `hello, world
This is an example.
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ`
bounds := font.MeasureText(text)
img := image.NewRGBA(image.Rect(0, 0, bounds.Dx(), bounds.Dy()))
font.DrawText(img, image.Point{}.Sub(bounds.Min), text)
// ...
}
```
Only load the descriptor of a bitmap font:
```go
package main
import (
"fmt"
"log"
"github.com/fzipp/bmfont"
)
func main() {
desc, err := bmfont.LoadDescriptor("ExampleFont.fnt")
if err != nil {
log.Fatal(err)
}
fmt.Println(desc.Info.Face)
fmt.Println("line height:", desc.Common.LineHeight)
fmt.Println("letter A width:", desc.Chars['A'].Width)
}
```
## License
This project is free and open source software licensed under the
[BSD 3-Clause License](LICENSE).