summaryrefslogtreecommitdiffstats
path: root/vendor/golang.org/x/image/font/sfnt/truetype.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/golang.org/x/image/font/sfnt/truetype.go')
-rw-r--r--vendor/golang.org/x/image/font/sfnt/truetype.go78
1 files changed, 22 insertions, 56 deletions
diff --git a/vendor/golang.org/x/image/font/sfnt/truetype.go b/vendor/golang.org/x/image/font/sfnt/truetype.go
index 41819617d..ab27f5b2c 100644
--- a/vendor/golang.org/x/image/font/sfnt/truetype.go
+++ b/vendor/golang.org/x/image/font/sfnt/truetype.go
@@ -51,7 +51,7 @@ func midPoint(p, q fixed.Point26_6) fixed.Point26_6 {
}
}
-func parseLoca(src *source, loca table, glyfOffset uint32, indexToLocFormat bool, numGlyphs int) (locations []uint32, err error) {
+func parseLoca(src *source, loca table, glyfOffset uint32, indexToLocFormat bool, numGlyphs int32) (locations []uint32, err error) {
if indexToLocFormat {
if loca.length != 4*uint32(numGlyphs+1) {
return nil, errInvalidLocaTable
@@ -414,44 +414,28 @@ func (g *glyfIter) close() {
case !g.firstOffCurveValid && !g.lastOffCurveValid:
g.closed = true
g.seg = Segment{
- Op: SegmentOpLineTo,
- Args: [6]fixed.Int26_6{
- g.firstOnCurve.X,
- g.firstOnCurve.Y,
- },
+ Op: SegmentOpLineTo,
+ Args: [3]fixed.Point26_6{g.firstOnCurve},
}
case !g.firstOffCurveValid && g.lastOffCurveValid:
g.closed = true
g.seg = Segment{
- Op: SegmentOpQuadTo,
- Args: [6]fixed.Int26_6{
- g.lastOffCurve.X,
- g.lastOffCurve.Y,
- g.firstOnCurve.X,
- g.firstOnCurve.Y,
- },
+ Op: SegmentOpQuadTo,
+ Args: [3]fixed.Point26_6{g.lastOffCurve, g.firstOnCurve},
}
case g.firstOffCurveValid && !g.lastOffCurveValid:
g.closed = true
g.seg = Segment{
- Op: SegmentOpQuadTo,
- Args: [6]fixed.Int26_6{
- g.firstOffCurve.X,
- g.firstOffCurve.Y,
- g.firstOnCurve.X,
- g.firstOnCurve.Y,
- },
+ Op: SegmentOpQuadTo,
+ Args: [3]fixed.Point26_6{g.firstOffCurve, g.firstOnCurve},
}
case g.firstOffCurveValid && g.lastOffCurveValid:
- mid := midPoint(g.lastOffCurve, g.firstOffCurve)
g.lastOffCurveValid = false
g.seg = Segment{
Op: SegmentOpQuadTo,
- Args: [6]fixed.Int26_6{
- g.lastOffCurve.X,
- g.lastOffCurve.Y,
- mid.X,
- mid.Y,
+ Args: [3]fixed.Point26_6{
+ g.lastOffCurve,
+ midPoint(g.lastOffCurve, g.firstOffCurve),
},
}
}
@@ -484,11 +468,8 @@ func (g *glyfIter) nextSegment() (ok bool) {
g.firstOnCurve = p
g.firstOnCurveValid = true
g.seg = Segment{
- Op: SegmentOpMoveTo,
- Args: [6]fixed.Int26_6{
- p.X,
- p.Y,
- },
+ Op: SegmentOpMoveTo,
+ Args: [3]fixed.Point26_6{p},
}
return true
} else if !g.firstOffCurveValid {
@@ -496,17 +477,13 @@ func (g *glyfIter) nextSegment() (ok bool) {
g.firstOffCurveValid = true
continue
} else {
- midp := midPoint(g.firstOffCurve, p)
- g.firstOnCurve = midp
+ g.firstOnCurve = midPoint(g.firstOffCurve, p)
g.firstOnCurveValid = true
g.lastOffCurve = p
g.lastOffCurveValid = true
g.seg = Segment{
- Op: SegmentOpMoveTo,
- Args: [6]fixed.Int26_6{
- midp.X,
- midp.Y,
- },
+ Op: SegmentOpMoveTo,
+ Args: [3]fixed.Point26_6{g.firstOnCurve},
}
return true
}
@@ -518,25 +495,19 @@ func (g *glyfIter) nextSegment() (ok bool) {
continue
} else {
g.seg = Segment{
- Op: SegmentOpLineTo,
- Args: [6]fixed.Int26_6{
- p.X,
- p.Y,
- },
+ Op: SegmentOpLineTo,
+ Args: [3]fixed.Point26_6{p},
}
return true
}
} else {
if !g.on {
- midp := midPoint(g.lastOffCurve, p)
g.seg = Segment{
Op: SegmentOpQuadTo,
- Args: [6]fixed.Int26_6{
- g.lastOffCurve.X,
- g.lastOffCurve.Y,
- midp.X,
- midp.Y,
+ Args: [3]fixed.Point26_6{
+ g.lastOffCurve,
+ midPoint(g.lastOffCurve, p),
},
}
g.lastOffCurve = p
@@ -544,13 +515,8 @@ func (g *glyfIter) nextSegment() (ok bool) {
return true
} else {
g.seg = Segment{
- Op: SegmentOpQuadTo,
- Args: [6]fixed.Int26_6{
- g.lastOffCurve.X,
- g.lastOffCurve.Y,
- p.X,
- p.Y,
- },
+ Op: SegmentOpQuadTo,
+ Args: [3]fixed.Point26_6{g.lastOffCurve, p},
}
g.lastOffCurveValid = false
return true