bugfix in rune path

This commit is contained in:
Thomas Friedel 2020-03-28 12:08:33 +01:00
parent 1711693a57
commit 1d5a02b1d6

18
text.go
View file

@ -494,30 +494,24 @@ func (cv *Canvas) runePath(rn rune) *Path2D {
const scale = 1.0 / 64.0 const scale = 1.0 / 64.0
gb := &truetype.GlyphBuf{} var gb truetype.GlyphBuf
gb.Load(cv.state.font.font, baseFontSize, idx, font.HintingNone) gb.Load(cv.state.font.font, baseFontSize, idx, font.HintingFull)
from := 0 from := 0
for _, to := range gb.Ends { for _, to := range gb.Ends {
ps := gb.Points[from:to] ps := gb.Points[from:to]
start := fixed.Point26_6{ start := ps[0]
X: ps[0].X,
Y: ps[0].Y,
}
others := []truetype.Point(nil) others := []truetype.Point(nil)
if ps[0].Flags&0x01 != 0 { if ps[0].Flags&0x01 != 0 {
others = ps[1:] others = ps[1:]
} else { } else {
last := fixed.Point26_6{ last := ps[len(ps)-1]
X: ps[len(ps)-1].X,
Y: ps[len(ps)-1].Y,
}
if ps[len(ps)-1].Flags&0x01 != 0 { if ps[len(ps)-1].Flags&0x01 != 0 {
start = last start = last
others = ps[:len(ps)-1] others = ps[:len(ps)-1]
} else { } else {
start = fixed.Point26_6{ start = truetype.Point{
X: (start.X + last.X) / 2, X: (start.X + last.X) / 2,
Y: (start.Y + last.Y) / 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) path.MoveTo(float64(p0.X)*scale, -float64(p0.Y)*scale)
for _, p := range others { for _, p := range others {
on := p.Flags&0x01 != 0 on := p.Flags&0x01 != 0