diff --git a/glyphs/letters-unified-basic.ptl b/glyphs/letters-unified-basic.ptl index c5e4861af..c472110c0 100644 --- a/glyphs/letters-unified-basic.ptl +++ b/glyphs/letters-unified-basic.ptl @@ -798,10 +798,10 @@ export : define [apply] : begin do "W, w and related =========================================================================" define [WShape top barStraight df] : glyph-construction local fineOuter : if barStraight - adviceBlackness WShape.fineSOuter df.div + adviceBlackness WShape.fineSOuter [Math.sqrt df.div] adviceBlackness WShape.fineOuter df.div local fineInner : if barStraight - adviceBlackness WShape.fineSInner df.div + adviceBlackness WShape.fineSInner [Math.sqrt df.div] adviceBlackness WShape.fineInner df.div local fineHeight : (fineOuter + fineInner) / 2 @@ -911,7 +911,7 @@ export : define [apply] : begin define [WHooktopShape top barStraight df] : glyph-construction local fineOuter : if barStraight - adviceBlackness WShape.fineSOuter df.div + adviceBlackness WShape.fineSOuter [Math.sqrt df.div] adviceBlackness WShape.fineOuter df.div local hwCO : if barStraight diff --git a/meta/aesthetics.ptl b/meta/aesthetics.ptl index c389ffb27..d70ef7bb2 100644 --- a/meta/aesthetics.ptl +++ b/meta/aesthetics.ptl @@ -134,9 +134,16 @@ export : define [calculateMetrics para] : begin # Blackness parameters # We will estimate blackness using lower-case 'e' - define WHITENESS : ((XH - STROKE * 3) * (RIGHTSB - SB) * (1 / 3)) / (XH * (RIGHTSB - SB)) - define [adviceBlackness crowdedness div] : Math.min STROKE (((WIDTH * [fallback div 1]) - SB * 2) * (1 - WHITENESS) / (crowdedness * HVCONTRAST)) - define [adviceBlackness2 cowX cowY refH div] : Math.min [adviceBlackness cowX (refH / WIDTH)] [adviceBlackness cowY div] + define [WHITENESS div] : begin + local w : WIDTH * [fallback div 1] - SB * 2 + return : ((XH - STROKE * 3) * w * (1 / 3)) / (XH * w) + define [adviceBlackness crowdedness div mul] : begin + local gap : (WIDTH * [fallback div 1]) - SB * 2 + local shrink : (1 - [WHITENESS 1]) / (crowdedness * HVCONTRAST) + return : Math.min STROKE ([fallback mul 1] * gap * shrink) + define [adviceBlackness2 cowX cowY refH div] : Math.min + adviceBlackness cowX (refH / WIDTH) + adviceBlackness cowY div define [MVERTSTROKE_D div] : adviceBlackness [fallback para.lllcrowdedness (3 + 1 / 3)] div define MVERTSTROKE : MVERTSTROKE_D 1 define OVERLAYSTROKE : adviceBlackness 3.75 diff --git a/meta/macros.ptl b/meta/macros.ptl index 1eee4080b..825e06ba4 100644 --- a/meta/macros.ptl +++ b/meta/macros.ptl @@ -160,7 +160,7 @@ define-macro glyph-module-entry : syntax-rules TAILADJX TAILADJY LBALANCE IBALANCE LBALANCE2 IBALANCE2 JBALANCE JBALANCE2 TBALANCE TBALANCE2 RBALANCE RBALANCE2 FBALANCE ONEBALANCE FULLWIDTH FULLWIDTH0 FULLWIDTH1 FULLWIDTH2 FULLWIDTH3 OXE ESS ESSQUESTION XO CAPO HALFSTROKE RIGHTSB FWRSB MIDDLE FWMIDDLE CAPMIDDLE CAP_SMOOTH DOTRADIUS PERIODRADIUS SIDEJUT SMOOTHA SMOOTHB SMALLSMOOTHA SMALLSMOOTHB CORRECTION_OMIDX CORRECTION_OMIDS - WHITENESS adviceBlackness adviceBlackness2 MVERTSTROKE MVERTSTROKE_D OVERLAYSTROKE OPERATORSTROKE GEOMETRYSTROKE SHOULDERFINE SUPERNESS superxy + adviceBlackness adviceBlackness2 MVERTSTROKE MVERTSTROKE_D OVERLAYSTROKE OPERATORSTROKE GEOMETRYSTROKE SHOULDERFINE SUPERNESS superxy adviceSSmooth adviceGlottalStopSmooth shoulderMidSlope] metrics define [object g4 g2 corner flat curl close end straight diff --git a/support/regulate-glyph.js b/support/regulate-glyph.js index 52d5dba80..cb55f9a12 100644 --- a/support/regulate-glyph.js +++ b/support/regulate-glyph.js @@ -43,7 +43,7 @@ function regulateGlyph(g, skew) { } // De-overlap - g.contours = [...cSimple, ...caryllShapeOps.removeOverlap(cFill, 1, 256, true)]; + g.contours = [...cSimple, ...caryllShapeOps.removeOverlap(cFill, 1, 2048, true)]; // Finalize g.contours = c2q.contours(g.contours);