Update generator.regulate

This commit is contained in:
be5invis 2017-12-11 16:51:15 +08:00
parent e51a40e20d
commit 17b19412b4

View file

@ -160,44 +160,39 @@ if (argv.o) {
autoref(font.glyf);
// regulate
font.glyf.forEach(g => {
if (g.contours) {
for (var k = 0; k < g.contours.length; k++) {
var contour = g.contours[k];
for (var p = 0; p < contour.length; p++) {
contour[p].x += contour[p].y * skew;
if (contour[p].on) {
contour[p].x = Math.round(contour[p].x);
}
}
var offJ = null,
mx = null;
for (var p = 0; p < contour.length; p++) {
if (contour[p].on) {
if (offJ) {
var origx = contour[p].x;
var rx = Math.round(contour[p].x * 4) / 4;
var origx0 = mx;
var rx0 = contour[offJ - 1].x;
if (origx != origx0) {
for (var poff = offJ; poff < p; poff++) {
contour[poff].x =
(contour[poff].x - origx0) / (origx - origx0) * (rx - rx0) +
rx0;
}
}
}
mx = contour[p].x;
contour[p].x = Math.round(contour[p].x * 4) / 4;
offJ = p + 1;
if (!g.contours) return;
for (var k = 0; k < g.contours.length; k++) {
var contour = g.contours[k];
for (var p = 0; p < contour.length; p++) {
contour[p].x += contour[p].y * skew;
if (!contour[p].on) continue;
contour[p].x = Math.round(contour[p].x);
}
var offJ = null,
mx = null;
for (var p = 0; p < contour.length; p++) {
if (!contour[p].on) continue;
if (offJ) {
var origx = contour[p].x;
var rx = Math.round(contour[p].x * 4) / 4;
var origx0 = mx;
var rx0 = contour[offJ - 1].x;
if (origx === origx0) continue;
for (var poff = offJ; poff < p; poff++) {
contour[poff].x =
(contour[poff].x - origx0) / (origx - origx0) * (rx - rx0) + rx0;
}
}
mx = contour[p].x;
contour[p].x = Math.round(contour[p].x * 4) / 4;
offJ = p + 1;
}
var c1 = [];
for (var k = 0; k < g.contours.length; k++) {
c1.push(Glyph.contourToStandardCubic(g.contours[k]));
}
g.contours = c1;
}
var c1 = [];
for (var k = 0; k < g.contours.length; k++) {
c1.push(Glyph.contourToStandardCubic(g.contours[k]));
}
g.contours = c1;
});
// overlap removal
font.glyf.forEach(g => {