kerning in StrokeText

This commit is contained in:
Thomas Friedel 2020-03-22 09:50:32 +01:00
parent d3cc20f911
commit 066f4f55bb

View file

@ -326,11 +326,20 @@ func (cv *Canvas) StrokeText(str string, x, y float64) {
prevPath := cv.path prevPath := cv.path
cv.BeginPath() cv.BeginPath()
prev, hasPrev := truetype.Index(0), false
for _, rn := range str { for _, rn := range str {
idx := fnt.Index(rn) idx := fnt.Index(rn)
if idx == 0 { if idx == 0 {
idx = fnt.Index(' ') idx = fnt.Index(' ')
} }
if hasPrev {
kern := fnt.Kern(cv.state.fontSize, prev, idx)
if frc.hinting != font.HintingNone {
kern = (kern + 32) &^ 63
}
x += float64(kern) / 64
}
advance, _, err := frc.glyphMeasure(idx, fixed.Point26_6{}) advance, _, err := frc.glyphMeasure(idx, fixed.Point26_6{})
if err != nil { if err != nil {
continue continue