bugfix in rune path
This commit is contained in:
parent
1711693a57
commit
1d5a02b1d6
1 changed files with 6 additions and 12 deletions
18
text.go
18
text.go
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue