From 80d3cfdede4e1f45a1161345bd006db35ba7f6ab Mon Sep 17 00:00:00 2001 From: implausiblyfun Date: Sat, 11 Jun 2022 11:27:37 -0400 Subject: [PATCH] render/font: Enforce default truetype font height for Height() --- render/font.go | 7 ++++++- render/font_test.go | 13 +++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/render/font.go b/render/font.go index a95dd7cf..5897b339 100644 --- a/render/font.go +++ b/render/font.go @@ -29,6 +29,8 @@ var ( // DefaultFontGenerator is a default font generator, using an internally // compiled font colored white by default. DefaultFontGenerator = DefFontGenerator + + defFontSize = 12.0 ) // A Font can create text renderables. It should be constructed from @@ -100,7 +102,7 @@ func (fg *FontGenerator) Generate() (*Font, error) { } // This logic is copied from truetype for their face scaling - size := 12.0 + size := defFontSize if fg.FontOptions.Size != 0 { size = fg.FontOptions.Size } @@ -217,6 +219,9 @@ func (f *Font) drawString(s string) { // Height returns the height or size of the font func (f *Font) Height() float64 { + if f.gen.Size == 0 { + return defFontSize + } return f.gen.Size } diff --git a/render/font_test.go b/render/font_test.go index 12f86913..a0d1adca 100644 --- a/render/font_test.go +++ b/render/font_test.go @@ -120,6 +120,19 @@ func TestFont_Height(t *testing.T) { if f.Height() != ht { t.Fatalf("size did not match height: got %v expected %v", f.Height(), ht) } + + fgEmpty := FontGenerator{ + File: "testdata/assets/fonts/luxisr.ttf", + Color: image.NewUniform(color.RGBA{255, 0, 0, 255}), + } + f, err = fgEmpty.Generate() + if err != nil { + t.Fatalf("generate failed: %v", err) + } + if f.Height() != defFontSize { + t.Fatalf("size did not match height: got %v expected %v", f.Height(), ht) + } + } func TestFont_RegenerateWith(t *testing.T) {