buildPath function
dynamic
buildPath(
- dynamic glyphs,
- dynamic glyph
Implementation
buildPath(glyphs, glyph) {
if (glyph.isComposite) {
for (var j = 0; j < glyph.components.length; j += 1) {
var component = glyph.components[j];
var componentGlyph = glyphs.get(component.glyphIndex);
// Force the ttfGlyphLoader to parse the glyph.
componentGlyph.getPath();
if (componentGlyph.points) {
var transformedPoints;
if (component.matchedPoints == null) {
// component positioned by offset
transformedPoints = transformPoints(componentGlyph.points, component);
} else {
// component positioned by matched points
if ((component.matchedPoints[0] > glyph.points.length - 1) ||
(component.matchedPoints[1] > componentGlyph.points.length - 1)) {
throw('Matched points out of range in ' + glyph.name);
}
var firstPt = glyph.points[component.matchedPoints[0]];
var secondPt = componentGlyph.points[component.matchedPoints[1]];
var transform = {
"xScale": component.xScale,
"scale01": component.scale01,
"scale10": component.scale10,
"yScale": component.yScale,
"dx": 0,
"dy": 0
};
secondPt = transformPoints([secondPt], transform)[0];
transform["dx"] = firstPt.x - secondPt.x;
transform["dy"] = firstPt.y - secondPt.y;
transformedPoints = transformPoints(componentGlyph.points, transform);
}
glyph.points = glyph.points.concat(transformedPoints);
}
}
}
return getPath(glyph.points);
}