From 1d5a02b1d6e48fefd68dd2f93a7084c88c45bfd4 Mon Sep 17 00:00:00 2001 From: Thomas Friedel Date: Sat, 28 Mar 2020 12:08:33 +0100 Subject: [PATCH] bugfix in rune path --- text.go | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/text.go b/text.go index 44f3a8b..cb11063 100644 --- a/text.go +++ b/text.go @@ -494,30 +494,24 @@ func (cv *Canvas) runePath(rn rune) *Path2D { const scale = 1.0 / 64.0 - gb := &truetype.GlyphBuf{} - gb.Load(cv.state.font.font, baseFontSize, idx, font.HintingNone) + var gb truetype.GlyphBuf + gb.Load(cv.state.font.font, baseFontSize, idx, font.HintingFull) from := 0 for _, to := range gb.Ends { ps := gb.Points[from:to] - start := fixed.Point26_6{ - X: ps[0].X, - Y: ps[0].Y, - } + start := ps[0] others := []truetype.Point(nil) if ps[0].Flags&0x01 != 0 { others = ps[1:] } else { - last := fixed.Point26_6{ - X: ps[len(ps)-1].X, - Y: ps[len(ps)-1].Y, - } + last := ps[len(ps)-1] if ps[len(ps)-1].Flags&0x01 != 0 { start = last others = ps[:len(ps)-1] } else { - start = fixed.Point26_6{ + start = truetype.Point{ X: (start.X + last.X) / 2, Y: (start.Y + last.Y) / 2, } @@ -525,7 +519,7 @@ func (cv *Canvas) runePath(rn rune) *Path2D { } } - p0, on0 := gb.Points[from], false + p0, on0 := start, true path.MoveTo(float64(p0.X)*scale, -float64(p0.Y)*scale) for _, p := range others { on := p.Flags&0x01 != 0