Update generator.regulate
This commit is contained in:
parent
e51a40e20d
commit
17b19412b4
1 changed files with 29 additions and 34 deletions
63
generator.js
63
generator.js
|
@ -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 => {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue